tablePrefix ='tab_'; /* 执行构造方法 */ parent::__construct($name, $tablePrefix, $connection); } /** * 商品列表 * @param integer $p 页码 * @param array $map 条件数组 * @param string $fields 字段列表 * @param string $order 排序 * @param integer $row 每页数量 * @return array 结果数据集 * @author 鹿文学 */ public function lists($p=1,$map=array(),$fields=true,$order='online_time desc',$row=10) { $page = intval($p); $page = $page ? $page : 1; //默认显示第一页数据 $lists = $this->alias('m')->field($fields) ->where($map)->page($page,$row)->order($order)->select(); $count = $this->alias('m')->where($map)->count(); if(is_array($lists)) { $data['lists'] = $lists;$data['status']=1; if($count > $row){ $data['total'] = ceil($count/$row); } else { $data['total']=1; } } else { $data['lists']='';$data['total'] = 1;$data['status'] = 0; } $data['current'] = $page; return $data; } /** * 商品订单列表 * @param integer $p 页码 * @param array $map 条件数组 * @param string $fields 字段列表 * @param string $order 排序 * @param integer $row 每页数量 * @return array 结果数据集 * @author 鹿文学 */ public function lists_and_order($p=1,$map=array(),$fields=true,$order='pay_time desc',$row=10) { $page = intval($p); $page = $page ? $page : 1; //默认显示第一页数据 $sql = $this->alias('m')->field($fields) ->join('tab_order as o on(o.merchandise_id=m.id) ','left') ->where($map)->order($order)->group('m.id')->select(false); $lists = $this->table(' ('.$sql.') as a')->order('a.time desc')->select(); $result = $this->alias('m')->field('count(DISTINCT m.id) as count')->where($map)->join('tab_order as o on(o.merchandise_id=m.id) ','left') ->group('m.id')->select(); $count = $result['count']; if(is_array($lists)) { $data['lists'] = $lists;$data['status']=1; if($count > $row){ $data['total'] = ceil($count/$row); } else { $data['total']=1; } } else { $data['lists']='';$data['total'] = 1;$data['status'] = 0; } $data['current'] = $page; return $data; } /** * 新增或更新一个商品 * @param array $data 手动传入的数据 * @return boolean fasle 失败 , int 成功 返回完整的数据 * @author 王贺 */ public function update($data = null){ /* 获取数据对象 */ $data = $this->token(false)->create($data); if(empty($data)){ return false; } /* 添加或新增基础内容 */ if(empty($data['id'])){ //新增数据 $id = $this->add($data); //添加基础内容 if(!$id){ $this->error = '新增基础内容出错!'; return false; }else{ $data['id']=$id; } } else { //更新数据 $status = $this->save($data); //更新基础内容 if(false === $status){ $this->error = '更新基础内容出错!'; return false; } } return $data; } /** * 创建时间不写则取当前时间 * @return int 时间戳 * @author huajie */ protected function getCreateTime(){ $create_time = I('post.create_time'); return $create_time?strtotime($create_time):NOW_TIME; } protected function ratio_c(){ $ratio=I('post.ratio'); if((0<=$ratio)&&(100>=$ratio)){ return true; }else{ return false; } } /** * 获取商品总数 * @param array $map 条件数组 * @return integer 总数 * @author 鹿文学 */ public function total($map) { return $this->where($map)->count(); } /** * 商品详情 * @param integer $id 商品编号 * @return array 结果数据集 * @author 鹿文学 */ public function detail($id=0) { if(is_numeric($id) && $id > 0) { $map['m.id'] = $id; $field = 'm.id,m.title,m.content,m.phone,m.status,m.screenshot,m.online_time,m.server_id,m.server_name,m.price,m.day,m.accumulation,m.small_id,m.small_account,m.game_id,g.relation_game_id,g.game_name,g.game_size,g.game_type_name,g.sdk_version,g.down_port,g.add_game_address,g.ios_game_address'; $data = $this->merchandise_info($map,$field); } return $data; } /** * 商品详情 * @param integer $id 商品编号 * @return array 结果数据集 * @author 鹿文学 */ public function sale_detail($id=0) { if(is_numeric($id) && $id > 0) { $order = D('Order')->get_info_by_good($id); if(is_array($order)) { if($order['pay_time']>0) {$this->where(['id'=>$id])->setField(['status'=>4]);} } $map['m.id'] = $id; $map['m.status']=['in',[1,3,4]]; $map['m.online_time'] = ['gt',0]; $data = $this->merchandise_info($map); } return $data; } /** * 商品详情 * @param integer $id 商品编号 * @return array 结果数据集 * @author 鹿文学 */ public function deal_detail($id=0) { if(is_numeric($id) && $id > 0) { $map['m.id'] = $id; $map['m.status']=array('in',[1,4]); $data = $this->merchandise_info($map); } return $data; } private function merchandise_info($map,$field='') { if(empty($field)) { $field = 'm.id,m.title,m.content,m.status,m.screenshot,m.online_time,m.server_name,m.price,m.day,m.accumulation,m.small_account,g.relation_game_id,m.game_id,g.game_name,g.game_size,g.game_type_name,g.sdk_version,g.down_port,g.add_game_address,g.ios_game_address'; } $data = $this->alias('m')->field($field) ->join('tab_game as g on(g.id = m.game_id) ') ->where($map)->find(); if($data['price']) { $price=$data['price']; $data['price'] = preg_match('/^[1-9]\d*(\.(00)?)?$/',$price)?intval($price):$price; } return $data; } /** * 商品信息 * @param integer $id 商品编号 * @return array 结果数据集 * @author 鹿文学 */ public function info($id=0) { if(is_numeric($id) && $id > 0) { $map['m.id'] = $id; $map['m.status'] = 3; $map['m.online_time'] = ['gt',0]; $data = $this->alias('m')->field('m.id,m.title,m.price,m.game_name,m.screenshot') ->where($map)->find(); } return $data; } /** * 商品购买需要的信息 * @param integer $id 商品编号 * @return array 结果数据集 * @author 鹿文学 */ public function buy_info($id=0) { if(is_numeric($id) && $id > 0) { $map['m.id'] = $id; $map['m.status'] = 3; $data = $this->alias('m')->field('m.id,m.price,m.small_id,m.small_account,m.user_id as seller_id,m.user_account as seller_account,m.game_id') ->where($map)->find(); } return $data; } /** * 商品信息 * @param integer $id 商品编号 * @return array 结果数据集 * @author 鹿文学 */ public function record_info($id=0) { if(is_numeric($id) && $id > 0) { $map['m.id'] = $id; $user = D('User')->getLoginInfo(); $field = 'if(m.status=4,1,m.status) as status,m.id,m.user_id,m.title,m.game_id,m.content,m.screenshot,m.online_time,m.over_time,m.server_name,m.price,m.day,m.accumulation,m.small_id,m.small_account,g.relation_game_id,g.game_name,g.game_size,g.game_type_name,g.sdk_version,g.down_port,g.add_game_address,g.ios_game_address'; $data = $this->merchandise_info($map,$field); if($user['user_id'] != $data['user_id']) {$data['status']=6;} $data['accumulation'] = M('Spend','tab_')->where(['pay_status'=>1,'small_id'=>$data['small_id']])->sum('pay_amount'); } return $data; } /** * 删除 * @param integer $id 商品编号 * @param integer $buyerstatus 是否买家状态 * @author 鹿文学 */ public function del_record($id='',$buyerstatus='') { if(is_numeric($id) && $id>0) { if(!empty($buyerstatus)) {$data['buyer_status']=1;} else {$data['seller_status'] = 1;} $res = $this->where(['id'=>$id])->save($data); if($res) { return true; } else { $this->error='删除失败'; return false; } } else { $this->error='参数错误'; return false; } } /** * 下架 * @param integer $id 商品编号 * @author 鹿文学 */ public function offline_record($id='') { if(is_numeric($id) && $id>0) { $res = $this->where(['id'=>$id])->save(['status'=>-1]); if($res) { $mer = $this->field('small_id,user_id')->where(['id'=>$id])->find(); M('User','tab_')->where(['id'=>$mer['small_id']])->save(['lock_status'=>1, 'puid'=>$mer['user_id'],'source_puid'=>0]); $this->error='下架成功'; return true; } else { $this->error='下架失败'; return false; } } else { $this->error='参数错误'; return false; } } /** * 改价 * @param integer $id 商品编号 * @param float $price 新价格 * @author 鹿文学 */ public function change_price($id='',$price='') { if(is_numeric($id) && $id>0 && is_numeric($price) && $price>0) { $res = $this->where(['id'=>$id,'status'=>3])->save(['status'=>0,'price'=>$price]); if($res) { $this->error='改价成功'; return true; } else { $this->error='改价失败'; return false; } } else { $this->error='参数错误'; return false; } } /** * 游戏相关商品 * @param integer $game_id 游戏编号 * @param integer $id 不包含的商品编号 * @param integer $row 限制条数 * @author 鹿文学 */ public function relevant($game_id='',$id='',$row=1) { if(is_numeric($game_id) && $game_id>0) { $user = D('User')->getLoginInfo(); if(!is_array($user)) {return '';} $map['status'] = 3; $map['game_id']=$game_id; empty($id) || $map['id']=array('not in',$id); $lists = $this->field('id,title,game_name,user_id,online_time,price,screenshot')->where($map)->limit($row)->select(); $data = ''; foreach($lists as $k => $v) { $data[$k]= array('title'=>$v['title'],'game_name'=>$v['game_name'],'online_time'=>date('Y-m-d H:i:s',$v['online_time']),'price'=>preg_match('/^[1-9]\d*(\.(00)?)?$/',$v['price'])?intval($v['price']):$v['price']); $data[$k]['icon'] = ''; if(!empty($v['screenshot'])) { $icon = explode(',',$v['screenshot']); $data[$k]['icon'] = get_cover($icon[0],'path'); } if($user['user_id']==$v['user_id']) { $data[$k]['url'] = U('Trade/record_info',array('id'=>$v['id'])); } else { $data[$k]['url'] = U('Trade/detail',array('id'=>$v['id'])); } } return $data; } else { return ''; } } }