Compare commits

...

11 Commits

Author SHA1 Message Date
89797d5bfc fix : sku 2025-08-05 15:51:59 +08:00
ba009f4a9d fix : sku 2025-08-05 15:35:49 +08:00
ae0d0d83ac fix : statement 2025-08-04 16:50:57 +08:00
a1668b60fc fix : change admin user info 2025-08-04 15:58:15 +08:00
356b80a653 feat : env 2025-07-30 16:39:00 +08:00
b8f583bcc7 feat : env 2025-07-30 16:23:44 +08:00
2f1c7a9b28 feat : banner 2025-07-24 17:02:07 +08:00
66666f4a3a feat : spu 2025-07-24 10:36:54 +08:00
bbcc0d054f feat : spu 2025-07-24 10:34:26 +08:00
0a1610fc42 feat : sku 2025-07-24 10:09:25 +08:00
a296a30080 feat : kitchen 2025-07-24 10:00:20 +08:00
17 changed files with 109 additions and 28 deletions

View File

@@ -180,7 +180,7 @@ class GoodCache
$imageList = $this->getOssObjects(array_merge($spuImage,$imageIdArr));
$chefIds = array_column($skuList,'chef_id');
$chefList = $this->adminUserModel->getDataByIds($chefIds);
$chefList = $this->adminUserModel->getChefNameByIds($chefIds);
$skuListArr = [];
$imageArr = [];

View File

@@ -97,17 +97,17 @@ class SiteCache
/**
* @param int $siteId
* @return array|false|\Redis|null
* @return array|false|\Redis
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function getSiteInfo(int $siteId): false|array|\Redis|null
public function getSiteInfo(int $siteId): false|array|\Redis
{
$siteKey = CommonRedisKey::siteInfoKey($siteId);
if (!$this->redis->exists($siteKey,RedisCode::SYSTEM_DB)) $this->setSiteInfo($siteId);
return $this->redis->hGetAll($siteKey,RedisCode::SYSTEM_DB) ?? null;
return $this->redis->hGetAll($siteKey,RedisCode::SYSTEM_DB) ?? false;
}
/**

View File

@@ -107,6 +107,32 @@ class AdminUser extends Model
return $res;
}
/**
* @param array $ids
* @return array
*/
public function getChefNameByIds(array $ids): array
{
$data = $this
->join('chef', function ($join) use ($ids) {
$join->on('chef.user_id', '=', 'admin_user.id')
->whereIn('chef.id', $ids)
->where('is_del',UserCode::IS_NO_DEL)
->select([
'admin_user.chinese_name',
'chef.id',
'admin_user.username',
]);
})
->get();
if ($data->isEmpty()) return [];
$data = $data->toArray();
return array_column($data,null,'id');
}
/**
* @param array $ids
* @return array

View File

@@ -96,7 +96,7 @@ class Sku extends Model
->where('saleable',GoodCode::LISTING)
// ->where('is_add_staple_food',GoodCode::IS_NOT_ADD_STAPLE_FOOD)
->orderBy('sort')
->select(['id','spu_id','title','image_ids','price','param','extra','total_stock','surplus_stock','order_num','is_add_staple_food','occupied','chef_id','origin_sku_id'])
->select(['id','spu_id','title','image_ids','price','param','extra','total_stock','surplus_stock','order_num','is_add_staple_food','occupied','chef_id','origin_sku_id','sub_title'])
->get();
}

View File

@@ -261,7 +261,7 @@ class SkuService extends BaseService
$spuInfo = $this->spuModel->getInfoById($skuInfo->spu_id);
if (empty($spuInfo)) throw new ErrException('数据出错');
$purchaseInfo = $this->purchaseModel->getListByCycleIdAndKitchenId($skuInfo->cycle_id,$spuInfo->kitchen_id);
$purchaseInfo = $this->purchaseModel->getListByCycleIdAndKitchenId($spuInfo->cycle_id,$spuInfo->kitchen_id);
$purchaseIds = [];
if (!empty($purchaseInfo)) {
foreach ($purchaseInfo->toArray() as $one) {

View File

@@ -88,6 +88,7 @@ class SpuService extends BaseService
if (empty($list['data'])) return $this->return->success('success', ['list' => $list]);
$spuIds = array_column($list['data'], 'id');
$spuImageIds = array_column($list['data'], 'image_id');
$skuList = $this->skuModel
->whereIn('spu_id',$spuIds)
@@ -99,7 +100,7 @@ class SpuService extends BaseService
$imageIdArr = array_column($skuList,'image_ids');
$imageIds = array_unique(explode(',',implode(',',$imageIdArr)));
$imageList = $this->getOssObjects($imageIds);
$imageList = $this->getOssObjects(array_merge($imageIds,$spuImageIds));
$skuListArr = [];
foreach ($skuList as $sku) {
@@ -126,6 +127,7 @@ class SpuService extends BaseService
foreach ($list['data'] as &$item) {
$item['sku_list'] = $skuListArr[$item['id']] ?? [];
$item['image_url'] = $imageList[$item['image_id']] ?? '';
}
return $this->return->success('success', ['list' => $list]);
@@ -323,6 +325,7 @@ class SpuService extends BaseService
$info['city_name'] = $this->systemCityModel->getCityNameById((int)$info['city_id']);
$info['kitchen_name'] = $this->kitchenModel->getNameById((int)$info['kitchen_id']);
// $info['chef_name'] = $this->chefModel->getChineseNameById((int)$info['chef_id']);
$info['image_url'] = $this->getOssObjectById((int)$info['image_id']) ?? '';
$info['chef_name'] = '';
$info['category_name'] = $this->categoryModel->getNameById((int)$info['category_id']);

View File

@@ -41,7 +41,7 @@ class DriverService extends BaseService
$list = $this->siteDriverStatementModel
->when($searchCityId, function ($query) use ($searchCityId) {
$query->whereIn('city_id', $searchCityId);
$query->where('city_id', $searchCityId);
})
->when($searchDriverId, function ($query) use ($searchDriverId) {
$query->where('driver_id', $searchDriverId);

View File

@@ -41,7 +41,7 @@ class SiteService extends BaseService
$list = $this->siteDriverStatementModel
->when($searchCityId, function ($query) use ($searchCityId) {
$query->whereIn('city_id', $searchCityId);
$query->where('city_id', $searchCityId);
})
->when($searchSiteId, function ($query) use ($searchSiteId) {
$query->where('site_id', $searchSiteId);

View File

@@ -61,7 +61,7 @@ class EmployeeService extends BaseService
/**
* @var array|string[]
*/
private array $filed = ['id','username','avatar','chinese_name','mobile','status','last_login_ip','last_login_time','role_id'];
private array $filed = ['id','username','avatar','chinese_name','mobile','status','last_login_ip','last_login_time','role_id','bind_user_id'];
/**
* 列表
@@ -160,8 +160,8 @@ class EmployeeService extends BaseService
$bindUserId = (int)$this->request->input('bind_user_id', 0);
if ($bindUserId > 0) {
$oldBindUserId = $this->adminUserModel->getAdminInfoByBindUserId($bindUserId);
if (!empty($oldBindUserId) && $info->bind_user_id != $oldBindUserId) throw new ErrException('绑定用户已存在');
$oldInfo = $this->adminUserModel->getAdminInfoByBindUserId($bindUserId);
if (!empty($oldBindUserId) && $info->bind_user_id != $oldInfo->bind_user_id) throw new ErrException('绑定用户已存在');
}

View File

@@ -20,6 +20,7 @@ use App\Constants\ConfigCode;
use App\Exception\ErrException;
use App\Model\Category;
use App\Service\Api\BaseService;
use App\Service\ServiceTrait\Api\BannerTrait;
use App\Service\ServiceTrait\Common\CycleTrait;
use App\Service\ServiceTrait\Common\OssTrait;
use Hyperf\Di\Annotation\Inject;
@@ -30,6 +31,7 @@ use function Hyperf\Config\config;
class OptionalListService extends BaseService
{
use CycleTrait;
use BannerTrait;
/**
* @var GoodCache
@@ -55,6 +57,12 @@ class OptionalListService extends BaseService
#[Inject]
protected Category $categoryModel;
/**
* 默认地址
* @var array|false
*/
private array|false $siteInfo = [];
/**
* @return array
* @throws ContainerExceptionInterface
@@ -67,19 +75,20 @@ class OptionalListService extends BaseService
if (empty($cycleId)) return $this->return->success('success', ['list' => []]);
$this->goodCache->cycleId = (int)$cycleId;
if (!empty($this->request->input('site_id'))){
$siteInfo = $this->siteCache->getSiteInfo((int)$this->request->input('site_id'));
}
if (empty($siteInfo) || empty($siteInfo['kitchen_id'])) $siteInfo['kitchen_id'] = config('system.kitchen_id');
$this->goodCache->kitchenId = (int)$siteInfo['kitchen_id'];
if (!empty($this->request->input('site_id'))){
$this->siteInfo = $this->siteCache->getSiteInfo((int)$this->request->input('site_id'));
}
if (empty($this->siteInfo) || empty($this->siteInfo['kitchen_id'])) $this->siteInfo['kitchen_id'] = config('system.default_kitchen_id');
$this->goodCache->kitchenId = (int)$this->siteInfo['kitchen_id'];
$data = $this->goodCache->getOptionalGoodList();
if (empty($data)) return $this->return->success('success', ['list' => []]);
$res = $this->buildData($data);
return $this->return->success('success', ['list' => $res]);
return $this->return->success('success', ['list' => $res,'banner' => $this->getBanner((int)$this->request->input('city_id',config('system.default_city_id')))]);
}
use OssTrait;

View File

@@ -34,7 +34,7 @@ class IndexService extends BaseService
$avatar = $this->getOssObjectById($userInfo->avatar_id);
$res = [
'banner' => $this->getBanner(),
// 'banner' => $this->getBanner(),
'nickname' => $userInfo->nickname,
'avatar' => $avatar,
'point' => 0,

View File

@@ -0,0 +1,41 @@
<?php
namespace App\Service\ServiceTrait\Api;
use App\Constants\Common\BannerCode;
use App\Model\Banner;
use App\Service\ServiceTrait\Common\OssTrait;
use Hyperf\Di\Annotation\Inject;
trait BannerTrait
{
use OssTrait;
/**
* @var Banner
*/
#[Inject]
protected Banner $bannerModel;
/**
* @return array
*/
private function getBanner(int $cityId): array
{
$res = $this->bannerModel
->where('city_id',$cityId)
->where('status',BannerCode::DISPLAYED)
->orderBy('sort')
->get();
if ($res->isEmpty()) return [];
$res = $res->toArray();
$imageList = $this->getOssObjects(array_column($res, 'image_id'));
foreach ($res as &$v) {
$v['url'] = $imageList[$v['image_id']]['url'] ?? '';
}
return $res;
}
}

View File

@@ -30,5 +30,7 @@ return [
// upload_dir
'upload_dir' => BASE_PATH.'/uploads/',
// 默认的厨房 id
'default_kitchen_id' => env('DEFAULT_KITCHEN_ID',''),
'default_kitchen_id' => env('DEFAULT_KITCHEN_ID',1),
// 默认 城市 id
'default_city_id' => env('DEFAULT_CITY_ID',3),
];

View File

@@ -60,5 +60,5 @@ WX_PAYMENT_MCH_SECRET_KEY=075cf77f5b57cc84ba59e9df3b86eda1
WX_PAYMENT_MCH_SECRET_CERT=__DIR__/config/pay/wx/apiclient_key.pem
WX_PAYMENT_MCH_PUBLIC_CERT_PATH=__DIR__/config/pay/wx/apiclient_cert.pem
WX_PAYMENT_MINI_APP_ID=wx444b711b6101f25b
WX_PAYMENT_SUB_MINI_APP_ID=wxc2bc0e47e212d831
WX_PAYMENT_SUB_MCH_ID=1656142874
WX_PAYMENT_SUB_MINI_APP_ID=wxc0edbbd0ff0fe7ed
WX_PAYMENT_SUB_MCH_ID=1723727305

View File

@@ -55,5 +55,5 @@ WX_PAYMENT_MCH_SECRET_KEY=075cf77f5b57cc84ba59e9df3b86eda1
WX_PAYMENT_MCH_SECRET_CERT=__DIR__/config/pay/wx/apiclient_key.pem
WX_PAYMENT_MCH_PUBLIC_CERT_PATH=__DIR__/config/pay/wx/apiclient_cert.pem
WX_PAYMENT_MINI_APP_ID=wx444b711b6101f25b
WX_PAYMENT_SUB_MINI_APP_ID=wxc2bc0e47e212d831
WX_PAYMENT_SUB_MCH_ID=1656142874
WX_PAYMENT_SUB_MINI_APP_ID=wxc0edbbd0ff0fe7ed
WX_PAYMENT_SUB_MCH_ID=1723727305

View File

@@ -58,5 +58,5 @@ WX_PAYMENT_MCH_SECRET_KEY=075cf77f5b57cc84ba59e9df3b86eda1
WX_PAYMENT_MCH_SECRET_CERT=__DIR__/config/pay/wx/apiclient_key.pem
WX_PAYMENT_MCH_PUBLIC_CERT_PATH=__DIR__/config/pay/wx/apiclient_cert.pem
WX_PAYMENT_MINI_APP_ID=wx444b711b6101f25b
WX_PAYMENT_SUB_MINI_APP_ID=wxc2bc0e47e212d831
WX_PAYMENT_SUB_MCH_ID=1656142874
WX_PAYMENT_SUB_MINI_APP_ID=wxc0edbbd0ff0fe7ed
WX_PAYMENT_SUB_MCH_ID=1723727305

View File

@@ -58,5 +58,5 @@ WX_PAYMENT_MCH_SECRET_KEY=075cf77f5b57cc84ba59e9df3b86eda1
WX_PAYMENT_MCH_SECRET_CERT=__DIR__/config/pay/wx/apiclient_key.pem
WX_PAYMENT_MCH_PUBLIC_CERT_PATH=__DIR__/config/pay/wx/apiclient_cert.pem
WX_PAYMENT_MINI_APP_ID=wx444b711b6101f25b
WX_PAYMENT_SUB_MINI_APP_ID=wxc2bc0e47e212d831
WX_PAYMENT_SUB_MCH_ID=1656142874
WX_PAYMENT_SUB_MINI_APP_ID=wxc0edbbd0ff0fe7ed
WX_PAYMENT_SUB_MCH_ID=1723727305