Browse Source

Merge branch 'phoenix' of http://120.24.33.109:11081/hyzjshwo/lanzu_api_hyperf into phoenix

master
Lemon 5 years ago
parent
commit
e6597e1845
  1. 4
      app/Constants/v3/ErrorCode.php
  2. 12
      app/Controller/v3/UserAddressController.php
  3. 1
      app/Service/v3/Implementations/CouponRecService.php
  4. 25
      app/Service/v3/Implementations/OrderOnlineService.php
  5. 17
      app/Service/v3/Implementations/UserAddressService.php
  6. 3
      app/Service/v3/Interfaces/UserAddressServiceInterface.php
  7. 2
      config/routes.php

4
app/Constants/v3/ErrorCode.php

@ -188,8 +188,8 @@ class ErrorCode extends AbstractConstants
const GOODS_ACTIVITY_RESTRICT_LIMIT = 1155; const GOODS_ACTIVITY_RESTRICT_LIMIT = 1155;
/** /**
* 订单中部分活动商不可使用优惠券
* @Message("活动商户不可使用优惠券")
* 订单中部分活动商不可使用优惠券
* @Message("有活动商品不可使用优惠券")
*/ */
const GOODS_ACTIVITY_CANNOT_USE_COUPON = 1156; const GOODS_ACTIVITY_CANNOT_USE_COUPON = 1156;

12
app/Controller/v3/UserAddressController.php

@ -32,8 +32,8 @@ class UserAddressController extends BaseController
public function get() public function get()
{ {
$userId = $this->request->input('user_id');
$res = $this->userAddressService->getDefault($userId);
$userAddressId = $this->request->input('$user_address_id');
$res = $this->userAddressService->get($userAddressId);
return $this->success($res); return $this->success($res);
} }
@ -50,4 +50,12 @@ class UserAddressController extends BaseController
$res = $this->userAddressService->getList($userId); $res = $this->userAddressService->getList($userId);
return $this->success($res); return $this->success($res);
} }
public function setDefault()
{
$userId = $this->request->input('user_id');
$userAddressId = $this->request->input('user_address_id');
$res = $this->userAddressService->setDefault($userId,$userAddressId);
return $this->success($res);
}
} }

1
app/Service/v3/Implementations/CouponRecService.php

@ -35,6 +35,7 @@ class CouponRecService implements CouponRecServiceInterface
* @param $marketId * @param $marketId
* @param $type * @param $type
* @param $storeTypeIds * @param $storeTypeIds
* @return array
*/ */
public function allForOrderOlAvailable($totalAmount, $userId, $marketId, $type, $storeTypeIds = []) public function allForOrderOlAvailable($totalAmount, $userId, $marketId, $type, $storeTypeIds = [])
{ {

25
app/Service/v3/Implementations/OrderOnlineService.php

@ -100,6 +100,8 @@ class OrderOnlineService implements OrderOnlineServiceInterface
$userAddr = UserAddress::query()->find($userAddrId); $userAddr = UserAddress::query()->find($userAddrId);
// 获取配送费用 // 获取配送费用
$deliveryAmount = $this->deliveryService->do($userAddr->lat, $userAddr->lng); $deliveryAmount = $this->deliveryService->do($userAddr->lat, $userAddr->lng);
// 优惠券数据
$couponRec = CouponRec::query()->lockForUpdate()->whereIn('id', $receiveCouponIds)->get()->toArray();
// 处理购物车数据,计算订单金额、子订单数据处理等 // 处理购物车数据,计算订单金额、子订单数据处理等
$totalAmount = 0; # 实付金额 $totalAmount = 0; # 实付金额
@ -127,7 +129,7 @@ class OrderOnlineService implements OrderOnlineServiceInterface
// 用户购物车数据 // 用户购物车数据
$cartIds = explode(',', $storeItem->cart_ids); $cartIds = explode(',', $storeItem->cart_ids);
$carts = ShoppingCart::query()->whereIn('id', $cartIds)->where(['market_id' => $marketId])->get();
$carts = ShoppingCart::query()->whereIn('id', $cartIds)->where(['market_id' => $marketId, 'user_id' => $userId])->get();
foreach ($carts as $k => &$cart) { foreach ($carts as $k => &$cart) {
// 查个商品 // 查个商品
@ -136,18 +138,33 @@ class OrderOnlineService implements OrderOnlineServiceInterface
$goods = Goods::query()->lockForUpdate()->find($cart->goods_id); $goods = Goods::query()->lockForUpdate()->find($cart->goods_id);
$check = $this->goodsService->check($goods->id, $cart->num); $check = $this->goodsService->check($goods->id, $cart->num);
if (true !== $check) { if (true !== $check) {
throw new ErrorCodeException($check, '[商品失效]'.$cart->goods_id);
// throw new ErrorCodeException($check, '[商品失效1]'.$cart->goods_id);
} }
} elseif ($cart->activity_type == 2) { } elseif ($cart->activity_type == 2) {
$goods = GoodsActivity::query()->lockForUpdate()->find($cart->goods_id); $goods = GoodsActivity::query()->lockForUpdate()->find($cart->goods_id);
$check = $this->goodsActivityService->check($goods->id, $cart->num, $userId); $check = $this->goodsActivityService->check($goods->id, $cart->num, $userId);
if (true !== $check) { if (true !== $check) {
throw new ErrorCodeException($check, '[商品失效]'.$cart->goods_id);
// throw new ErrorCodeException($check, '[商品失效2]'.$cart->goods_id);
} }
// 活动商品不可用优惠券
if ($goods->can_use_coupon!=1 && $receiveCouponIds) { if ($goods->can_use_coupon!=1 && $receiveCouponIds) {
throw new ErrorCodeException(ErrorCode::GOODS_ACTIVITY_CANNOT_USE_COUPON, '[商品失效]'.$cart->goods_id); throw new ErrorCodeException(ErrorCode::GOODS_ACTIVITY_CANNOT_USE_COUPON, '[商品失效]'.$cart->goods_id);
} }
// 活动商品可用优惠券,再校验这些优惠券是不是可以在当前活动类型可用
// receiveCouponIds中是不是有当前活动不可用的优惠券
$couponIds = array_values(array_column($couponRec, 'coupon_id'));
$couponsActivityAvailable = Coupon::query()
->select(['id'])
->whereJsonContains('activity_available', [(string)$goods->type])
->whereIn('id', $couponIds)
->get()->toArray();
$couponsActivityAvailableIds = array_values(array_column($couponsActivityAvailable, 'id'));
if (!empty(array_diff($couponIds, $couponsActivityAvailableIds))) {
throw new ErrorCodeException(ErrorCode::GOODS_ACTIVITY_CANNOT_USE_COUPON, '[商品失效]'.json_encode($couponsActivityAvailableIds));
}
} }
if (empty($goods)) { if (empty($goods)) {
@ -196,8 +213,6 @@ class OrderOnlineService implements OrderOnlineServiceInterface
// 优惠券的使用 // 优惠券的使用
$couponMoney = 0; $couponMoney = 0;
// 优惠券数据
$couponRec = CouponRec::query()->lockForUpdate()->whereIn('id', $receiveCouponIds)->get()->toArray();
if (!empty($couponRec)) { if (!empty($couponRec)) {
$couponsCanUse = $this->couponRecService->allForOrderOlAvailable($totalAmount, $userId, $marketId, 2, $storeTypeIds); $couponsCanUse = $this->couponRecService->allForOrderOlAvailable($totalAmount, $userId, $marketId, 2, $storeTypeIds);
$couponCanUseIds = array_column($couponsCanUse, 'id'); $couponCanUseIds = array_column($couponsCanUse, 'id');

17
app/Service/v3/Implementations/UserAddressService.php

@ -20,7 +20,7 @@ class UserAddressService implements UserAddressServiceInterface
$userAddress->lng = $lng; $userAddress->lng = $lng;
$userAddress->tel = $tel; $userAddress->tel = $tel;
$userAddress->tags = $tags; $userAddress->tags = $tags;
return $userAddress->create();
return $userAddress->firstOrCreate();
} }
public function check() public function check()
@ -34,9 +34,20 @@ class UserAddressService implements UserAddressServiceInterface
return $userAddress->delete(); return $userAddress->delete();
} }
public function getDefault($userId)
public function setDefault($userId,$userAddressId)
{ {
return UserAddress::query()->where('is_default',1)->find($userId);
UserAddress::query()->where([
['user_id','=',$userId],
['is_default','=',1],
])->decrement('is_default');
$userAddress = UserAddress::query()->find($userAddressId);
$userAddress->is_default = 1;
return $userAddress->save();
}
public function get($userAddressId)
{
return UserAddress::query()->find($userAddressId);
} }
public function getList($userId) public function getList($userId)

3
app/Service/v3/Interfaces/UserAddressServiceInterface.php

@ -9,6 +9,7 @@ interface UserAddressServiceInterface
public function do($userAddressId,$user_id,$user_name,$address,$doorplate,$gender,$lat,$lng,$tel,$tags); public function do($userAddressId,$user_id,$user_name,$address,$doorplate,$gender,$lat,$lng,$tel,$tags);
public function check(); public function check();
public function undo($userAddressId); public function undo($userAddressId);
public function getDefault($userId);
public function get($userAddressId);
public function getList($userId); public function getList($userId);
public function setDefault($userId,$userAddressId);
} }

2
config/routes.php

@ -125,4 +125,6 @@ Router::addGroup('/v3/', function () {
Router::post('store/updateBusinessHours', 'App\Controller\v3\StoreController@updateBusinessHours'); Router::post('store/updateBusinessHours', 'App\Controller\v3\StoreController@updateBusinessHours');
Router::post('userAddress/update', 'App\Controller\v3\UserAddressController@update'); Router::post('userAddress/update', 'App\Controller\v3\UserAddressController@update');
Router::post('userAddress/getList', 'App\Controller\v3\UserAddressController@getList'); Router::post('userAddress/getList', 'App\Controller\v3\UserAddressController@getList');
Router::post('userAddress/setDefault', 'App\Controller\v3\UserAddressController@setDefault');
Router::post('userAddress/get', 'App\Controller\v3\UserAddressController@get');
},['middleware' => [\App\Middleware\Auth\ApiMiddleware::class, \App\Middleware\Auth\UserMiddleware::class]]); },['middleware' => [\App\Middleware\Auth\ApiMiddleware::class, \App\Middleware\Auth\UserMiddleware::class]]);
Loading…
Cancel
Save