request->request('goodsid'); $goodsinfo=db('goods')->where(['id'=>$goodsid,'on_sale'=>1])->find(); $sinfo=db('studio')->where(['id'=>$goodsinfo['stuid']])->find(); if($goodsinfo) { if(time()>=strtotime(date("Y-m-d {$sinfo['start']}")) && time()<=strtotime(date("Y-m-d {$sinfo['end']}"))) { if($goodsinfo['istrade'] == 1) { $this->error('已售完' ,['flag'=>1]); }else{ $this->success('成功'); } }elseif(time()error('待开售' ,['flag'=>0]); }else{ $this->error('已结束' ,['flag'=>1]); } }else{ $this->error('商品已下架,请抢购其他商品'); } } /* 获取数据 */ function getgoodslist() { $catid=$this->request->request('catid'); $map['catid']=$catid; $p=$this->request->request('p'); if(empty($p)) { $this->error('缺少参数页码'); } $map['on_sale']=1; $map['on_resale']=2; $pagesize=10; $map['istrade']=0; /*获取茶室*/ $studio=db('studio')->where(['title'=>$this->auth->login_studio])->find(); if($studio) { $map['stuid']=$studio['id']; }else{ $map['stuid']=0; } $total=db('goods')->where($map)->count(); $totalPage=ceil($total/$pagesize); if($p>$totalPage && $total>0) { $this->error('页码有误'); } if(time()>=strtotime(date("Y-m-d {$studio['start']}")) && time()<=strtotime(date("Y-m-d {$studio['end']}"))) { $list=db('goods')->where($map)->page($p,$pagesize)->order('id desc')->select(); //$data['sql']=db()->getlastsql(); }else{ $totalPage=0; $list=[]; } if(empty($list)) { $data['list']=[]; }else{ $data['list']=$list; } $data['total']=$totalPage; $this->success('',$data); } /* 加入购物车 */ function addcart() { $id=$this->request->request('id'); if(empty($id)) { $this->error('缺少参数商品id'); } $attr=$this->request->request('attr'); if(empty($attr)) { $this->error('请选择商品规格'); } $price=$this->request->request('price'); $nums=$this->request->request('nums'); if(empty($nums)) { $this->error('缺少参数商品数量'); } $type=$this->request->request('type'); $cartinfo=db('goods_cart')->where(['userid'=>$this->auth->id,'goodsid'=>$id,'attr'=>$attr])->find(); if(empty($cartinfo)) { $info=db('goods')->where(['id'=>$id])->find(); $data=[ 'userid'=>$this->auth->id, 'goodsid'=>$id, 'title'=>$info['title'], 'attr'=>$attr, 'image'=>$info['image'], 'nums'=>$nums, 'price'=>$price, 'ctime'=>time(), 'type'=>$info['type'], ]; $ids=db('goods_cart')->insertGetId($data); if($ids) { $this->success('加入购物车成功'); }else{ $this->error('加入购物车失败'); } }else{ if($type == 1) { $res=db('goods_cart')->where(['userid'=>$this->auth->id,'goodsid'=>$id,'attr'=>$attr])->update(['nums'=>$nums]); $this->success('加入购物车成功'); }else{ $res=db('goods_cart')->where(['userid'=>$this->auth->id,'goodsid'=>$id,'attr'=>$attr])->setInc('nums',$nums); if($res) { $this->success('加入购物车成功'); }else{ $this->error('加入购物车失败'); } } } } /* 勾选 */ function selectedcart() { $id=$this->request->request('id'); if(empty($id)) { $this->error('缺少参数商品id'); } $iselected=$this->request->request('isselected'); $res=db('goods_cart')->where(['id'=>$id])->update(['isselected'=>$iselected]); if($res) { $data['totalMoney']=0; $data['totalNums']=db('goods_cart')->where(['userid'=>$this->auth->id,'isselected'=>1])->count(); $data['totalMoney']=db('goods_cart')->where(['userid'=>$this->auth->id,'isselected'=>1])->sum('nums*price'); $this->success('',$data); }else{ $this->error(''); } } /* 勾选所有的 */ function selectedall() { $iselected=$this->request->request('isselected'); $res=db('goods_cart')->where(['userid'=>$this->auth->id])->update(['isselected'=>$iselected]); if($res) { $data['totalMoney']=0; $data['totalNums']=db('goods_cart')->where(['userid'=>$this->auth->id,'isselected'=>1])->count(); $data['totalMoney']=db('goods_cart')->where(['userid'=>$this->auth->id,'isselected'=>1])->sum('nums*price'); $this->success('',$data); }else{ $this->error(''); } } /* 购物车内的数量变化 */ function addnums() { $id=$this->request->request('id'); if(empty($id)) { $this->error('缺少参数商品id'); } $nums=$this->request->request('nums'); if(empty($nums)) { $this->error('缺少参数商品数量'); } $res=db('goods_cart')->where(['id'=>$id])->update(['nums'=>$nums]); if($res) { $data['totalMoney']=0; $data['totalNums']=db('goods_cart')->where(['userid'=>$this->auth->id,'isselected'=>1])->count(); $data['totalMoney']=db('goods_cart')->where(['userid'=>$this->auth->id,'isselected'=>1])->sum('nums*price'); $this->success('',$data); }else{ $this->error(''); } } function todelcart() { $ids=$this->request->request('ids'); $res=db('goods_cart')->where(['id'=>['in',$ids]])->delete(); if($res) { $this->success(''); }else{ $this->error('删除失败'); } } /*购物区*/ function checkcart() { $count=db('goods_cart')->where(['userid'=>$this->auth->id,'isselected'=>1])->group('type')->count(); if($count>1) { $this->error('不同购物区不能一起支付'); }else{ $this->success(''); } } function checkstock() { $data=[]; $list=db('goods_cart')->where(['userid'=>$this->auth->id,'isselected'=>1])->select(); foreach($list as $v) { $info=db('goods')->where(['id'=>$v['goodsid']])->find(); if($info['stock']<$v['nums']) { $data['id']=$v['id']; $data['stock']=$info['stock']; break; } } if(empty($data)) { $this->success('检测完毕'); }else{ $this->error('部分商品库存不足',$data); } } /* 新增地址 */ function addressadd() { $data['userName']=$this->request->request('userName'); if(empty($data['userName'])) { $this->error("请输入联系人"); } $data['userPhone']=$this->request->request('userPhone'); if(empty($data['userPhone'])) { $this->error("请输入联系电话"); } $data['area']=$this->request->request('area'); if(empty($data['area'])) { $this->error("请选择省市区"); } $data['address']=$this->request->request('address'); if(empty($data['address'])) { $this->error("请输入详细地址"); } $data['isdefault']=$this->request->request('isdefault'); if(empty($data['isdefault'])) { $data['isdefault']=0; } $data['ctime']=time(); $data['userid']=$this->auth->id; $ids=db('user_address')->insertGetId($data); if($ids) { if($data['isdefault'] == 1) { db('user_address')->where(['userid'=>$data['userid'],'id'=>['neq',$ids]])->update(['isdefault'=>0]); } $this->success('新增地址成功'); }else{ $this->error('新增地址失败'); } } function addressedit() { $id=$this->request->request('id'); $data['userName']=$this->request->request('userName'); if(empty($data['userName'])) { $this->error("请输入联系人"); } $data['userPhone']=$this->request->request('userPhone'); if(empty($data['userPhone'])) { $this->error("请输入联系电话"); } $data['area']=$this->request->request('area'); if(empty($data['area'])) { $this->error("请选择省市区"); } $data['address']=$this->request->request('address'); if(empty($data['address'])) { $this->error("请输入详细地址"); } $data['isdefault']=$this->request->request('isdefault'); if(empty($data['isdefault'])) { $data['isdefault']=0; } $res=db('user_address')->where(['id'=>$id])->update($data); if($res) { if($data['isdefault'] == 1) { db('user_address')->where(['userid'=>$this->auth->id,'id'=>['neq',$id]])->update(['isdefault'=>0]); } $this->success('编辑地址成功'); }else{ $this->error('编辑地址失败'); } } /* 删除地址 */ function deladdress() { $id=$this->request->request('id'); $res=db('user_address')->where(['id'=>$id])->delete(); if($res) { $this->success('删除地址成功'); }else{ $this->error('删除地址失败'); } } /* 生成订单 */ function addorder() { $addressid=$this->request->request('addressid'); $addressinfo=db('user_address')->where(['id'=>$addressid])->find(); if(empty($addressinfo)) { $this->error("地址不存在,请更换"); } $remark=$this->request->request('remark'); $deliver=0;$totalMoney=0; $goods=db('goods_cart')->where(['userid'=>$this->auth->id,'isselected'=>1])->select(); if(empty($goods)) { $this->error('订单已生成,请勿重复操作'); } $goodsid=db('goods_cart')->where(['userid'=>$this->auth->id,'isselected'=>1])->column('goodsid'); $deliver=db('goods')->where(['id'=>['in',$goodsid]])->sum('delivery'); $totalMoney=db('goods_cart')->where(['userid'=>$this->auth->id,'isselected'=>1])->sum('price*nums'); db()->startTrans(); $data=[ 'orderNo'=>date('YmdHis').rand(100,999), 'orderStatus'=>-2, 'totalMoney'=>$totalMoney, 'deliverMoney'=>$deliver, 'userid'=>$this->auth->id, 'userName'=>$addressinfo['userName'], 'userPhone'=>$addressinfo['userPhone'], 'userAddress'=>$addressinfo['area'].$addressinfo['address'], 'addressId'=>$addressid, 'remark'=>$remark, 'createTime'=>date('Y-m-d H:i:s'), 'needPay'=>$deliver+$totalMoney, 'utime'=>time(), 'type'=>get_table_column('goods',$goodsid[0],'type') ]; $oids=db('order')->insertGetId($data); foreach ($goods as $v) { $ordGod=[ 'orderid'=>$oids, 'goodsid'=>$v['goodsid'], 'nums'=>$v['nums'], 'price'=>$v['price'], 'attr'=>$v['attr'], 'title'=>$v['title'], 'image'=>$v['image'], 'guserid'=>get_table_column('goods',$v['goodsid'],'userid') ]; $ogids=db('order_goods')->insertGetId($ordGod); } $logid=db('order_log')->insertGetId(['orderid'=>$oids,'content'=>'您的订单已生成,请尽快支付','userid'=>$this->auth->id,'ctime'=>time()]); if($oids && $ogids && $logid) { db('goods_cart')->where(['userid'=>$this->auth->id,'isselected'=>1])->delete(); db()->commit(); $this->success("订单生成成功",['orderid'=>$oids]); }else{ db()->rollback(); $this->error("订单生成失败"); } } /* 取消订单 */ function cancelorder() { $id=$this->request->request('orderid'); $orderinfo=db('order')->where(['id'=>$id,'orderStatus'=>-2])->find(); if(empty($orderinfo)) { $this->error('订单不存在或状态已发生改变'); } $res=db('order')->where(['id'=>$id])->update(['orderStatus'=>-1,'utime'=>time()]); if($res) { db('order_log')->insertGetId(['orderid'=>$id,'content'=>'您的订单已取消','userid'=>$this->auth->id,'ctime'=>time()]); $this->success("订单取消成功"); }else{ $this->error("订单取消失败"); } } /* 确认订单 */ function confirmorder() { $id=$this->request->request('orderid'); $orderinfo=db('order')->where(['id'=>$id,'orderStatus'=>2])->find(); if(empty($orderinfo)) { $this->error('订单不存在或状态已发生改变'); } $res=db('order')->where(['id'=>$id])->update(['orderStatus'=>3,'utime'=>time()]); if($res) { db('order_log')->insertGetId(['orderid'=>$id,'content'=>'您的订单已签收','userid'=>$this->auth->id,'ctime'=>time()]); $this->success("订单签收成功"); }else{ $this->error("订单签收失败"); } } /* 退款 */ function torefund() { $orderid=$this->request->request('orderid'); $refundremark=$this->request->request('refundremark'); if(empty($refundremark)) { $this->error('请输入退款理由'); } $res=db('order')->where(['id'=>$orderid])->update(['isrefund'=>1,'refundremark'=>$refundremark,'utime'=>time()]); if($res) { db('order_log')->insertGetId(['orderid'=>$orderid,'content'=>'您的订单已申请退款,请耐心等待审核','userid'=>$this->auth->id,'ctime'=>time()]); $this->success("退款申请提交成功"); }else{ $this->error("退款申请提交失败"); } } /* 支付 */ function payorder() { $id=$this->request->request('orderid'); $psd2=$this->request->request('psd2'); if(empty($psd2)) { $this->error('请输入支付密码'); } $orderinfo=db('order')->where(['id'=>$id,'orderStatus'=>-2])->find(); if(empty($orderinfo)) { $this->error('订单不存在或状态已发生改变'); } /*判断上级是否在网体内*/ $up=db('user_parent')->where(['userid'=>get_user_data($orderinfo['userid'],'refereeid')])->find(); if(empty($up)) { $this->error('上级未进入网体,您还暂时不能购物'); } $user=db('user')->where(['id'=>$orderinfo['userid']])->find(); if($user['password2'] != getEncryptPassword($psd2,$user['salt'])) { $this->error('支付密码输入错误'); } if($user['bonus']<$orderinfo['needPay']) { $this->error('余额不足,请充值'); } db()->startTrans(); $changedata=[ 'type'=>14, 'money'=>0-abs($orderinfo['needPay']), 'userid'=>$orderinfo['userid'], 'relevant_userid'=>$orderinfo['userid'], 'remark'=>'购物扣除', ]; $res1=caiwu($changedata, 'bonus'); $res=db('order')->where(['id'=>$id])->update(['orderStatus'=>1,'utime'=>time(),'paytime'=>time()]); if($res) { db('order_log')->insertGetId(['orderid'=>$id,'content'=>'您的订单已支付,请耐心等待发货','userid'=>$this->auth->id,'ctime'=>time()]); bonusorder($id); db()->commit(); $this->success("订单取消成功"); }else{ db()->rollback(); $this->error("订单取消失败"); } } /*回调*/ function notify() { $json = file_get_contents('php://input'); $key=config('site')['paykey']; $arr = json_decode($json,true); $jsonBase64 = base64_encode(json_encode($arr['paramsJson'])); $jsonBase64Md5 = md5($jsonBase64); $sign = strtoupper(md5($key.$jsonBase64Md5)); if($sign == $arr['sign']){ # if($_SERVER['REMOTE_ADDR'] == "47.104.25.167"||$_SERVER['REMOTE_ADDR'] == "47.104.25.167"){ $orderid=$arr['paramsJson']['data']['orderId']; $orderinfo=db('order')->where(['id'=>$orderid])->find(); if($orderinfo['orderStatus'] == -2) { db('order')->where(['id'=>$orderid])->update(['orderStatus'=>1,'utime'=>time(),'paytime'=>time()]); db('order_log')->insertGetId(['orderid'=>$orderid,'content'=>'您的订单已支付,请耐心等待发货','userid'=>$orderinfo['userid'],'ctime'=>time()]); bonusorder($orderid); echo 'success'; } # } } } /* 获取订单 */ function getorderlist() { $status=$this->request->request('status'); if(empty($status)) { $this->error('缺少参数状态'); }else{ if($status != 'all') { if($status == 1) { $map['orderStatus']=$status; $map['isrefund']=0; }elseif($status == 3) { $map['orderStatus']=['in','3,4']; }else{ $map['orderStatus']=$status; } } } $p=$this->request->request('p'); if(empty($p)) { $this->error('缺少参数页码'); } $map['userid']=$this->auth->id; $pagesize=10; $total=db('order')->where($map)->count(); $totalPage=ceil($total/$pagesize); if($p>$totalPage && $total>0) { $this->error('页码有误'); } $list=db('order')->where($map)->page($p,$pagesize)->field('id,orderNo,totalMoney,deliverMoney,orderStatus,isrefund')->order('id desc')->select(); foreach ($list as &$v) { $v['allMoney']=$v['totalMoney']+$v['deliverMoney']; if($v['orderStatus'] == 1) { if($v['isrefund'] == 1) { $v['status']='退款中'; }else{ $v['status']='待发货'; } }else{ $v['status']=config('orderStatus')[$v['orderStatus']]; } $goods=db('order_goods')->where(['orderid'=>$v['id']])->select(); if(empty($goods)) { $v['goods']=[]; }else{ $v['goods']=$goods; } $v['nums']=count($goods); } if(empty($list)) { $data['list']=[]; }else{ $data['list']=$list; } $data['total']=$totalPage; $this->success('',$data); } /* 平乱 */ function toappraise() { $params = $this->request->post("row/a"); $user=db('user')->where(['id'=>$this->auth->id])->find(); foreach ($params as $v) { $data=[ 'userid'=>$this->auth->id, 'orderid'=>$v['orderid'], 'goodsid'=>$v['goodsid'], 'content'=>$v['content'], 'ctime'=>time(), 'avatar'=>$user['avatar'] == ''?'/assets/img/avatar.png':$user['avatar'], 'nickname'=>$user['nickname'] ]; $ids=db('order_comment')->insertGetId($data); db('goods')->where(['id'=>$data['goodsid']])->setInc('review',1); } db('order')->where(['id'=>$data['orderid']])->update(['orderStatus'=>4,'utime'=>time()]); $this->success('评论完毕'); } /* 评论记录 */ function getappraiselist() { $goodsid=$this->request->request('goodsid'); if(empty($goodsid)) { $this->error('缺少参数商品id'); } $map['goodsid']=$goodsid; $map['status']=1; $p=$this->request->request('p'); if(empty($p)) { $this->error('缺少参数页码'); } $pagesize=10; $total=db('order_comment')->where($map)->count(); $totalPage=ceil($total/$pagesize); if($p>$totalPage && $total>0) { $this->error('页码有误'); } $list=db('order_comment')->where($map)->page($p,$pagesize)->order('id desc')->select(); foreach ($list as &$v) { $v['ctime']=date('Y-m-d',$v['ctime']); } if(empty($list)) { $data['list']=[]; }else{ $data['list']=$list; } $data['total']=$totalPage; $this->success('',$data); } }