diff --git a/application/admin/controller/Index.php b/application/admin/controller/Index.php index 3a78c6b6..6a6835c5 100644 --- a/application/admin/controller/Index.php +++ b/application/admin/controller/Index.php @@ -160,7 +160,7 @@ class Index extends AuthController ->group("FROM_UNIXTIME(add_time, '%Y%m%e')") ->order('add_time asc') ->select()->toArray(); - if(empty($order_list)) return false; + if(empty($order_list)) return Json::fail('无数据'); foreach ($order_list as $k=>&$v){ $order_list[$v['day']] = $v; } diff --git a/application/admin/controller/setting/SystemGroupData.php b/application/admin/controller/setting/SystemGroupData.php index 67e5d5ad..ed319378 100644 --- a/application/admin/controller/setting/SystemGroupData.php +++ b/application/admin/controller/setting/SystemGroupData.php @@ -162,37 +162,38 @@ class SystemGroupData extends AuthController } } } + $fvalue = isset($GroupDataValue[$value['title']]['value'])?$GroupDataValue[$value['title']]['value']:''; switch ($value['type']){ case 'input': - $f[] = Form::input($value['title'],$value['name'],$GroupDataValue[$value['title']]['value']); + $f[] = Form::input($value['title'],$value['name'],$fvalue); break; case 'textarea': - $f[] = Form::input($value['title'],$value['name'],$GroupDataValue[$value['title']]['value'])->type('textarea'); + $f[] = Form::input($value['title'],$value['name'],$fvalue)->type('textarea'); break; case 'radio': - $f[] = Form::radio($value['title'],$value['name'],$GroupDataValue[$value['title']]['value'])->options($info); + $f[] = Form::radio($value['title'],$value['name'],$fvalue)->options($info); break; case 'checkbox': - $f[] = Form::checkbox($value['title'],$value['name'],$GroupDataValue[$value['title']]['value'])->options($info); + $f[] = Form::checkbox($value['title'],$value['name'],$fvalue)->options($info); break; case 'upload': - if(!empty($GroupDataValue[$value['title']]['value'])){ - $image = is_string($GroupDataValue[$value['title']]['value']) ? $GroupDataValue[$value['title']]['value'] : $GroupDataValue[$value['title']]['value'][0]; + if(!empty($fvalue)){ + $image = is_string($fvalue) ? $fvalue : $fvalue[0]; }else{ $image = ''; } $f[] = Form::frameImageOne($value['title'],$value['name'],Url::build('admin/widget.images/index',array('fodder'=>$value['title'],'big'=>1)),$image)->icon('image'); break; case 'uploads': - $images = !empty($GroupDataValue[$value['title']]['value']) ? $GroupDataValue[$value['title']]['value']:[]; + $images = !empty($fvalue) ? $fvalue:[]; $f[] = Form::frameImages($value['title'],$value['name'],Url::build('admin/widget.images/index', array('fodder' => $value['title'],'big'=>1)),$images)->maxLength(5)->icon('images')->width('100%')->height('550px')->spin(0); break; case 'select': - $f[] = Form::select($value['title'],$value['name'],$GroupDataValue[$value['title']]['value'])->setOptions($info); + $f[] = Form::select($value['title'],$value['name'],$fvalue)->setOptions($info); break; default: - $f[] = Form::input($value['title'],$value['name'],$GroupDataValue[$value['title']]['value']); + $f[] = Form::input($value['title'],$value['name'],$fvalue); break; } diff --git a/application/admin/controller/system/SystemCleardata.php b/application/admin/controller/system/SystemCleardata.php index 6da840f1..98208360 100644 --- a/application/admin/controller/system/SystemCleardata.php +++ b/application/admin/controller/system/SystemCleardata.php @@ -87,7 +87,7 @@ class SystemCleardata extends AuthController } //修改用户默认密码 public function userdate(){ - SystemCleardata::ClearData('user',1); +// SystemCleardata::ClearData('user',1); $headimgurl= WechatUser::Where('uid',1)->value('headimgurl'); $data['account']='crmeb'; $data['pwd']=md5(123456); @@ -141,7 +141,7 @@ class SystemCleardata extends AuthController } //递归删除文件 function delDirAndFile($dirName,$subdir=true){ - if ($handle = opendir("$dirName")){ + if ($handle = @opendir("$dirName")){ while(false !== ($item = readdir($handle))){ if($item != "." && $item != ".."){ if(is_dir("$dirName/$item")) diff --git a/application/admin/model/system/SystemGroupData.php b/application/admin/model/system/SystemGroupData.php index d9c8b9e7..285541cd 100644 --- a/application/admin/model/system/SystemGroupData.php +++ b/application/admin/model/system/SystemGroupData.php @@ -28,6 +28,7 @@ class SystemGroupData extends ModelBasic $model = new self; if($params['gid'] !== '') $model = $model->where('gid',$params['gid']); if($params['status'] !== '') $model = $model->where('status',$params['status']); + $model = $model->order('sort desc,id ASC'); return self::page($model,function($item,$key){ $info = json_decode($item->value,true); foreach ($info as $index => $value) { diff --git a/application/admin/view/system/system_databackup/index.php b/application/admin/view/system/system_databackup/index.php index 8c808804..b5cf5fe0 100644 --- a/application/admin/view/system/system_databackup/index.php +++ b/application/admin/view/system/system_databackup/index.php @@ -84,12 +84,12 @@ elem: '#fileList' ,url:"{:Url('fileList')}" ,cols: [[ - {field: 'filename', title: '备份名称', sort: true}, - {field: 'part', title: 'part'}, - {field: 'size', title: '大小'}, - {field: 'compress', title: 'compress'}, - {field: 'backtime', title: '时间'}, - {fixed: 'right', title: '操作', width: '20%', align: 'center', toolbar: '#fileListtool'} + {field: 'filename', title: '备份名称', sort: true,width:'25%'}, + {field: 'part', title: 'part',width:'10%'}, + {field: 'size', title: '大小',width:'10%'}, + {field: 'compress', title: 'compress',width:'10%'}, + {field: 'backtime', title: '时间',width:'20%'}, + {fixed: 'right', title: '操作', width: '25%', align: 'center', toolbar: '#fileListtool'} ]] ,page: false }); @@ -128,11 +128,11 @@ ,toolbar: '#toolbarDemo' ,cols: [[ {type:'checkbox'}, - {field: 'name', title: '表名称', sort: true}, - {field: 'comment', title: '备注' }, - {field: 'engine', title: '类型', sort: true}, - {field: 'data_length', title: '大小', sort: true,totalRow: true}, - {field: 'update_time', title: '更新时间', sort: true}, + {field: 'name', title: '表名称', sort: true,width:'20%'}, + {field: 'comment', title: '备注',width:'20%'}, + {field: 'engine', title: '类型', sort: true,width:'10%'}, + {field: 'data_length', title: '大小',width:'10%', sort: true,totalRow: true}, + {field: 'update_time', title: '更新时间',width:'20%', sort: true}, {field: 'rows', title: '行数'}, {fixed: 'right', title: '操作', width: '10%', align: 'center', toolbar: '#barDemo'} ]] diff --git a/application/admin/view/wechat/wechat_user/index.php b/application/admin/view/wechat/wechat_user/index.php index bfdceb99..9cb731eb 100644 --- a/application/admin/view/wechat/wechat_user/index.php +++ b/application/admin/view/wechat/wechat_user/index.php @@ -471,7 +471,7 @@ } } var str = chk_value.join(','); - var url = "http://"+window.location.host+"/admin/store.store_coupon/grant/id/"+str; + var url = "http://"+window.location.host+"/admin/ump.store_coupon/grant/id/"+str; $eb.createModalFrame(this.innerText,url,{'w':800}); }) $('.news').on('click',function (e) { @@ -494,7 +494,7 @@ } } var str = chk_value.join(','); - var url = "http://"+window.location.host+"/admin/wechat.wechat_news_category/send_news/id/"+str; + var url = "{:Url('wechat.wechat_news_category/send_news')}?id="+str; $eb.createModalFrame(this.innerText,url,{'w':800}); }) $('.synchro').on('click',function(){ diff --git a/application/routine/controller/AuthApi.php b/application/routine/controller/AuthApi.php index 802de255..318d6305 100644 --- a/application/routine/controller/AuthApi.php +++ b/application/routine/controller/AuthApi.php @@ -102,7 +102,7 @@ class AuthApi extends AuthController{ $new = StoreProduct::getNewProduct('id,image,store_name,cate_id,price,unit_name,sort',3);//今日上新 $hot = StoreProduct::getHotProduct('id,image,store_name,cate_id,price,unit_name,sort',6);//猜你喜欢 $data['banner'] = $banner; - $data['lovely'] = $lovely; + $data['lovely'] = $lovely[0]; $data['menus'] = $menus; $data['best'] = $best; $data['new'] = $new; @@ -235,10 +235,11 @@ class AuthApi extends AuthController{ if($news!=0) $model->where('is_new',1); $baseOrder = ''; if($priceOrder) $baseOrder = $priceOrder == 'desc' ? 'price DESC' : 'price ASC'; - if($salesOrder) $baseOrder = $salesOrder == 'desc' ? 'sales DESC' : 'sales ASC'; +// if($salesOrder) $baseOrder = $salesOrder == 'desc' ? 'sales DESC' : 'sales ASC';//真实销量 + if($salesOrder) $baseOrder = $salesOrder == 'desc' ? 'ficti DESC' : 'ficti ASC';//虚拟销量 if($baseOrder) $baseOrder .= ', '; $model->order($baseOrder.'sort DESC, add_time DESC'); - $list = $model->limit($first,$limit)->field('id,store_name,cate_id,image,sales,price,stock')->select()->toArray(); + $list = $model->limit($first,$limit)->field('id,store_name,cate_id,image,sales,ficti,price,stock')->select()->toArray(); return JsonService::successful($list); } /** @@ -268,7 +269,7 @@ class AuthApi extends AuthController{ } } $data['storeInfo'] = $storeInfo; - $data['similarity'] = StoreProduct::cateIdBySimilarityProduct($storeInfo['cate_id'],'id,store_name,image,price,sales',4); + $data['similarity'] = StoreProduct::cateIdBySimilarityProduct($storeInfo['cate_id'],'id,store_name,image,price,sales,ficti',4); $data['productAttr'] = $productAttr; $data['productValue'] = $productValue; $data['reply'] = StoreProductReply::getRecProductReply($storeInfo['id']); @@ -341,7 +342,7 @@ class AuthApi extends AuthController{ $lovely = GroupDataService::getData('routine_lovely')?:[];//banner图 $seckill = StoreSeckill::where('is_del',0)->where('status',1)->where('start_time','<',time())->where('stop_time','>',time())->order('sort desc')->select()->toArray(); $data['seckill'] = $seckill; - $data['lovely'] = $lovely; + $data['lovely'] = $lovely[1]; return JsonService::successful($data); } /** @@ -1441,7 +1442,9 @@ class AuthApi extends AuthController{ if($domainTop != 'https') $domain = 'https:'.substr($domain,5,strlen($domain)); if(file_exists($picname)) return JsonService::successful($domain.$picname); else{ - file_put_contents($picname,RoutineCode::getCode($this->userInfo['uid'])); + $res = RoutineCode::getCode($this->userInfo['uid'],$picname); + if($res) file_put_contents($picname,$res); + else return JsonService::fail('二维码生成失败'); } return JsonService::successful($domain.$picname); } @@ -1474,7 +1477,7 @@ class AuthApi extends AuthController{ $banner = $banner[0]; $bargainUser = StoreBargainUser::getBargainUserStatusSuccess(); $data['bargain'] = $bargain; - $data['lovely'] = $lovely; + $data['lovely'] = $lovely[2]; $data['banner'] = $banner; $data['bargainUser'] = $bargainUser; return JsonService::successful($data); @@ -1728,9 +1731,14 @@ class AuthApi extends AuthController{ return JsonService::successful($store_combination); } + /** + * 获取拼团列表顶部图 + * @param int $offset + * @param int $limit + */ public function get_combination_list_banner(){ $lovely = GroupDataService::getData('routine_lovely')?:[];//banner图 - return JsonService::successful($lovely[2]); + return JsonService::successful($lovely[3]); } /** @@ -1949,6 +1957,27 @@ class AuthApi extends AuthController{ return JsonService::successful($content); } + /** + * 产品海报二维码 + * @param int $id + */ + public function product_promotion_code($id = 0){ + if(!$id) return JsonService::fail('参数错误'); + $count = StoreProduct::validWhere()->count(); + if(!$count) return JsonService::fail('参数错误'); + $path = 'public'.DS.'uploads'.DS.'codepath'.DS.'product'; + $codePath = $path.DS.$id.'_'.$this->userInfo['uid'].'.jpg'; + $domain = SystemConfigService::get('site_url').'/'; + if(!file_exists($codePath)){ + if(!is_dir($path)) mkdir($path,0777,true); + $res = RoutineCode::getCode($this->userInfo['uid'],$codePath,[],'/pages/product-con/index?id='.$id,'product_spread'); + if($res) file_put_contents($codePath,$res); + else return JsonService::fail('二维码生成失败'); + } + return JsonService::successful($domain.$codePath); + } + + public function poster($id = 0){ if(!$id) return JsonService::fail('参数错误'); $productInfo = StoreProduct::getValidProduct($id,'store_name,id,price,image,code_path'); @@ -1957,9 +1986,8 @@ class AuthApi extends AuthController{ $path = 'public'.DS.'uploads'.DS.'codepath'.DS.'product'; $codePath = $path.DS.$productInfo['id'].'.jpg'; if(!file_exists($codePath)){ - if(!is_dir($path)) - mkdir($path,0777,true); - file_put_contents($codePath,RoutineCode::getPages('pages/product-con/index?id='.$productInfo['id'])); + if(!is_dir($path)) mkdir($path,0777,true); + $res = file_put_contents($codePath,RoutineCode::getPages('pages/product-con/index?id='.$productInfo['id'])); } $res = StoreProduct::edit(['code_path'=>$codePath],$id); if($res) $productInfo['code_path'] = $codePath; diff --git a/application/routine/controller/Login.php b/application/routine/controller/Login.php index 8a5a76ec..249cb3ba 100644 --- a/application/routine/controller/Login.php +++ b/application/routine/controller/Login.php @@ -30,7 +30,9 @@ class Login extends Controller{ else $data['unionid'] = ''; $data['routine_openid'] = $res['openid']; $data['session_key'] = $res['session_key']; - $data['uid'] = RoutineUser::routineOauth($data); + $dataOauthInfo = RoutineUser::routineOauth($data); + $data['uid'] = $dataOauthInfo['uid']; + $data['page'] = $dataOauthInfo['page']; $data['status'] = RoutineUser::isUserStatus($data['uid']); return JsonService::successful($data); } diff --git a/application/routine/model/routine/RoutineCode.php b/application/routine/model/routine/RoutineCode.php index 672c7753..a34ce35d 100644 --- a/application/routine/model/routine/RoutineCode.php +++ b/application/routine/model/routine/RoutineCode.php @@ -10,22 +10,32 @@ class RoutineCode{ * @param array $color 二维码线条颜色 * @return mixed */ - public static function getCode($uid = 0,$color = array()){ + public static function getCode($uid = 0,$imgUrl = '',$color = array(),$page = '',$thirdType = 'spread'){ $accessToken = RoutineServer::get_access_token(); - $url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=".$accessToken; - if($uid) $data['scene'] = $uid; - else $data['scene'] = 0; - if(empty($color)){ - $color['r'] = 0; - $color['g'] = 0; - $color['b'] = 0; - } - $data['page'] = ''; - $data['width'] = 430; - $data['auto_color'] = false; - $data['line_color'] = $color; - $data['is_hyaline'] = false; - return RoutineServer::curlPost($url,json_encode($data)); + $res = RoutineQrcode::setRoutineQrcodeForever($uid,$thirdType,$page,$imgUrl); + if($res){ + $url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=".$accessToken; + if($uid) $data['scene'] = $res->id; + else $data['scene'] = 0; + if(empty($color)){ + $color['r'] = 0; + $color['g'] = 0; + $color['b'] = 0; + } + $data['page'] = ''; + $data['width'] = 430; + $data['auto_color'] = false; + $data['line_color'] = $color; + $data['is_hyaline'] = false; + $resCode = RoutineServer::curlPost($url,json_encode($data)); + if($resCode){ + $dataQrcode['status'] = 1; + $dataQrcode['url_time'] = time(); + $res = RoutineQrcode::setRoutineQrcodeFind($res->id,$dataQrcode); + if($res) return $resCode; + else return false; + }else return false; + }else return false; } /** diff --git a/application/routine/model/routine/RoutineQrcode.php b/application/routine/model/routine/RoutineQrcode.php new file mode 100644 index 00000000..c7ce2330 --- /dev/null +++ b/application/routine/model/routine/RoutineQrcode.php @@ -0,0 +1,74 @@ +count(); + } + + /** + * 获取小程序二维码信息 + * @param int $id + * @param string $field + * @return array|bool|false|\PDOStatement|string|\think\Model + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\ModelNotFoundException + * @throws \think\exception\DbException + */ + public static function getRoutineQrcodeFindType($id = 0,$field = 'third_type,third_id,page'){ + if(!$id) return false; + $count = self::getRoutineQrcodeFind($id); + if(!$count) return false; + return self::where('id',$id)->where('status',1)->field($field)->find(); + } + + +} \ No newline at end of file diff --git a/application/routine/model/user/RoutineUser.php b/application/routine/model/user/RoutineUser.php index 8e7bcd24..58e321e6 100644 --- a/application/routine/model/user/RoutineUser.php +++ b/application/routine/model/user/RoutineUser.php @@ -7,6 +7,7 @@ namespace app\routine\model\user; +use app\routine\model\routine\RoutineQrcode; use basic\ModelBasic; use traits\ModelTrait; use app\routine\model\user\User; @@ -33,6 +34,16 @@ class RoutineUser extends ModelBasic $routineInfo['session_key'] = $routine['session_key'];//会话密匙 $routineInfo['unionid'] = $routine['unionid'];//用户在开放平台的唯一标识符 $routineInfo['user_type'] = 'routine';//用户类型 + $page = '';//跳转小程序的页面 + $spid = 0;//绑定关系uid + //获取是否有扫码进小程序 + if($routine['spid']){ + $info = RoutineQrcode::getRoutineQrcodeFindType($routine['spid']); + if($info){ + $spid = $info['third_id']; + $page = $info['page']; + } + } // 判断unionid 存在根据unionid判断 if($routineInfo['unionid'] != '' && WechatUser::be(['unionid'=>$routineInfo['unionid']])){ WechatUser::edit($routineInfo,$routineInfo['unionid'],'unionid'); @@ -41,21 +52,18 @@ class RoutineUser extends ModelBasic }else if(WechatUser::be(['routine_openid'=>$routineInfo['routine_openid']])){ //根据小程序openid判断 WechatUser::edit($routineInfo,$routineInfo['routine_openid'],'routine_openid'); $uid = WechatUser::where('routine_openid',$routineInfo['routine_openid'])->value('uid'); - if(!User::be(['uid'=>$uid])){ - $routineInfo = WechatUser::where('uid',$uid)->find(); - User::setRoutineUser($routineInfo); - }else{ - User::updateWechatUser($routineInfo,$uid); - } + User::updateWechatUser($routineInfo,$uid); }else{ $routineInfo['add_time'] = time();//用户添加时间 $routineInfo = WechatUser::set($routineInfo); - if(User::isUserSpread($routine['spid'])) { - $res = User::setRoutineUser($routineInfo,$routine['spid']); //用户上级 - } else $res = User::setRoutineUser($routineInfo); + if(User::isUserSpread($spid)) { + $res = User::setRoutineUser($routineInfo,$spid); //用户上级 + }else $res = User::setRoutineUser($routineInfo); $uid = $res->uid; } - return $uid; + $data['page'] = $page; + $data['uid'] = $uid; + return $data; } /** diff --git a/application/wap/controller/AuthApi.php b/application/wap/controller/AuthApi.php index 336888f6..ab036566 100644 --- a/application/wap/controller/AuthApi.php +++ b/application/wap/controller/AuthApi.php @@ -307,6 +307,7 @@ class AuthApi extends AuthController public function get_user_order_list($type = '',$first = 0, $limit = 8,$search = '') { // StoreOrder::delCombination();//删除拼团未支付订单 + $type=='null' && $type=''; if($search){ $order = StoreOrder::searchUserOrder($this->userInfo['uid'],$search)?:[]; $list = $order == false ? [] : [$order]; @@ -496,10 +497,11 @@ class AuthApi extends AuthController if($news) $model->where('is_new',1); $baseOrder = ''; if($priceOrder) $baseOrder = $priceOrder == 'desc' ? 'price DESC' : 'price ASC'; - if($salesOrder) $baseOrder = $salesOrder == 'desc' ? 'sales DESC' : 'sales ASC'; +// if($salesOrder) $baseOrder = $salesOrder == 'desc' ? 'sales DESC' : 'sales ASC'; + if($salesOrder) $baseOrder = $salesOrder == 'desc' ? 'ficti DESC' : 'ficti ASC'; if($baseOrder) $baseOrder .= ', '; $model->order($baseOrder.'sort DESC, add_time DESC'); - $list = $model->limit($first,$limit)->field('id,store_name,image,sales,price,stock')->select()->toArray(); + $list = $model->limit($first,$limit)->field('id,store_name,image,sales,ficti,price,stock')->select()->toArray(); if($list) setView($this->uid,0,$sId,'search','product',$keyword); return JsonService::successful($list); } @@ -740,4 +742,14 @@ class AuthApi extends AuthController else return JsonService::status('ERROR','砍价失败,请稍后再帮助朋友砍价'); } + /** + * 砍价分享添加次数 + * @param int $bargainId + */ + public function add_bargain_share($bargainId = 0){ + if(!$bargainId) return JsonService::successful(); + StoreBargain::addBargainShare($bargainId); + return JsonService::successful(); + } + } \ No newline at end of file diff --git a/application/wap/controller/Index.php b/application/wap/controller/Index.php index bc7c9977..af02eae6 100644 --- a/application/wap/controller/Index.php +++ b/application/wap/controller/Index.php @@ -7,6 +7,7 @@ namespace app\wap\controller; +use app\wap\model\store\StoreCombination; use app\wap\model\store\StoreSeckill; use app\wap\model\store\StoreCategory; use app\wap\model\store\StoreOrder; @@ -47,7 +48,9 @@ class Index extends AuthController ->where('start_time','<',time())->where('stop_time','>',time()) ->limit($seckillnum)->order('sort desc')->select()->toArray(); foreach($storeSeckill as $key=>$value){ - $round=round($value['sales']/$value['stock'],2)*100; + if($value['stock']>0) + $round = round($value['sales']/$value['stock'],2)*100; + else $round = 100; if($round<100){ $storeSeckill[$key]['round']=$round; }else{ diff --git a/application/wap/controller/Store.php b/application/wap/controller/Store.php index 9f056d05..488c7904 100644 --- a/application/wap/controller/Store.php +++ b/application/wap/controller/Store.php @@ -107,9 +107,11 @@ class Store extends AuthController $storeInfo['userCollect'] = StoreProductRelation::isProductRelation($id,$this->userInfo['uid'],'collect'); list($productAttr,$productValue) = StoreProductAttr::getProductAttrDetail($id); setView($this->userInfo['uid'],$id,$storeInfo['cate_id'],'viwe'); + $urlShare = SystemConfigService::get('site_url').Url::build('wap/Store/detail',['id'=>$id,'spuid'=>$this->uid]); $this->assign([ + 'urlShare'=>$urlShare, 'storeInfo'=>$storeInfo, - 'similarity'=>StoreProduct::cateIdBySimilarityProduct($storeInfo['cate_id'],'id,store_name,image,price,sales',4), + 'similarity'=>StoreProduct::cateIdBySimilarityProduct($storeInfo['cate_id'],'id,store_name,image,price,sales,ficti',4), 'productAttr'=>$productAttr, 'productValue'=>$productValue, 'reply'=>StoreProductReply::getRecProductReply($storeInfo['id']), @@ -176,10 +178,98 @@ class Store extends AuthController return $this->fetch(); } + + public function combination(){ + $where = array(); + $store_combination = StoreCombination::getAll(0,20); + $this->assign('list',$store_combination); + return $this->fetch(); + } //获取列表 public function get_list(){ return JsonService::successful(StoreCombination::get_list(20)); } + + public function combination_detail($id = 0){ + if(!$id) return $this->failed('拼团不存在或已下架'); + $combinationOne = StoreCombination::getCombinationOne($id); + if(!$combinationOne) return $this->failed('拼团不存在或已下架'); + $combinationOne['images'] = json_decode($combinationOne['images'],true); + $combinationOne['userLike'] = StoreProductRelation::isProductRelation($combinationOne['product_id'],$this->userInfo['uid'],'like'); + $combinationOne['like_num'] = StoreProductRelation::productRelationNum($combinationOne['product_id'],'like'); + $combinationOne['userCollect'] = StoreProductRelation::isProductRelation($combinationOne['product_id'],$this->userInfo['uid'],'collect'); + $pink = StorePink::getPinkAll($id);//拼团列表 + setView($this->userInfo['uid'],$id,$combinationOne['cate_id'],'viwe','combination'); + StoreCombination::editIncBrowse($id); + $pindAll = array(); + foreach ($pink as $k=>$v){ + $pink[$k]['count'] = StorePink::getPinkPeople($v['id'],$v['people']); + $pink[$k]['h'] = date('H',$v['stop_time']); + $pink[$k]['i'] = date('i',$v['stop_time']); + $pink[$k]['s'] = date('s',$v['stop_time']); + $pindAll[] = $v['id'];//开团团长ID + } + $user = WechatUser::get($this->uid)->toArray();//用户信息 + $site_name = SystemConfig::getValue('site_name');//网站名称 + $site_logo = SystemConfig::getValue('site_logo');//网站LOGO + $wechat_qrcode = SystemConfig::getValue('wechat_qrcode');//公众号二维码 + $this->assign([ + 'pink'=>$pink, + 'user'=>$user, + 'site_name'=>$site_name, + 'site_logo'=>$site_logo, + 'wechat_qrcode'=>$wechat_qrcode, + 'pindAll'=>$pindAll, + 'storeInfo'=>$combinationOne, + 'reply'=>StoreProductReply::getRecProductReply($combinationOne['product_id']), + 'replyCount'=>StoreProductReply::productValidWhere()->where('product_id',$combinationOne['product_id'])->count(), + 'mer_id' => StoreProduct::where('id',$combinationOne['product_id'])->value('mer_id') + ]); + + return $this->fetch(); + } + + public function combination_order(Request $request){ + $data = UtilService::getMore([ + ['cartId',0], + ['pinkId',0], + ],$request); + + if($data['pinkId']) if(StorePink::getIsPinkUid($data['pinkId'])) return $this->redirect(Url::build('my/order',['uni'=>StoreOrder::getStoreIdPink($data['pinkId'])])); + if($data['pinkId']) if(StoreOrder::getIsOrderPink($data['pinkId'])) return $this->redirect(Url::build('my/order',['uni'=>StoreOrder::getStoreIdPink($data['pinkId'])]));; + $cartId = $data['cartId']; + $pinkId = $data['pinkId']; + if(!is_string($cartId) || !$cartId ) + return $this->failed('请提交购买的商品!'); + $cartGroup = StoreCart::getUserCombinationProductCartList($this->userInfo['uid'],$cartId); + if(count($cartGroup['invalid'])) + return $this->failed($cartGroup['invalid'][0]['productInfo']['store_name'].'已失效!'); + if(!$cartGroup['valid']) return $this->failed('请提交购买的商品!'); + $cartInfo = $cartGroup['valid']; + foreach ($cartInfo as $k=>$cart){ + if($cart['combination_id']){ + $cartInfo[$k]['productInfo']['price'] = StoreCombination::where('id',$cart['combination_id'])->value('price'); + $cartInfo[$k]['productInfo']['image'] = StoreCombination::where('id',$cart['combination_id'])->value('image'); + $cartInfo[$k]['productInfo']['slider_image'] = json_decode(StoreCombination::where('id',$cart['combination_id'])->value('images'),true); + } + } + $priceGroup = StoreOrder::getCombinationOrderPriceGroup($cartInfo); + $other = [ + 'offlinePostage'=>SystemConfigService::get('offline_postage'), + 'integralRatio'=>SystemConfigService::get('integral_ratio') + ]; + $this->assign([ + 'cartInfo'=>$cartInfo, + 'priceGroup'=>$priceGroup, + 'orderKey'=>StoreOrder::cacheOrderInfo($this->userInfo['uid'],$cartInfo,$priceGroup,$other), + 'offlinePostage'=>$other['offlinePostage'], + 'userInfo'=>User::getUserInfo($this->userInfo['uid']), + 'integralRatio'=>$other['integralRatio'], + 'pinkId'=>$pinkId + ]); + + return $this->fetch(); + } /** * 秒杀列表页 * @@ -224,4 +314,75 @@ class Store extends AuthController return $this->fetch(); } + public function cut_list(){ + $bargain = StoreBargain::getList(); + $bargain = StoreBargainUser::getUserList($bargain); + $bargainUser = StoreBargainUser::getBargainUserStatusSuccess(); + $this->assign([ + 'bargain'=>$bargain, + 'bargainUser'=>$bargainUser, + ]); + return $this->fetch(); + } + public function cut_con($id = 0,$bargainUid = 0){ + if(!$id) return $this->failed('参数错误'); + //砍价产品 + $bargain = StoreBargain::getBargainTerm($id); + $bargain['time'] = time(); + $description = htmlspecialchars_decode($bargain['description']); + $rule = isset($bargain['rule']) ? htmlspecialchars_decode($bargain['rule']) : ''; + if(!$bargainUid) + //判断当前登录人是不是砍价 + if(!StoreBargainUser::isBargainUser($id,$this->userInfo['uid'])) + // 参与砍价 + if(!StoreBargainUser::setBargain($id,$this->userInfo['uid'])) return $this->failed('参与失败,请重新参与砍价',Url::build('store/bargain')); + //顶部人数 + StoreBargain::addBargainLook($id); + $lookCount = StoreBargain::getBargainLook()['look'];//观看人数 + $shareCount = StoreBargain::getBargainShare()['share'];//观看人数 + //砍价 + $selfCut = 0; + if(!$bargainUid){ + $res = StoreBargainUserHelp::setBargainUserHelp($id,$bargainUid ? $bargainUid : $this->userInfo['uid'],$this->userInfo['uid']); + if($res) { + $selfCut = 1; + if(!StoreBargainUserHelp::getSurplusPrice($id,$bargainUid ? $bargainUid : $this->userInfo['uid'])){ + $bargainUserTableId = StoreBargainUser::getBargainUserTableId($id,$bargainUid ? $bargainUid : $this->userInfo['uid']); + $bargain = StoreBargain::where('id',$id)->find()->toArray(); + $bargainUser = StoreBargainUser::where('id',$bargainUserTableId)->find()->toArray(); + } + } + $userInfoBargain = $this->userInfo; + }else $userInfoBargain = User::getUserInfo($bargainUid); + //砍价帮 + $bargainUserTableId = StoreBargainUser::setUserBargain($id,$bargainUid ? $bargainUid : $this->userInfo['uid']); + $storeBargainUserHelp = StoreBargainUserHelp::getList($bargainUserTableId,15); + //获取砍价帮总人数 + $count = StoreBargainUserHelp::getBargainUserHelpPeopleCount($id,$bargainUid ? $bargainUid : $this->userInfo['uid']); + //获取用户还剩余的砍价金额 + $price = StoreBargainUserHelp::getSurplusPrice($id,$bargainUid ? $bargainUid : $this->userInfo['uid']); + //获取砍价进度条 + $pricePercent = StoreBargainUserHelp::getSurplusPricePercent($id,$bargainUid ? $bargainUid : $this->userInfo['uid']); + $selfCutPrice = bcsub(bcsub($bargain['price'],$price,2),$bargain['min_price'],2); + //判断当前登录人是否砍价 1 微砍价 2 已砍价 + $userInfoBargainBool = StoreBargainUserHelp::isBargainUserHelpCount($id,$bargainUid,$this->userInfo['uid']) ? 1 : 2; + $this->assign([ + 'userInfoBargainBool'=>$userInfoBargainBool, + 'selfCut'=>$selfCut, + 'userInfoBargain'=>$userInfoBargain, + 'selfCutPrice'=>$selfCutPrice, + 'bargain'=>$bargain, + 'description'=>$description, + 'rule'=>$rule, + 'shareCount'=>$shareCount, + 'lookCount'=>$lookCount, + 'userCount'=>StoreBargainUser::count(), + 'userHelpList'=>$storeBargainUserHelp, + 'count'=>$count, + 'price'=>$price, + 'pricePercent'=>$pricePercent, + 'bargainUid'=>$bargainUid, + ]); + return $this->fetch(); + } } \ No newline at end of file diff --git a/application/wap/view/first/store/detail.html b/application/wap/view/first/store/detail.html index 58554e97..f55f2da6 100644 --- a/application/wap/view/first/store/detail.html +++ b/application/wap/view/first/store/detail.html @@ -16,7 +16,7 @@
¥{$storeInfo.price|floatval}
原价:¥{$storeInfo.ot_price|floatval}
商品编号:{$storeInfo.id} 库存:{$storeInfo.stock}{$storeInfo.unit_name} - 销量:{$storeInfo.sales}{$storeInfo.unit_name}
+ 销量:{$storeInfo.ficti}{$storeInfo.unit_name} {gt name="storeInfo['give_integral']" value="0"}
积分:{$storeInfo.give_integral|floatval} 赠送
{/gt} @@ -40,26 +40,21 @@
{$reply.comment}
{$reply.add_time} {$reply.suk}
- {gt name="replyCount" value="1"} 查看全部评价 + {gt name="replyCount" value="1"} + 查看全部评价 {/gt} {/notempty}
-
详情
+
详情
- - - +