request->get();
$id = $get['id'] ?? 0;
$num = $get['num'] ?? 1;
$info = GoodsClass::getById($id, true);
if (empty($info)) {
util::fail('没有找到商品');
}
$shop = $this->shop;
if (empty($info->sn)) {
$info = GoodsClass::generateSn($info, $shop);
}
$shopId = $this->shopId;
$ext = ShopExtClass::getByCondition(['shopId' => $shopId], true);
$printLabelSn = $ext->printLabelSn ?? '';
if (empty($printLabelSn)) {
util::fail('请设置标签打印机');
}
$p = new printUtil($printLabelSn);
$name = $info->name ?? '';
$goodsSn = $info->sn ?? '';
$price = floatval($info->price) ?? 0;
if (stringUtil::getWordNum($name) > 7) {
$content = '' . $name . '';
} else {
$content = '' . $name . '';
}
$content .= '#' . $goodsSn . '';
if ($price > 0) {
$content .= '' . $price . '元';
}
$p->times = $num;
$p->printLabelMsg($content);
util::complete();
}
//添加商品 ssh 2019.12.7
public function actionAdd()
{
$form = new \hd\models\goods\AddForm();
$form->load(Yii::$app->request->post(), '');
if (!$form->validateForm()) {
return;
}
//$data = Yii::$app->request->post();
$data = $form->attributes;
$data['sjId'] = $this->sjId;
$data['mainId'] = $this->mainId;
$data['shopId'] = $this->shopId ?? 0;
$data['property'] = 0;
$data['flower'] = 1;
$staff = $this->shopAdmin;
$data['staffName'] = $staff->name ?? '';
$connection = Yii::$app->db;
$transaction = $connection->beginTransaction();
try {
$return = GoodsClass::addGoods($data);
GoodsClass::syncUseCases($return->id, $this->mainId, $data['useCaseIdList'] ?? []);
GoodsClass::syncSpecs($return, $data);
$transaction->commit();
util::success($return);
} catch (\Exception $e) {
Yii::error('商品添加失败:' . $e->getMessage(), 'goods.add');
$transaction->rollBack();
util::fail();
}
}
//根据sn获取商品详情 ssh 20220505
public function actionGetBySn()
{
$sn = Yii::$app->request->get('sn');
$mainId = $this->mainId;
$goods = GoodsClass::getByCondition(['mainId' => $mainId, 'sn' => $sn], true);
GoodsClass::valid($goods, $this->mainId);
util::success($goods);
}
//绿植盆栽采购 ssh 20220405
public function actionCgPlant()
{
$post = Yii::$app->request->post();
$connection = Yii::$app->db;
$transaction = $connection->beginTransaction();
try {
$post['mainId'] = $this->mainId ?? 0;
$post['sjId'] = $this->sjId ?? 0;
$post['shopId'] = $this->shopId ?? 0;
$staff = $this->shopAdmin ?? [];
$staffName = $staff->name ?? '';
$post['staffName'] = $staffName;
$post['staffId'] = $staff->id ?? 0;
$respond = GoodsClass::cgPlant($post, $this->shop);
$transaction->commit();
util::success($respond);
} catch (\Exception $e) {
$transaction->rollBack();
util::fail();
}
}
//商品列表 ssh 2019.12.7
public function actionList()
{
$get = Yii::$app->request->get();
$cId = isset($get['cId']) ? intval($get['cId']) : 0;
$priceType = isset($get['priceType']) ? $get['priceType'] : null;
$shop = $this->shop;
$custom = $this->custom;
$argument = [];
if (!empty($cId)) {
$argument['catId'] = $cId;
}
if ($priceType != null && in_array($priceType, [0, 1])) {
$argument['priceType'] = $priceType;
}
$argument['pageSize'] = 20;
$argument['requestType'] = 'goodsList';
$data = GoodsCategoryClass::getGoodsList($argument, $shop, $custom);
util::success($data);
}
public function actionGetGoodsInfoList()
{
$get = Yii::$app->request->get();
$cId = $get['cId'] ?? 0;
$flowerNum = $get['flowerNum'] ?? 0;
if (empty($cId)) {
util::fail('分类不能为空');
}
$where = ['cId' => $cId];
$params = [];
if (!empty($flowerNum)) {
$params['flowerNum'] = $flowerNum;
}
$data = GoodsClass::getGoodsData($where, $params);
util::success($data);
}
//获取商品详情 ssh 2019.12.7
public function actionDetail()
{
$id = intval(Yii::$app->request->get('id'));
$shop = $this->shop;
$custom = $this->custom;
//只取原价
$params = ['getOriginalPrice' => 1];
$goods = GoodsClass::getGoodsInfo($id, $shop, $custom, $params);
GoodsClass::valid($goods, $this->mainId);
$goods = GoodsClass::appendUseCasesAndSpecs($goods, $this->mainId);
util::success($goods);
}
// 花束海报(散客扫码进 mall 小程序下单)ssh 20260602
public function actionGetPoster()
{
$get = Yii::$app->request->get();
$id = $get['id'] ?? 0;
$goods = GoodsClass::getById($id, true);
if (empty($goods)) {
util::fail('获取失败');
}
GoodsClass::valid($goods, $this->mainId);
$rawCover = $goods->cover ?? '';
$shopImg = $goods->shopImg ?? '';
if ($rawCover === '' && ($shopImg === '' || $shopImg === '[]')) {
util::fail('请先上传花束封面');
}
$cover = GoodsClass::getPosterCoverPath($goods);
$merchant = WxOpenClass::getMallWxInfo();
$page = 'pages/goods/detail';
$ptStyle = dict::getDict('ptStyle', 'mall');
$shop = $this->shop;
$shopId = $shop->id ?? 0;
$scene = 'id=' . $id . '&a=' . $shopId;
$envVersion = miniUtil::normalizeMiniEnvVersion(Yii::$app->request->get('env_version', 'release'));
$miniCode = miniUtil::generateUnlimitedMiniCode($merchant, $page, $scene, $ptStyle, $envVersion);
Yii::$app->params['ptStyle'] = dict::getDict('ptStyle', 'hd');
$prefix = imgUtil::getPrefix();
$goodsInfo = GoodsClass::getGoodsInfo($id, $shop, $this->custom, []);
$priceType = $goodsInfo['priceType'] ?? 0;
if ($priceType == 1) {
$priceText = '¥' . floatval($goodsInfo['price'] ?? 0);
} else {
$priceText = '请咨询';
}
$staff = $this->shopAdmin;
$staffName = $staff->name ?? '';
$staffText = $staffName . ' 为您推荐';
$url = PosterUtil::buildMallGoodsPosterUrl($prefix, PosterUtil::withShopAndRemark([
'cover' => $cover,
'miniCode' => $miniCode,
'priceText' => $priceText,
'name' => $goods->name ?? '',
'staffText' => $staffText,
'mainId' => $this->mainId,
], $this->shop, $this->sj ?? null, ''));
util::success(['imgUrl' => $url]);
}
//更新商品 ssh 2019.12.7
public function actionUpdate()
{
$form = new \hd\models\goods\UpdateForm();
$form->load(Yii::$app->request->post(), '');
if (!$form->validateForm()) {
return;
}
$data = $form->attributes;
$id = $data['id'];
$info = GoodsClass::getById($id);
if (empty($info)) {
util::fail('没有找到商品');
}
if ($info['mainId'] != $this->mainId) {
util::fail('不是你的商品');
}
$data['sjId'] = $this->sjId;
$data['mainId'] = $this->mainId;
$data['shopId'] = $this->shopId ?? 0;
$data['flower'] = $info['flower'] ?? 0;
if (!empty($info['spu'])) {
//util::fail('美团商品暂时不能修改');
}
$connection = Yii::$app->db;
$transaction = $connection->beginTransaction();
try {
$staff = $this->shopAdmin;
GoodsClass::updateGoods($info, $data, $staff);
GoodsClass::syncUseCases($id, $this->mainId, $data['useCaseIdList'] ?? []);
GoodsClass::syncSpecs($info, $data);
$transaction->commit();
util::complete();
} catch (\Exception $e) {
// 记录错误日志
Yii::error('商品更新失败:' . $e->getMessage(), 'goods.update'); //. "\n" . $e->getTraceAsString()
$transaction->rollBack();
util::fail();
}
}
//商品排序
public function actionSort()
{
$post = Yii::$app->request->post();
$items = $post['items'];
$cId = intval($post['cId']);
//验证商品
// 提取所有商品ID
$categoryIds = array_map(function ($item) {
return intval($item['id']);
}, $items);
// 批量获取商品信息
$goodsInfos = GoodsClass::getByIds($categoryIds);
// 批量验证商品
foreach ($goodsInfos as $info) {
GoodsService::valid($info, $this->mainId);
}
$category = CategoryService::getById($cId);
CategoryService::valid($category, $this->mainId);
// 更新商品排序
foreach ($items as $item) {
$id = intval($item['id']);
$inTurn = intval($item['inTurn']);
GoodsCategoryClass::updateByCondition(['cId' => $cId, 'gId' => $id], ['inTurn' => $inTurn]);
}
util::complete('排序完成');
}
//删除商品 ssh 2019.12.7
public function actionDelete()
{
$id = Yii::$app->request->get('id', 0);
$goods = GoodsService::getById($id);
GoodsService::valid($goods, $this->mainId);
GoodsService::deleteGoods($goods);
util::complete();
}
//上下架 ssh 2019.12.8
public function actionChangeStatus()
{
$get = Yii::$app->request->get();
$id = isset($get['id']) ? $get['id'] : 0;
$status = isset($get['status']) ? $get['status'] : 1;
$info = GoodsService::getById($id);
GoodsService::valid($info, $this->mainId);
GoodsService::changeStatus($id, $status);
util::complete();
}
//商品说明 ssh 2019.12.8
public function actionIntroduce()
{
$set = GoodsSettingService::getByCondition(['mainId' => $this->mainId]);
$introduce = $set['goodsIntroduce'];
util::success(['introduce' => $introduce]);
}
//修改商品说明 ssh 2019.12.8
public function actionUpdateIntroduce()
{
$introduce = Yii::$app->request->post('introduce', '');
GoodsSettingService::updateByCondition(['mainId' => $this->mainId], ['goodsIntroduce' => $introduce]);
util::complete('提交成功');
}
//获取商品描述
public function actionDesc()
{
$goodsId = Yii::$app->request->get('id', 0);
$picText = PicTextGoodsClass::getByCondition(['mainId' => $this->mainId, 'goodsId' => $goodsId, 'delStatus' => 0], true);
if (empty($picText)) {
// 适配前端的返回处理 -- 本来要使用 util::fail()
util::success('not_exist');
}
if ($picText->mainId != $this->mainId) {
util::fail('没有找到描述');
}
util::success($picText);
}
//创建商品描述(商品介绍)
public function actionCreateDesc()
{
$form = new \hd\models\goods\CreateDescForm();
$form->load(Yii::$app->request->post(), '');
if (!$form->validateForm()) {
return;
}
$data = $form->attributes;
$exists = PicTextGoodsClass::exists(['goodsId' => $data['goodsId'], 'delStatus' => 0]);
if ($exists) {
util::fail('该商品已存在图文内容,请勿重复添加');
}
$data['mainId'] = $this->mainId;
$result = PicTextGoodsClass::add($data);
if ($result) {
util::success($result);
}
util::fail('创建失败');
}
//更新商品描述(商品介绍)
public function actionUpdateDesc()
{
$form = new \hd\models\goods\CreateDescForm();
$form->load(Yii::$app->request->post(), '');
if (!$form->validateForm()) {
return;
}
$data = $form->attributes;
$id = $data['id'];
$info = PicTextGoodsClass::getById($id, false, 'id');
if (empty($info)) {
util::fail('描述不存在');
}
$data['mainId'] = $this->mainId;
$result = PicTextGoodsClass::updateById($id, $data);
if ($result) {
util::success($result);
}
util::fail('更新失败');
}
//设置 ssh 2019.12.8
public function actionSetting()
{
$return = GoodsSettingService::getSetting($this->mainId);
util::success($return);
}
//更新涨价 ssh 2019.12.9
public function actionUpdateRise()
{
$form = new \hd\models\goods\UpdateRiseForm();
$form->load(Yii::$app->request->post(), '');
if (!$form->validateForm()) {
return;
}
$post = $form->attributes;
$festIdList = isset($post['festIdList']) && !empty($post['festIdList']) ? $post['festIdList'] : [];
unset($post['festIdList']);
$post['riseSwitch'] = (int)$post['riseSwitch'];
$post['riseType'] = (int)$post['riseType'];
$post['riseAmount'] = $post['riseSwitch'] == 1 ? (float)$post['riseAmount'] : 0;
// $riseSwitch = isset($post['riseSwitch']) && is_numeric($post['riseSwitch']) ? $post['riseSwitch'] : 1;
// if ($riseSwitch == 1) {
// if (empty($festIdList)) {
// util::fail('请选择节日');
// }
// FestRiseService::deleteByCondition(['mainId' => $this->mainId]);
// $add = [];
// foreach ($festIdList as $festId) {
// $add[] = ['mainId' => $this->mainId, 'festId' => $festId];
// }
// FestRiseService::batchAdd($add);
// }
GoodsSettingClass::updateByCondition(['mainId' => $this->mainId], $post);
util::complete('提交成功');
}
//获取商品详情 ssh 2019.12.3
public function actionMallDetail()
{
$id = Yii::$app->request->get('id', 0);
$goods = GoodsClass::getGoodsInfo($id);
GoodsService::valid($goods, $this->mainId);
// 取商家商品统一配置表中的商品说明
$setting = GoodsSettingService::getByCondition(['mainId' => $this->mainId]);
$commonIntro = isset($setting['goodsIntroduce']) ? $setting['goodsIntroduce'] : '';
$goods['commonIntro'] = $commonIntro;
util::success($goods);
}
public function actionIndex()
{
$catWhere = ['mainId' => $this->mainId];
$goodsWhere['mainId'] = $this->mainId;
$goodsWhere['delStatus'] = 0;
$classIds = CategoryService::getCategoryClassAll($catWhere);
$goodsData = GoodsCategoryService::getGoodsAll($goodsWhere);
$goodsCateData = GoodsCategoryService::getEnableGoodsCategory($this->mainId);
//组装数据 [{classId:'','className:'',child:[{itemInfoData}]}]
$data = GoodsCategoryService::assembleData($classIds, $goodsCateData, $goodsData);
util::success($data);
}
//保存花材组合 ssh 2021.4.10
public function actionSaveItemGroup()
{
$orderSn = Yii::$app->request->post('orderSn', '');
$name = Yii::$app->request->post('name', '');
$classId = Yii::$app->request->post('categoryId', 0);
if (empty($name)) {
util::fail("名称不能为空");
}
$cateExists = CategoryService::exists(['id' => $classId, 'mainId' => $this->mainId]);
if (!$cateExists) {
util::fail("分类不存在");
}
$itemInfo = OrderItemclass::getAllByCondition(['orderSn' => $orderSn], null, "*");
if (empty($itemInfo)) {
util::fail("订单不存在");
}
$order = OrderService::getOrderBySn($orderSn);
OrderService::valid($order, $this->shopId);
$save = GoodsService::saveItemGroup($order, $itemInfo, $classId, $name, $this->adminId);
if ($save) {
util::complete();
}
util::fail("保存失败");
}
//创建编号 ssh 20251110
public function actionCreateSn()
{
$get = Yii::$app->request->get();
$id = $get['id'] ?? 0;
$info = GoodsClass::getById($id, true);
if (empty($info)) {
util::fail('没有找到商品');
}
if ($info->mainId != $this->mainId) {
util::fail('不是你的商品');
}
$shop = $this->shop;
GoodsClass::generateSn($info, $shop);
util::complete('创建成功');
}
}