1
This commit is contained in:
parent
983f4d8909
commit
408825ad95
@ -78,18 +78,18 @@ class UserPatientController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加购物车药品数据
|
* 修改购物车药品数据
|
||||||
* @return ResponseInterface
|
* @return ResponseInterface
|
||||||
* @throws ContainerExceptionInterface
|
* @throws ContainerExceptionInterface
|
||||||
* @throws NotFoundExceptionInterface
|
* @throws NotFoundExceptionInterface
|
||||||
*/
|
*/
|
||||||
public function addShoppingCart(): ResponseInterface
|
public function putShoppingCart(): ResponseInterface
|
||||||
{
|
{
|
||||||
$request = $this->container->get(UserPatientRequest::class);
|
$request = $this->container->get(UserPatientRequest::class);
|
||||||
$request->scene('addShoppingCart')->validateResolved();
|
$request->scene('putShoppingCart')->validateResolved();
|
||||||
|
|
||||||
$UserPatientService = new UserPatientService();
|
$UserPatientService = new UserPatientService();
|
||||||
$data = $UserPatientService->addShoppingCart();
|
$data = $UserPatientService->putShoppingCart();
|
||||||
return $this->response->json($data);
|
return $this->response->json($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -13,8 +13,9 @@ class UserPatientRequest extends FormRequest
|
|||||||
'getPatientCouponlist' => [ // 获取患者优惠卷列表
|
'getPatientCouponlist' => [ // 获取患者优惠卷列表
|
||||||
'user_coupon_status',
|
'user_coupon_status',
|
||||||
],
|
],
|
||||||
'addShoppingCart' => [ // 添加购物车药品数据
|
'putShoppingCart' => [ // 修改购物车药品数据
|
||||||
'product_id',
|
'product_id',
|
||||||
|
'shopping_cart_num',
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -32,8 +33,9 @@ class UserPatientRequest extends FormRequest
|
|||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'user_coupon_status' => 'required|integer|min:0|max:2',
|
'user_coupon_status' => 'required|numeric|min:0|max:2',
|
||||||
'product_id' => 'required',
|
'product_id' => 'required',
|
||||||
|
'shopping_cart_num' => 'required|numeric|min:0|max:999',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,10 +46,15 @@ class UserPatientRequest extends FormRequest
|
|||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'user_coupon_status.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
'user_coupon_status.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
'user_coupon_status.integer' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
'user_coupon_status.numeric' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
'user_coupon_status.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
'user_coupon_status.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
'user_coupon_status.max' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
'user_coupon_status.max' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
'product_id.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
'product_id.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
|
||||||
|
'shopping_cart_num.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'shopping_cart_num.numeric' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'shopping_cart_num.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'shopping_cart_num.max' => "请勿超出最大添加数量",
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,6 +12,7 @@ use App\Model\Hospital;
|
|||||||
use App\Model\HospitalDepartmentCustom;
|
use App\Model\HospitalDepartmentCustom;
|
||||||
use App\Model\OperationManual;
|
use App\Model\OperationManual;
|
||||||
use App\Model\Product;
|
use App\Model\Product;
|
||||||
|
use Hyperf\Redis\Redis;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 基础数据服务类
|
* 基础数据服务类
|
||||||
@ -210,6 +211,8 @@ class BasicDataService extends BaseService
|
|||||||
*/
|
*/
|
||||||
public function getProductSearch(): array
|
public function getProductSearch(): array
|
||||||
{
|
{
|
||||||
|
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||||||
|
|
||||||
$product_keyword = $this->request->input('product_keyword');
|
$product_keyword = $this->request->input('product_keyword');
|
||||||
|
|
||||||
$fields = [
|
$fields = [
|
||||||
@ -234,6 +237,15 @@ class BasicDataService extends BaseService
|
|||||||
return success();
|
return success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取购物车缓存数据
|
||||||
|
$redis = $this->container->get(Redis::class);
|
||||||
|
|
||||||
|
$redis_key = "shopping_cart" . $user_info['client_user_id'];
|
||||||
|
$shopping_cart = $redis->get($redis_key);
|
||||||
|
if (!empty($shopping_cart)){
|
||||||
|
$shopping_cart = json_decode($shopping_cart,true);
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($product as &$item) {
|
foreach ($product as &$item) {
|
||||||
$item['product_cover_img'] = addAliyunOssWebsite($item['product_cover_img']);
|
$item['product_cover_img'] = addAliyunOssWebsite($item['product_cover_img']);
|
||||||
|
|
||||||
@ -244,6 +256,16 @@ class BasicDataService extends BaseService
|
|||||||
}
|
}
|
||||||
|
|
||||||
unset($item['ProductPlatformAmount']);
|
unset($item['ProductPlatformAmount']);
|
||||||
|
|
||||||
|
// 处理购物车商品数据
|
||||||
|
$item['shopping_cart_num'] = 0;
|
||||||
|
if (!empty($shopping_cart)){
|
||||||
|
foreach ($shopping_cart as $value){
|
||||||
|
if ($item['product_id'] == $value['product_id']){
|
||||||
|
$item['shopping_cart_num'] = $value['shopping_cart_num'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return success($product->toArray());
|
return success($product->toArray());
|
||||||
|
|||||||
@ -878,6 +878,7 @@ class PatientFamilyService extends BaseService
|
|||||||
'order_inquiry_id',
|
'order_inquiry_id',
|
||||||
'order_prescription_id',
|
'order_prescription_id',
|
||||||
'family_id',
|
'family_id',
|
||||||
|
'created_at',
|
||||||
];
|
];
|
||||||
|
|
||||||
$result = OrderProduct::getProductRecordPage($params,$fields,$page,$per_page);
|
$result = OrderProduct::getProductRecordPage($params,$fields,$page,$per_page);
|
||||||
|
|||||||
@ -7,6 +7,7 @@ use App\Model\Coupon;
|
|||||||
use App\Model\OrderInquiry;
|
use App\Model\OrderInquiry;
|
||||||
use App\Model\PatientHistoryInquiry;
|
use App\Model\PatientHistoryInquiry;
|
||||||
use App\Model\Product;
|
use App\Model\Product;
|
||||||
|
use App\Model\ProductPlatformAmount;
|
||||||
use App\Model\User;
|
use App\Model\User;
|
||||||
use App\Model\UserCoupon;
|
use App\Model\UserCoupon;
|
||||||
use App\Model\UserPatient;
|
use App\Model\UserPatient;
|
||||||
@ -222,32 +223,118 @@ class UserPatientService extends BaseService
|
|||||||
|
|
||||||
$shopping_cart = json_decode($shopping_cart,true);
|
$shopping_cart = json_decode($shopping_cart,true);
|
||||||
|
|
||||||
return success($shopping_cart);
|
if (empty($shopping_cart)){
|
||||||
|
return success();
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = array();
|
||||||
|
foreach ($shopping_cart as $item){
|
||||||
|
// 获取商品数据
|
||||||
|
$params =array();
|
||||||
|
$params['product_id'] = $item['product_id'];
|
||||||
|
$product = Product::getOne($params);
|
||||||
|
if (empty($product)){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$item['product_cover_img'] = addAliyunOssWebsite($product['product_cover_img']);
|
||||||
|
$item['product_price'] = $product['product_price'];
|
||||||
|
|
||||||
|
$data[] = $item;
|
||||||
|
}
|
||||||
|
|
||||||
|
return success($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加购物车药品数据
|
* 修改购物车药品数据
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function addShoppingCart(): array
|
public function putShoppingCart(): array
|
||||||
{
|
{
|
||||||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||||||
|
$product_id = $this->request->input("product_id");
|
||||||
|
$shopping_cart_num = $this->request->input("shopping_cart_num");
|
||||||
|
|
||||||
$product_id = $this->request->route('product_id');
|
// if ($shopping_cart_num > 0){
|
||||||
|
// // 验证商品数据
|
||||||
|
// $params =array();
|
||||||
|
// $params['product_id'] = $product_id;
|
||||||
|
// $product = Product::getOne($params);
|
||||||
|
// if (empty($product)){
|
||||||
|
// return fail();
|
||||||
|
// }
|
||||||
|
// // 获取商品库存
|
||||||
|
// $params =array();
|
||||||
|
// $params['product_platform_id'] = $product['product_platform_id'];
|
||||||
|
// $product_platform_amount = ProductPlatformAmount::getOne($params);
|
||||||
|
// if ($product_platform_amount['stock'] <= 0){
|
||||||
|
// return fail(HttpEnumCode::HTTP_ERROR,"商品库存不足");
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
// $redis = $this->container->get(Redis::class);
|
// 读取缓存数据
|
||||||
|
$redis = $this->container->get(Redis::class);
|
||||||
|
$redis_key = "shopping_cart" . $user_info['client_user_id'];
|
||||||
|
|
||||||
// 验证商品数据
|
$shopping_cart = $redis->get($redis_key);
|
||||||
$params =array();
|
if (!empty($shopping_cart)){
|
||||||
$params['product_id'] = $product_id;
|
$shopping_cart = json_decode($shopping_cart,true);
|
||||||
$product = Product::getOne($params);
|
|
||||||
if (empty($product)){
|
|
||||||
return fail();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取商品库存
|
// 处理缓存数据为空的情况
|
||||||
|
if (empty($shopping_cart)){
|
||||||
|
if ($shopping_cart_num > 0){
|
||||||
|
// 处理存储数据
|
||||||
|
$data = array();
|
||||||
|
$data['product_id'] = $product_id;
|
||||||
|
$data['shopping_cart_num'] = $shopping_cart_num;
|
||||||
|
$res = $redis->set($redis_key,json_encode([$data],JSON_UNESCAPED_UNICODE));
|
||||||
|
if (!$res){
|
||||||
|
return fail(HttpEnumCode::SERVER_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return success();
|
||||||
|
}
|
||||||
|
|
||||||
|
$product_ids = array_column($shopping_cart,'product_id');
|
||||||
|
if (in_array($product_id,$product_ids)){
|
||||||
|
// 商品存在于购物车缓存中
|
||||||
|
foreach ($shopping_cart as $key => $value){
|
||||||
|
if ($value['product_id'] == $product_id){
|
||||||
|
if ($shopping_cart_num <= 0){
|
||||||
|
// 商品存在于购物车缓存中,此数据表示删除
|
||||||
|
unset($shopping_cart[$key]);
|
||||||
|
}else{
|
||||||
|
$shopping_cart[$key]['shopping_cart_num'] = $shopping_cart_num;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
// 商品未存在于购物车缓存中。
|
||||||
|
$data = array();
|
||||||
|
$data['product_id'] = $product_id;
|
||||||
|
$data['shopping_cart_num'] = $shopping_cart_num;
|
||||||
|
|
||||||
|
array_unshift($shopping_cart,$data);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($shopping_cart)){
|
||||||
|
// 重置数组排列
|
||||||
|
array_values($shopping_cart);
|
||||||
|
|
||||||
|
// 添加到缓存中
|
||||||
|
$res = $redis->set($redis_key,json_encode($shopping_cart,JSON_UNESCAPED_UNICODE));
|
||||||
|
if (!$res){
|
||||||
|
return fail(HttpEnumCode::SERVER_ERROR);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
$res = $redis->del($redis_key);
|
||||||
|
if (!$res){
|
||||||
|
return fail(HttpEnumCode::SERVER_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return success();
|
return success();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -313,9 +313,6 @@ Router::addGroup('/patient', function () {
|
|||||||
// 获取购物车药品数据
|
// 获取购物车药品数据
|
||||||
Router::get('/cart', [UserPatientController::class, 'getShoppingCart']);
|
Router::get('/cart', [UserPatientController::class, 'getShoppingCart']);
|
||||||
|
|
||||||
// 添加购物车药品数据
|
|
||||||
Router::post('/cart', [UserPatientController::class, 'addShoppingCart']);
|
|
||||||
|
|
||||||
// 修改购物车药品数据
|
// 修改购物车药品数据
|
||||||
Router::put('/cart', [UserPatientController::class, 'putShoppingCart']);
|
Router::put('/cart', [UserPatientController::class, 'putShoppingCart']);
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user