$data['id'], 'b.status' => 2, 'b.type' => 2 ]; $list = $store_model->alias('a') ->join('lbfarm_farmer b','a.store_id = b.id') ->where($dis) ->field('a.*,b.title,b.is_admin,b.cover') ->select() ->toArray(); return array_values($list); } } /** * @author chenniang * @DataTime: 2021-10-29 18:52 * @功能说明:参与活动的商品规格信息 */ public function getGoodsInfoAttr($value,$data){ if(!empty($data['id'])){ $i_model = new IntegralGoods(); $list = $i_model->alias('a') ->join('lbfarm_v2_shop_spe_price b','a.spe_id = b.id') ->where(['a.atv_id' => $data['id']]) ->field(['b.stock as goods_stock','b.price as goods_price','a.*']) ->select() ->toArray(); return $list; } } /** * @author chenniang * @DataTime: 2021-10-29 18:46 * @功能说明:获取第一个规格的价格 */ public function getShowPriceAttr($value,$data){ if(!empty($data['id'])){ $i_model = new IntegralGoods(); $info = $i_model->dataInfo(['atv_id'=>$data['id']]); $text = ''; if(!empty($info['integral'])){ $text .= $info['integral'].'积分'; } if(!empty($info['price'])){ $text .= '+'.$info['price'].'元'; } return $text; } } /** * @author chenniang * @DataTime: 2021-10-29 18:50 * @功能说明:总的库存 */ public function getAllStockAttr($value,$data){ if(!empty($data['id'])){ $i_model = new IntegralGoods(); $num = $i_model->where(['atv_id'=>$data['id']])->sum('stock'); return $num; } } /** * @author chenniang * @DataTime: 2021-10-29 18:50 * @功能说明:总的库存 */ public function getAllHaveStockAttr($value,$data){ if(!empty($data['id'])){ $i_model = new IntegralGoods(); $num = $i_model->where(['atv_id'=>$data['id']])->sum('have_stock'); return $num; } } /** * @author chenniang * @DataTime: 2020-09-29 11:04 * @功能说明:添加 */ public function dataAdd($data){ $data['create_time'] = time(); $goods_info = $data['goods_info']; unset($data['goods_info']); // $store_info = $data['store_info']; // // unset($data['store_info']); Db::startTrans(); $res = $this->insert($data); $id = $this->getLastInsID(); $res = $this->updateSome($id,$data,$goods_info); if(!empty($res['code'])){ Db::rollback(); return $res; } Db::commit(); return $res; } /** * @author chenniang * @DataTime: 2021-10-29 18:21 * @功能说明: */ public function updateSome($id,$data,$goods_info){ $i_model = new IntegralGoods(); $atv = $this->dataInfo(['id'=>$id]); $arr = []; if(!empty($goods_info)){ foreach ($goods_info as &$value){ $i_dis = [ 'atv_id' => $id, 'goods_id'=> $data['goods_id'], 'spe_id' => $value['spe_id'], ]; $have_stock = $i_model->where($i_dis)->value('have_stock'); $i_model->where($i_dis)->delete(); $where = []; $where[] = ['a.goods_id','=',$data['goods_id']]; $where[] = ['b.spe_id','=',$value['spe_id']]; $where[] = ['a.status','>',-1]; $where[] = ['a.id','<>',$id]; $info = $i_model->alias('b') ->join('lbfarm_v2_integral_shop a','a.id = b.atv_id') ->where($where) ->field('a.*,b.*') ->select() ->toArray(); if(!empty($info)){ foreach ($info as $vs){ $res = is_time_cross($vs['start_time'],$vs['end_time'],$atv['start_time'],$atv['end_time']); if($res==false){ return ['code'=>500,'msg'=>'规格'.$vs['spe_name'].'该时间段已有积分活动,请先删除,再添加']; } } } $insert = [ 'uniacid' => $data['uniacid'], 'goods_id'=> $data['goods_id'], 'spe_id' => $value['spe_id'], 'stock' => $value['stock'], 'price' => $value['price'], 'integral'=> $value['integral'], 'have_stock'=> !empty($have_stock)?$have_stock:0, 'atv_id' => $id, ]; $i_model->dataAdd($insert); $arr[] = $i_model->getLastInsID(); } } $i_model->where('id','not in',$arr)->where('atv_id','=',$id)->delete(); // $store_model = new IntegralStore(); // // $store_model->where(['integral_id'=>$id])->delete(); // // foreach ($store_info as $k=>$v){ // // $store_insert[$k] = [ // // 'uniacid' => $data['uniacid'], // // 'integral_id' => $id, // // 'store_id' => $v // // ]; // // } // // $store_model->saveAll($store_insert); return true; } /** * @author chenniang * @DataTime: 2020-09-29 11:05 * @功能说明:编辑 */ public function dataUpdate($dis,$data){ if(!empty($data['goods_info'])){ $goods_info = $data['goods_info']; unset($data['goods_info']); } // if(!empty($data['store_info'])){ // // $store_info = $data['store_info']; // // unset($data['store_info']); // } Db::startTrans(); $res = $this->where($dis)->update($data); if(!empty($goods_info)){ $res = $this->updateSome($dis['id'],$data,$goods_info); if(!empty($res['code'])){ Db::rollback(); return $res; } } Db::commit(); return $res; } /** * @author chenniang * @DataTime: 2020-09-29 11:06 * @功能说明:列表 */ public function dataList($dis,$page){ $data = $this->where($dis)->order('top desc,id desc')->paginate($page)->toArray(); return $data; } /** * @author chenniang * @DataTime: 2020-09-29 11:43 * @功能说明: */ public function dataInfo($dis){ $data = $this->where($dis)->find(); return !empty($data)?$data->toArray():[]; } /** * @author chenniang * @DataTime: 2021-10-29 13:34 * @功能说明:积分列表可以通过商品名字查询 */ public function dataGoodsList($dis,$page=10){ $data = $this->alias('a') ->join('lbfarm_shop_goods b','a.goods_id = b.id','left') ->where($dis) ->field('a.*,b.goods_name,cover') ->group('a.id') ->order('a.id desc') ->paginate($page) ->toArray(); return $data; } /** * @author chenniang * @DataTime: 2021-10-29 13:54 * @功能说明:初始化活动时间 */ public function initAtv(){ $this->where('start_time','>',time())->update(['atv_status'=>1]); $this->where('start_time','<',time())->update(['atv_status'=>2]); $this->where('end_time','<',time())->update(['atv_status'=>3]); return true; } /** * @author chenniang * @DataTime: 2021-11-01 10:18 * @功能说明:正在进行中的活动 */ public function atvIng($goods_id,$spe_id=0){ $dis[] = ['a.atv_status','=',2]; $dis[] = ['a.goods_id','=',$goods_id]; $dis[] = ['a.status','=',1]; if(!empty($spe_id)){ $dis[] = ['b.spe_id','=',$spe_id]; } // if(!empty($store_id)){ // // $dis[] = ['c.store_id','=',$store_id]; // // } $data = $this->alias('a') ->join('lbfarm_v2_integral_shop_goods b','a.id = b.atv_id') // ->join('lbfarm_v2_integral_store c','a.id = c.integral_id') ->where($dis) ->field('a.*,b.*') ->find(); return !empty($data)?$data->toArray():[]; } /** * @author chenniang * @DataTime: 2021-11-01 10:18 * @功能说明:正在进行中的活动 */ public function buyLimit($goods_id,$spe_id=0){ $dis[] = ['a.atv_status','=',2]; $dis[] = ['a.goods_id','=',$goods_id]; $dis[] = ['a.status','=',1]; if(!empty($spe_id)){ $dis[] = ['b.spe_id','=',$spe_id]; } // if(!empty($store_id)){ // // $dis[] = ['c.store_id','=',$store_id]; // // } $data = $this->alias('a') ->join('lbfarm_v2_integral_shop_goods b','a.id = b.atv_id') // ->join('lbfarm_v2_integral_store c','a.id = c.integral_id') ->where($dis) ->field('a.*') ->find(); return !empty($data)?$data->toArray():[]; } /** * @author chenniang * @DataTime: 2021-11-04 14:41 * @功能说明:获取是否 */ public function getBuyLimit($list){ $this->initAtv(); $data['buy_limit'] = 1; $data['discount_add'] = 1; foreach ($list as $value){ $res = $this->buyLimit($value['goods_id'],$value['spe_id']); if(!empty($res)){ if($res['buy_limit']==0){ $data['buy_limit'] = 0; } if($res['discount_add']==0){ $data['discount_add'] = 0; } } } return $data; } /** * @author chenniang * @DataTime: 2021-11-11 16:50 * @功能说明:获取活动次数 */ public function getAtvNum1($id,$user_id){ $order_model = new Order(); $dis = [ 'b.integral_id' => $id, 'a.user_id' => $user_id ]; $num = $order_model->alias('a') ->join('longbing_card_v2_shop_order_goods b','a.id = b.order_id') ->where('a.pay_type','>=',1) ->where($dis) ->sum('goods_num'); return $num; } /** * @param $dis * @return float * 获取历史商品件数 */ public function getAtvNum($id,$user_id){ $dis = [ 'a.integral_id' => $id, 'b.user_id' => $user_id ]; $order_model = new \app\farm\model\ShopOrderGoods(); //取消订单的不算 chen $num = $order_model->alias('a') ->join('lbfarm_shop_order b','a.order_id = b.id') ->where($dis) ->where('b.pay_type','>=',1) ->group('a.id') ->sum('a.goods_num'); $order_id = $order_model->alias('a') ->join('lbfarm_shop_order b','a.order_id = b.id') ->where($dis) ->where('b.pay_type','>=',1) ->column('b.id'); $order_refund_goods = new \app\farm\model\ShopRefundGoods(); //申请退款成功的 $refund_num = $order_refund_goods->where('order_id','in',$order_id)->where(['status'=>2])->sum('goods_num'); return $num - $refund_num; } /** * @author chenniang * @DataTime: 2022-07-22 11:01 * @功能说明:积分商品列表 */ public function integralGoodsList($dis,$page=10){ $goods_model = new ShopGoods(); $i_goods_model = new IntegralGoods(); $spe_model = new GoodsSpePrice(); $data = $goods_model->alias('a') ->join('lbfarm_v2_integral_shop_goods b','b.goods_id = a.id') ->join('lbfarm_v2_integral_shop c','b.atv_id = c.id') ->where($dis) ->field('a.goods_name,a.cover,a.id as goods_id,c.id as atv_id,c.type') ->group('a.id') ->order('a.id desc') ->paginate($page) ->toArray(); if(!empty($data['data'])){ foreach ($data['data'] as &$v){ $spe = $i_goods_model->where(['atv_id'=>$v['atv_id']])->order('price')->find()->toArray(); $v['integral'] = $spe['integral']; $v['price'] = $spe['price']; $v['init_price'] = $spe_model->where(['id'=>$spe['spe_id']])->sum('price'); $v['all_have_stock'] = $i_goods_model->where(['atv_id'=>$v['atv_id']])->sum('have_stock'); } } return $data; } }