cxgj/modules/api/controllers/mall/integral/GoodsController.php
2023-12-04 15:49:39 +08:00

300 lines
15 KiB
PHP

<?php
/**
* @author Any
* @description KISS
* @date 2021年10月12日
* @version 1.0.0
*
* _____LOG_____
*
*/
namespace app\modules\api\controllers\mall\integral;
use app\components\SiteHelper;
use app\models\Cat;
use app\models\Cat1;
use app\models\Cat2;
use app\models\Cat3;
use app\models\Cat4;
use app\models\UserCollect;
use app\modules\api\behaviors\LoginBehavior;
use app\models\common\integral\mall\CommonIntegralMallActionForm;
use app\models\common\integral\mall\CommonIntegralMallGoodsListForm;
use app\models\Goods;
use app\modules\api\controllers\Controller;
use app\components\SysConst;
class GoodsController extends Controller
{
public function behaviors()
{
return array_merge(parent::behaviors(), [
'login' => [
'class' => LoginBehavior::className(),
'ignore' => [
'api/mall/integral/goods/index',
'api/mall/integral/goods/index-one',
'api/mall/integral/goods/index-cat',
'api/mall/integral/goods/tree',
'api/mall/integral/goods/detail',
]
]
]);
}
/**
* hidedoc
* @catalog 冠军列表
* @title 冠军列表
* @description 本接口提供冠军列表
* @method get
* @url /api/mall/integral/goods/index
* @param keywords 非必选 string 关键词(冠军姓名)
* @param goods_id 非必选 string 冠军详情搜索
* @param page 必选 int 页码
* @param limit 非必选 int 每页记录数
* @return {"code":0,"msg":"ok","data":[{"id":"2","price":"111.00","date":"2023-11-27","sort":"100","subtitle":"111","created_at":"1701077489","name":"李四","cover_pic":"http://cxgj.com/upload/0/1/upload/image/2023/1127/1701077471438838.jpg","video_url":"","pic_urls":"[\"/upload/0/1/upload/image/2023/1127/1701077483860358.jpg\",\"/upload/0/1/upload/image/2023/1127/1701077486913290.jpg\",\"/upload/0/1/upload/image/2023/1127/1701077502452397.jpg\"]","created_at_cn":"2023-11-27 17:31:29","pic_arr":["http://cxgj.com/upload/0/1/upload/image/2023/1127/1701077483860358.jpg","http://cxgj.com/upload/0/1/upload/image/2023/1127/1701077486913290.jpg","http://cxgj.com/upload/0/1/upload/image/2023/1127/1701077502452397.jpg"]}],"count":"1","page_size":20,"page_count":1,"page_no":1,"end_flag":false}
* @return_param id int 冠军ID
* @return_param price string 签约价格
* @return_param date int 出生日期
* @return_param subtitle int 代表奖项
* @return_param name string 冠军姓名
* @return_param cover_pic string 封面图
* @return_param video_url string 视频
* @return_param pic_arr string 详情图
* @remark
*/
public function actionIndex()
{
$form = new CommonIntegralMallGoodsListForm();
$form->attributes = \Yii::$app->request->get();
$form->cx_mch_id = $this->cx_mch_id;
$form->status = Goods::STATUS_ONLINE;
$form->plugin_sign = SysConst::$cxPluginSceneIntegralMall;
$form->setFields('g.id,g.price,g.date,g.sort,gh.subtitle,gh.banner_urls,g.created_at,gh.name,gh.cover_pic,gh.video_url,gh.pic_urls');
$data = $form->search();
foreach ($data['data'] as $key => $value) {
$data['data'][$key]['date'] = date('Y-m-d', $value['date']);
// $data['data'][$key]['video_url'] = SiteHelper::getFullUrl($value['video_url']);
$data['data'][$key]['pic_arr'] = [];
if ($value['pic_urls'] != null) {
$pic_arr = json_decode($value['pic_urls'], true);
if (is_array($pic_arr)) {
foreach ($pic_arr as $index => $item) {
// $item = SiteHelper::getFullUrl($item);
$pic_arr[$index] = $item;
}
$data['data'][$key]['pic_arr'] = $pic_arr;
}
}
$data['data'][$key]['video_arr'] = [];
if ($value['video_url'] != null) {
$video_arr = json_decode($value['video_url'], true);
$video_banner_urls = json_decode($value['video_banner_urls'], true);
$video = [];
foreach ($video_arr as $key1 => $value1) {
$video[$key1]['img'] = $video_banner_urls[$key1] ?? '';
$video[$key1]['video_url'] = $value1 ?? '';
}
$data['data'][$key]['video_arr'] = $video;
}
}
return $this->responseHandler($data);
}
/**
* hidedoc
* @catalog 冠军列表
* @title 冠军列表
* @description 本接口提供冠军列表
* @method get
* @url /api/mall/integral/goods/index-one
* @param keywords 非必选 string 关键词(冠军姓名)
* @param goods_id 非必选 string 冠军详情搜索
* @param page 必选 int 页码
* @param limit 非必选 int 每页记录数
* @return {"code":0,"msg":"ok","data":[{"id":"2","price":"111.00","date":"2023-11-27","sort":"100","subtitle":"111","created_at":"1701077489","name":"李四","cover_pic":"http://cxgj.com/upload/0/1/upload/image/2023/1127/1701077471438838.jpg","video_url":"","pic_urls":"[\"/upload/0/1/upload/image/2023/1127/1701077483860358.jpg\",\"/upload/0/1/upload/image/2023/1127/1701077486913290.jpg\",\"/upload/0/1/upload/image/2023/1127/1701077502452397.jpg\"]","created_at_cn":"2023-11-27 17:31:29","pic_arr":["http://cxgj.com/upload/0/1/upload/image/2023/1127/1701077483860358.jpg","http://cxgj.com/upload/0/1/upload/image/2023/1127/1701077486913290.jpg","http://cxgj.com/upload/0/1/upload/image/2023/1127/1701077502452397.jpg"]}],"count":"1","page_size":20,"page_count":1,"page_no":1,"end_flag":false}
* @return_param id int 冠军ID
* @return_param price string 签约价格
* @return_param date int 出生日期
* @return_param subtitle int 代表奖项
* @return_param name string 冠军姓名
* @return_param cover_pic string 封面图
* @return_param video_url string 视频
* @return_param pic_arr string 详情图
* @remark
*/
public function actionIndexOne()
{
$form = new CommonIntegralMallGoodsListForm();
$form->attributes = \Yii::$app->request->get();
$form->cx_mch_id = $this->cx_mch_id;
$form->status = Goods::STATUS_ONLINE;
$form->plugin_sign = SysConst::$cxPluginSceneIntegralMall;
$form->setFields('g.id,g.price,g.date,g.sort,gh.subtitle,gh.banner_urls,g.created_at,gh.name,gh.cover_pic,gh.video_url,gh.pic_urls,gh.video_banner_urls');
$data = $form->search();
foreach ($data['data'] as $key => $value) {
$data['data'][$key]['date'] = date('Y-m-d', $value['date']);
$data['data'][$key]['pic_arr'] = [];
if ($value['pic_urls'] != null) {
$pic_arr = json_decode($value['pic_urls'], true);
if (is_array($pic_arr)) {
foreach ($pic_arr as $index => $item) {
// $item = SiteHelper::getFullUrl($item);
$pic_arr[$index] = $item;
}
$data['data'][$key]['pic_arr'] = $pic_arr;
}
}
$data['data'][$key]['video_arr'] = [];
if ($value['video_url'] != null) {
$video_arr = json_decode($value['video_url'], true);
$video_banner_urls = json_decode($value['video_banner_urls'], true);
$video = [];
foreach ($video_arr as $key1 => $value1) {
$video[$key1]['img'] = $video_banner_urls[$key1] ?? '';
$video[$key1]['video_url'] = $value1 ?? '';
}
$data['data'][$key]['video_arr'] = $video;
}
}
$goods_id = \Yii::$app->request->get('goods_id');
$user_id = \Yii::$app->user->identity->id;
$collet_status = UserCollect::findOne(['user_id' => $user_id, 'goods_id' => $goods_id]);
$data['data'][0]['collect_status'] = $collet_status == null ? 1 : 2;
return $this->responseHandler($data);
}
/**
* hidedoc
* @catalog 冠军列表分类
* @title 冠军列表分类
* @description 本接口提供冠军列表分类
* @method get
* @url /api/mall/integral/goods/index-cat
* @return {"code":0,"msg":"ok","data":[{"id":"2","price":"111.00","date":"2023-11-27","sort":"100","subtitle":"111","created_at":"1701077489","name":"李四","cover_pic":"http://cxgj.com/upload/0/1/upload/image/2023/1127/1701077471438838.jpg","video_url":"","pic_urls":"[\"/upload/0/1/upload/image/2023/1127/1701077483860358.jpg\",\"/upload/0/1/upload/image/2023/1127/1701077486913290.jpg\",\"/upload/0/1/upload/image/2023/1127/1701077502452397.jpg\"]","created_at_cn":"2023-11-27 17:31:29","pic_arr":["http://cxgj.com/upload/0/1/upload/image/2023/1127/1701077483860358.jpg","http://cxgj.com/upload/0/1/upload/image/2023/1127/1701077486913290.jpg","http://cxgj.com/upload/0/1/upload/image/2023/1127/1701077502452397.jpg"]}],"count":"1","page_size":20,"page_count":1,"page_no":1,"end_flag":false}
* @return_param id int 分类ID
* @return_param name string 分类名称
* @remark
*/
public function actionIndexCat()
{
$cat_list = Cat::find()
->where([
'cx_mch_id' => $this->cx_mch_id,
'is_delete' => 0,
'type' => Cat::TYPE_GOODS,
])
->orderBy(['sort' => SORT_ASC, 'created_at' => SORT_DESC])
->select('id,name')->asArray()->all();
$cat_list1 = Cat1::find()
->where([
'cx_mch_id' => $this->cx_mch_id,
'is_delete' => 0,
'type' => Cat::TYPE_GOODS,
])
->orderBy(['sort' => SORT_ASC, 'created_at' => SORT_DESC])
->select('id,name')->asArray()->all();
$cat_list2 = Cat2::find()
->where([
'cx_mch_id' => $this->cx_mch_id,
'is_delete' => 0,
'type' => Cat::TYPE_GOODS,
])
->orderBy(['sort' => SORT_ASC, 'created_at' => SORT_DESC])
->select('id,name')->asArray()->all();
$cat_list3 = Cat3::find()
->where([
'cx_mch_id' => $this->cx_mch_id,
'is_delete' => 0,
'type' => Cat::TYPE_GOODS,
])
->orderBy(['sort' => SORT_ASC, 'created_at' => SORT_DESC])
->select('id,name')->asArray()->all();
$cat_list4 = Cat4::find()
->where([
'cx_mch_id' => $this->cx_mch_id,
'is_delete' => 0,
'type' => Cat::TYPE_GOODS,
])
->orderBy(['sort' => SORT_ASC, 'created_at' => SORT_DESC])
->select('id,name')->asArray()->all();
$list = [
'cat' => $cat_list,
'cat1' => $cat_list1,
'cat2' => $cat_list2,
'cat3' => $cat_list3,
'cat4' => $cat_list4,
];
$data['code'] = 0;
$data['msg'] = 'ok';
$data['data'] = $list;
return $this->responseHandler($data);
}
/**
* hidedoc
* @catalog 积分商城/商品
* @title 商品分类树
* @description 本接口提供积分商品分类树
* @method get
* @url /api/mall/integral/goods/tree
* @param param 必选 param_type param_desc
* @return {"code":0,"msg":"ok","data":[{"id":"8","name":"生鲜","parent_id":"0","goods_list":[{"id":"3","price":"199.00","goods_stock":"1000","virtual_sales":"100","sort":"100","created_at":"1634089711","payment_people":"0","payment_amount":"0.00","payment_num":"0","payment_order":"0","sales":"0","viewed_count":"0","name":"好丽友蛋糕","cover_pic":"https://app.tpl.dev.1nww.com/upload/0/1/upload/image/2021/1013/1634089675876184.png","unit":"包","type":"0","integral_num":"189","created_at_cn":"2021-10-13 09:48:31"}]}]}
* @return_param count int 记录条数
* @remark
*/
public function actionTree()
{
$form = new CommonIntegralMallActionForm();
$form->attributes = \Yii::$app->request->get();
$form->cx_mch_id = $this->cx_mch_id;
$data = $form->getTree();
return $this->responseHandler($data);
}
/**
* hidedoc
* @catalog 积分商城/商品
* @title 商品详情
* @description 本接口提供积分商品详情
* @method get
* @url /api/mall/integral/goods/detail
* @param goods_id 必选 int 商品ID
* @return {"code":0,"msg":"ok","data":{"id":"3","price":"199.00","goods_stock":"1000","virtual_sales":"100","sort":"100","created_at":"1634089711","payment_people":"0","payment_amount":"0.00","payment_num":"0","payment_order":"0","sales":"0","viewed_count":"0","use_attr":"0","attr_groups":[{"attr_group_id":1,"attr_group_name":"规格","attr_list":[{"attr_id":2,"attr_name":"默认"}]}],"confine_count":"0","freight_id":"100","name":"好丽友蛋糕","subtitle":"","original_price":"199.00","cost_price":"199.00","detail":"<p>好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕好丽友蛋糕<img src=\"https://app.tpl.dev.1nww.com/upload/0/1/upload/image/2021/1013/1634089707550091.png\" title=\"1634089707550091.png\" alt=\"default_pic.png\"/></p>","cover_pic":"https://app.tpl.dev.1nww.com/upload/0/1/upload/image/2021/1013/1634089675876184.png","pic_urls":["https://app.tpl.dev.1nww.com/upload/0/1/upload/image/2021/1013/1634089678820003.png","https://app.tpl.dev.1nww.com/upload/0/1/upload/image/2021/1013/1634089681604548.png"],"video_url":"","unit":"包","type":"0","integral_num":"189","created_at_cn":"2021-10-13 09:48:31","goods_sales":0,"attr":[{"id":"42","goods_id":"3","price":"199.00","sign_id":"2","stock":"1000","serial_no":"","weight":"0","cover_pic":"","integral_num":"0"}]}}
* @return_param count int 记录条数
* @remark
*/
public function actionDetail()
{
$form = new CommonIntegralMallActionForm();
$form->scenario = 'detail';
$form->attributes = \Yii::$app->request->get();
$form->cx_mch_id = $this->cx_mch_id;
$data = $form->getGoodsdetail();
return $this->responseHandler($data);
}
}