diff --git a/app/api/controller/user/UserRechargeController.php b/app/api/controller/user/UserRechargeController.php index 3e3c9e46..e7610d94 100644 --- a/app/api/controller/user/UserRechargeController.php +++ b/app/api/controller/user/UserRechargeController.php @@ -1,60 +1,46 @@ dataLists(new UserRechargeLists()); - } +class UserRechargeController extends BaseApiController +{ + /** + * @notes 获取用户充值 + * @return \support\Response + * @author likeadmin + * @date 2024/05/13 16:56 + */ + public function lists() + { + return $this->dataLists(new UserRechargeLists()); + } - public function recharge_list() - { - $buy_bar = "元采购包"; - $send_bar = "品牌礼品券"; - $arr = [ - [ - 'money'=>1000,//采购包 -// 'money'=>1,//采购包 - 'send'=>249,//礼品券 - 'money_string'=>$buy_bar, - 'send_string'=>$send_bar, - ], - [ - 'money'=>2000,//采购包 - 'send'=>560,//礼品券 - 'money_string'=>$buy_bar, - 'send_string'=>$send_bar, - ], - [ - 'money'=>5000,//采购包 - 'send'=>1550,//礼品券 - 'money_string'=>$buy_bar, - 'send_string'=>$send_bar, - ], - [ - 'money'=>10000,//采购包 - 'send'=>3500,//礼品券 - 'money_string'=>$buy_bar, - 'send_string'=>$send_bar, - ] - ]; - return $this->success('ok',$arr); - - - } - - } + public function recharge_list() + { + $buy_bar = "元采购包"; + $send_bar = "品牌礼品券"; + $list = DictData::where('type_value', 'recharge')->select() + ->each(function($item)use($buy_bar,$send_bar){ + $item['money'] = $item['value']; + $item['money_string'] = $buy_bar; + $item['send_string'] = $send_bar; + if($item['name']=='level_one'){ + $item['send'] = 249; + }elseif($item['name']=='level_two'){ + $item['send'] = 560; + }elseif($item['name']=='level_three'){ + $item['send'] = 1550; + }elseif($item['name']=='level_four'){ + $item['send'] = 3500; + } + }); + return $this->success('ok', $list?->toArray()); + } +} diff --git a/app/api/logic/order/OrderLogic.php b/app/api/logic/order/OrderLogic.php index e57deb27..2c5c0664 100644 --- a/app/api/logic/order/OrderLogic.php +++ b/app/api/logic/order/OrderLogic.php @@ -16,6 +16,7 @@ use app\common\model\dict\DictData; use app\common\model\dict\DictType; use app\common\model\order\Cart; use app\common\model\store_branch_product\StoreBranchProduct; +use app\common\model\store_category\StoreCategory; use app\common\model\store_finance_flow\StoreFinanceFlow; use app\common\model\store_order\StoreOrder; use app\common\model\store_order_cart_info\StoreOrderCartInfo; @@ -62,7 +63,7 @@ class OrderLogic extends BaseLogic * @param $params * @return array|bool */ - static public function cartIdByOrderInfo($cartId, $addressId, $user = null, $params = []) + static public function cartIdByOrderInfo($cartId, $addressId, $user = null, $params = [], $createOrder = 0) { $where = ['is_pay' => 0]; $cart_select = Cart::whereIn('id', $cartId)->where($where)->field('id,product_id,cart_num')->select()->toArray(); @@ -80,16 +81,29 @@ class OrderLogic extends BaseLogic self::$deduction_price = 0; self::$frozen_money = 0; //返还金额 $deduction_price = 0; //抵扣金额 + $fresh_price = 0; //生鲜金额 /** 计算价格 */ $off_activity = Config::where('name', 'off_activity')->value('value'); - $field = 'id branch_product_id,store_name,image,unit,price,vip_price,cost,purchase,product_id'; + $field = 'id branch_product_id,store_name,image,unit,price,vip_price,cost,purchase,product_id,top_cate_id'; foreach ($cart_select as $k => $v) { $find = StoreBranchProduct::where(['product_id' => $v['product_id'], 'store_id' => $params['store_id']])->field($field)->find(); if (!$find) { // unset($cart_select[$k]); // continue; - $field = 'id branch_product_id,store_name,image,unit,price,vip_price,cost,purchase, id product_id'; + $field = 'id branch_product_id,store_name,image,unit,price,vip_price,cost,purchase, id product_id,cate_id'; $find = StoreProduct::where(['id' => $v['product_id']])->field($field)->find(); + if ($find) { + $cate_id = StoreCategory::where('id', $find['cate_id'])->value('pid'); + if ($cate_id > 0) { + $cate_id = StoreCategory::where('id', $cate_id)->value('pid'); + if ($cate_id > 0) { + $cate_id = StoreCategory::where('id', $cate_id)->value('pid'); + $find['top_cate_id'] = $cate_id; + } else { + $find['top_cate_id'] = $cate_id; + } + } + } $cart_select[$k]['status'] = 1; //缺货标识 } unset($cart_select[$k]['id']); @@ -114,6 +128,10 @@ class OrderLogic extends BaseLogic $deduction_price = bcsub($cart_select[$k]['total_price'], $cart_select[$k]['pay_price'], 2); $cart_select[$k]['deduction_price'] = $deduction_price; //抵扣金额 } + //计算生鲜 + if ($createOrder == 1 && $find['top_cate_id'] == 15201) { + $fresh_price=bcadd($fresh_price,$cart_select[$k]['pay_price']); + } $cart_select[$k]['product_id'] = $find['product_id']; $cart_select[$k]['old_cart_id'] = $v['id']; $cart_select[$k]['cart_num'] = $v['cart_num']; @@ -153,6 +171,14 @@ class OrderLogic extends BaseLogic // if ($user && $user['user_ship'] == 1 && $pay_type != 17) { // $pay_price = self::$pay_price; // } else { + + //判断生鲜是否大于200 + if($createOrder==1 && $fresh_price>0){ + if($fresh_price<200){ + self::setError('订单里的生鲜必须大于金额200元'); + return false; + } + } $pay_price = bcsub(self::$pay_price, self::$activity_price, 2); //减去活动优惠金额 // } //成本价 收益 @@ -236,7 +262,11 @@ class OrderLogic extends BaseLogic $verify_code = createCode($code); $params['order_id'] = $order_id; $params['verify_code'] = $verify_code; - $orderInfo = self::cartIdByOrderInfo($cartId, $addressId, $user, $params); + $orderInfo = self::cartIdByOrderInfo($cartId, $addressId, $user, $params, 1); + if($orderInfo==false){ + self::setError(self::getError()); + return false; + } if (!$orderInfo) { return false; } diff --git a/app/common/logic/UserSignLogic.php b/app/common/logic/UserSignLogic.php index 85955a9e..b4f66ba6 100644 --- a/app/common/logic/UserSignLogic.php +++ b/app/common/logic/UserSignLogic.php @@ -5,6 +5,7 @@ namespace app\common\logic; use app\common\enum\YesNoEnum; use app\common\logic\BaseLogic; +use app\common\model\dict\DictData; use app\common\model\user\User; use app\common\model\user_recharge\UserRecharge; use app\common\model\user_sign\UserSign; @@ -23,22 +24,38 @@ class UserSignLogic extends BaseLogic */ public static function dealRechargeFrozen($user, $order, $user_ship = 0) { + $total_vip = 0; + $level_one = 1000; + $level_two = 2000; + $level_three = 5000; + $level_four = 10000; + $list = DictData::where('type_value', 'recharge')->select(); + foreach( $list as $k=>$v){ + if($v['name']=='level_one'){ + $level_one = $v['value']; + }elseif($v['name']=='level_two'){ + $level_two = $v['value']; + }elseif($v['name']=='level_three' ){ + $level_three = $v['value']; + }elseif($v['name']=='level_four'){ + $level_four = $v['value']; + } + } $price=(int)$order['price']; switch ($price) { - case 1000: + case $level_one: $total_vip = 249; break; - case 2000: + case $level_two: $total_vip = 560; break; - case 5000: + case $level_three: $total_vip = 1550; break; - case 10000: + case $level_four: $total_vip = 3500; break; default: - $total_vip = 0; break; } if($total_vip==0){