123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- <?php
- // +----------------------------------------------------------------------
- // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
- // +----------------------------------------------------------------------
- // | Author: 萤火科技 <admin@yiovo.com>
- // +----------------------------------------------------------------------
- declare (strict_types = 1);
- namespace app\api\controller;
- use app\api\model\Cart as CartModel;
- use app\api\model\Goods as GoodsModel;
- use app\api\service\User as UserService;
- use app\common\enum\goods\GoodsType;
- use app\common\library\helper;
- use app\common\model\BrowseRecords;
- use app\store\model\qc\QcMjSendActivity;
- use app\common\service\delivery\Express as ExpressService;
- use app\api\model\Category;
- use app\api\model\GoodsCategoryRel;
- use app\api\model\member\MemberGoods as MemberGoodsModel;
- use app\api\model\groupbuylb\GroupBuyLbActivity;
- use app\common\model\ms\MsActivity as MsActivityModel;
- use app\api\model\Order as OrderModel;
- use app\api\model\za\ZaActivity as ZaActivityModel;
- use app\common\model\store\Setting as SettingModel;
- /**
- * 商品控制器
- * Class Goods
- * @package app\api\controller
- */
- class Goods extends Controller
- {
- /**
- * 商品列表`
- *
- * @return array
- * @throws \think\db\exception\DbException
- */
- public function list()
- {
- // 获取列表数据
- $model = new GoodsModel;
- $enableExchange = boolval($this->request->param('enable_exchange', 0));
- $list = $model->getList($this->request->param(),15,false, $enableExchange);
- $goodsType = $this->request->param('goods_type', null);
- foreach ($list as $item){
- if ($goodsType == GoodsType::EXCHANGE){
- $item['za'] = null;
- $item['miaosha'] = null;
- continue;
- }
- //买一赠一
- $za = (new ZaActivityModel())->getZaGood($item['goods_id']);
- if(isset($za)){
- $item['za'] = $za;
- }else{
- $item['za'] = null;
- }
- $miaosha = (new MsActivityModel)->getMsPrice($item['goods_id'],$item['goods_price_min']);
- $item['miaosha'] = $miaosha;
- }
- return $this->renderSuccess(compact('list'));
- }
- public function ricelist(){
- // 获取列表数据
- $model = new GoodsModel;
- $category = Category::with(['goods'])->where("status",1)->where("type",2)->select();
- $goods_id_array = [];
- foreach($category as $row){
- $goods = $row['goods'];
- foreach($goods as $row){
- $goods_id_array[] = $row['goods_id'];
- }
- }
- $param = array_merge($this->request->param(),['goods_id_arr'=>$goods_id_array]);
- $list = $model->getRiceList($param);
- // return $category;
- return $this->renderSuccess(compact('list'));
- }
- /**
- * 获取商品详情
- * @param int $id
- * @return array
- */
- public function detail(int $id, int $addressId = 0, int $staffUserId = 0)
- {
- $user = UserService::getCurrentLoginUser();
- // 商品详情
- $model = new GoodsModel;
- $goodsInfo = $model->getDetails($id, $user, $addressId, $staffUserId);
- $goodsInfo->inc('view_num', 1)->update();
- if ($user) {
- $browseRecord = BrowseRecords::whereDay('create_time')->where(['user_id' => $user->user_id, 'source_type' => 1, 'source_id' => $id])->find();
- if (!$browseRecord) {
- BrowseRecords::create([
- 'user_id' => $user->user_id,
- 'source_type' => 1,
- 'source_id' => $id
- ]);
- $goodsInfo->inc('view_distinct_num', 1)->update();
- } else {
- $browseRecord->update_time = time();
- $browseRecord->save();
- }
- }
- $member = MemberGoodsModel::where('goods_id',$id)->where("status",0)->find();
- $goodsInfoArray = $goodsInfo->toArray();
- $goodsInfoArray['member_price'] = (new MemberGoodsModel)->getGoodsMemberPrice($id,$goodsInfoArray['goods_price_min']);
-
- $groupbuylb = new GroupBuyLbActivity;
- $group_buy = $groupbuylb->getGroupBuyLbPrice($id);
- $goodsInfoArray['group_buy'] = $group_buy;
- //秒杀
- $miaosha = (new MsActivityModel)->getMsPrice($id,$goodsInfoArray['goods_price_min']);
- if(isset($miaosha)&&$miaosha['type']==4){
- $goodsInfoArray['coupon_list'] = [];//秒杀中不返回优惠券
- }
- if(isset($miaosha)){
- $user_id = $user->user_id??0;
- if($user_id==0){
- $have_buy = 0;
- }else{
- $have_buy =(new OrderModel())->miaoshaHaveBuyCnt($miaosha['ms_id'],$user_id);
- }
-
- //还能买多少件
- $miaosha['can_buy_mount'] = $miaosha['limit_mount'] - $have_buy;
- }
- //买一赠一
- $za = (new ZaActivityModel())->getZaGood($id);
- if(isset($za)){
- $goodsInfoArray['za'] = $za;
- }
- $goodsInfoArray['miaosha'] = $miaosha;
- return $this->renderSuccess($goodsInfoArray);
- }
- /**
- * Notes:计算当前配送模板的运费
- * Author: zhangs
- * DateTime: 2021/9/24 20:28
- * @return array
- */
- public function calcDeliveryAmount()
- {
- $params = $this->request->param();
- $model = new GoodsModel();
- $goodsList = $model->getOrderGoodsListForDelivery(
- (int)$params['goodsId'],
- (string)$params['goodsSkuId'],
- (int)$params['goodsNum']
- );
- // 设置默认数据:配送费用
- helper::setDataAttribute($goodsList, [
- 'expressPrice' => 0,
- ], true);
- // 当前用户收货城市id
- $user = UserService::getCurrentLoginUser();
- $cityId = $user['address_default'] ? (int)$user['address_default']['city_id'] : 0;
- // 初始化配送服务类
- $ExpressService = new ExpressService($cityId, $goodsList);
- $isIntraRegion = true;
- // 验证商品是否在限购配送范围
- $isDeliveryLimit = $ExpressService->isDeliveryLimit();
- if ($isDeliveryLimit == false) {
- $isIntraRegion = false;
- } else {
- // 验证商品是否在配送范围
- $isIntraRegion = $ExpressService->isIntraRegion();
- if ($cityId > 0 && $isIntraRegion == false) {
- $isIntraRegion = false;
- }
- }
- // 验证商品是否在配送范围
- // $isIntraRegion = $ExpressService->isIntraRegion();
- // if ($cityId > 0 && $isIntraRegion == false) {
- // $notInRuleGoodsName = $ExpressService->getNotInRuleGoodsName();
- // return $this->renderError("很抱歉,您的收货地址不在商品 [".limit_str((string)$notInRuleGoodsName)."] 的配送范围内");
- // }
- // 订单总运费金额
- $expressPrice = $ExpressService->getDeliveryFee();
- return $this->renderSuccess(compact('isIntraRegion', 'expressPrice'));
- }
- /**
- * 全场满件赠活动数据
- *
- * @param int $act_id
- * @return array|\think\response\Json
- */
- public function qcMjSendActData(int $act_id)
- {
- $now = date('Y-m-d H:i:s');
- $filter[] = ['start_time', '<', $now];
- $filter[] = ['end_time', '>', $now];
- $filter[] = ['audit_status', '=', 1];
- $filter[] = ['status', '=', 1];
- $filter[] = ['id', '=', $act_id];
- $activity = QcMjSendActivity::detail($filter,['image','goodsExcept','giftGoods']);
- if(empty($activity)){
- return $this->renderError("活动不存在");
- }
- $activity = $activity->toArray();
- $activity['activity_status'] = $activity['activity_status']['code'];
- $activity['image_url'] = $activity['image']['preview_url'] ?? '';
- $cartModel = new CartModel();
- $activity['cart_total'] = $cartModel->getCartTotal();
- $cartGoods = $cartModel->getCartGoodsIdNums();
- if (!empty($activity['goodsExcept'])) {
- $num = 0;
- $mj_props = array_values(array_sort($activity['mj_props'], 'value'));
- foreach ($activity['goodsExcept'] as $key=>&$item) {
- if($item['residue_stock']<=0){
- unset($activity['goodsExcept'][$key]);
- }else{
- $num += $item['residue_stock'];
- }
- $item['cart_num'] = 0;
- if (isset($cartGoods[$item['goods_id']])) {
- $item['cart_num'] = $cartGoods[$item['goods_id']];
- }
- }
- if($num>0 && $mj_props[0]['value']>$num){//剩余数量小于最小的赠送
- $activity['goodsExcept'] = [];
- }
- }
- if (!empty($activity['giftGoods'])) {
- foreach ($activity['giftGoods'] as &$item) {
- $item['cart_num'] = 0;
- if (isset($cartGoods[$item['goods_id']])) {
- $item['cart_num'] = $cartGoods[$item['goods_id']];
- }
- }
- }
- return $this->renderSuccess($activity);
- }
- }
|