Files
qlg.tsgz.moe/hyhproject/admin/model/Shops.php
2019-09-06 23:53:10 +08:00

1367 lines
60 KiB
PHP
Executable File

<?php
namespace wstmart\admin\model;
use think\Db;
use think\Loader;
use think\Validate;
/**
* ============================================================================
* 店铺业务处理
*/
class Shops extends Base{
/**
* 分页
*/
public function pageQuery($shopStatus=1){
$areaIdPath = input('areaIdPath');
$shopName = input('shopName');
$telephone = input('userPhone');
$catId =(int)input('cat');
$isInvestment = (int)input('isInvestment/d',-1);
$where = [];
$where['s.dataFlag'] = 1;
$where['s.applyStatus'] = 2;
$where['s.shopStatus'] = $shopStatus;
if($catId!="0"){
$where['c.catId'] = $catId;
}
if(in_array($isInvestment,[0,1]))$where['ss.isInvestment'] = $isInvestment;
if($shopName!='')$where['shopName'] = ['like','%'.$shopName.'%'];
if($telephone!='')$where['telephone'] = ['like','%'.$telephone.'%'];
if($areaIdPath !='')$where['areaIdPath'] = ['like',$areaIdPath."%"];
if($catId !='')$where['catId'] = ['like',$catId."%"];
$sort = input('sort');
$order = [];
if($sort!=''){
$sortArr = explode('.',$sort);
$order = $sortArr[0].' '.$sortArr[1];
}
$result=Db::table('__SHOPS__')->alias('s')
->join('__AREAS__ a2','s.areaId=a2.areaId','left')
->join('__USERS__ u','u.userId=s.userId','left')
->join('__SHOP_EXTRAS__ ss','s.shopId=ss.shopId','left')
->join('__CAT_SHOPS__ c','c.shopId=s.shopId','left')
->join('__SHOP_PAY__ sp','sp.shopId=s.shopId','left')
->join('__SHOP_COMMISSION__ sc','sc.shopId=s.shopId','left')
->where($where)
->field('u.loginName,s.shopId,shopSn,shopName,a2.areaName,shopkeeper,telephone,shopAddress,shopCompany,shopAtive,shopStatus,s.applyTime,s.createTime,sp.status,sc.commission')
->order('createTime desc')->group('s.shopId')
->paginate(input('limit/d'))->toArray();
foreach ($result['Rows'] as &$value) {
$catName=db('cat_shops')->alias('a')->join('goods_cats g','g.catId=a.catId')
->where('shopId',$value['shopId'])->field('catName')->select();
$value['catName']="";
if(count($catName)>1){
foreach ($catName as &$v) {
$value['catName']=$value['catName'].$v['catName'].',';
}
}
$goodsNum=db('goods')->alias('g')->where(['shopId'=>$value['shopId'],'isSale'=>1,'dataFlag'=>1])->field('count(goodsId)goodsNum')->select();
$value['goodsNum']="";
foreach ($goodsNum as &$v) {
$value['goodsNum']=$value['goodsNum'].$v['goodsNum'];
}
}
return $result;
}
/**
* 分页>where('a.orgin_id=b.id AND a.orgin_id=c.orgin_id AND b.status='.$status.' AND a.task_name like %'.$serch_val.'%')
*/
public function pageQueryByApply(){
$areaIdPath = input('areaIdPath');
//$catId = input('cat/d');
$shopName = input('shopName');
$investmentStaff = input('investmentStaff');// mark hsf 20180112
$isInvestment = (int)input('isInvestment/d',-1);
$where = [];
$where['s.dataFlag'] = 1;
$where['s.applyStatus'] = ['in',[-1,1,2]];// mark hsf 20180112
if(in_array($isInvestment,[0,1]))$where['ss.isInvestment'] = $isInvestment;
if($shopName!='')$where['shopName'] = ['like','%'.$shopName.'%'];
if($investmentStaff!='')$where['ss.investmentStaff'] = ['like','%'.$investmentStaff.'%'];// mark hsf 20180112
//if($catId !='')$where['catId'] = ['like',$catId."%"];
if($areaIdPath !='')$where['areaIdPath'] = ['like',$areaIdPath."%"];
return Db::table('__SHOPS__')->alias('s')->join('__AREAS__ a2','s.areaId=a2.areaId','left')
->join('__SHOP_EXTRAS__ ss','s.shopId=ss.shopId','left')
->join('__USERS__ u','u.userId=s.userId','left')
//->join('__CAT_SHOPS__ c','c.shopId=s.shopId','left')
->where($where)
->field('u.loginName,s.shopId,applyLinkMan,applyLinkTel,investmentStaff,isInvestment,shopName,a2.areaName,shopAddress,shopCompany,applyTime,applyStatus')
->order('s.applyStatus=1 DESC,s.applyStatus ASC,s.shopId desc')->paginate(input('limit/d'));// mark hsf 20180112
}
/**
* 开店申请列表
*/
public function shopApplyList(){
//$areaIdPath = input('areaIdPath');
$shopName = input('shopName');
$where = [];
$where['s.dataFlag'] = 1;
if($shopName!='')$where['shopName'] = ['like','%'.$shopName.'%'];
//if($areaIdPath !='')$where['areaIdPath'] = ['like',$areaIdPath."%"];
return Db::name('shops')->alias('s')
->join('__USERS__ u','u.userId=s.userId','left')
->where($where)
->field('u.loginName,u.trueName,s.*,from_unixtime(s.createTime) applyTime')
->order('s.status ASC,s.createTime ASC')->paginate(input('limit/d'));// mark hsf 20180112
// return Db::table('__SHOPS__')->alias('s')->join('__AREAS__ a2','s.areaId=a2.areaId','left')
// ->join('__SHOP_EXTRAS__ ss','s.shopId=ss.shopId','left')
// ->join('__USERS__ u','u.userId=s.userId','left')
// //->join('__CAT_SHOPS__ c','c.shopId=s.shopId','left')
// ->where($where)
// ->field('u.loginName,s.shopId,applyLinkMan,applyLinkTel,investmentStaff,isInvestment,shopName,a2.areaName,shopAddress,shopCompany,applyTime,applyStatus')
// ->order('s.applyStatus=1 DESC,s.applyStatus ASC,s.shopId desc')->paginate(input('limit/d'));// mark hsf 20180112
}
/**
* 为店铺添加质保金
*/
public function topDeposit(){
Db::startTrans();
try{
$shopId = input('shopId');
$applyStatus = (int)input('applyStatus');
$cashDeposit = input('addDeposit');//充值质保金金额
$offDeposit = input('offDeposit');//扣除质保金金额
$offCause = input('offCause');//扣除质保金原因
// echo $offCause;die;
// echo $applyStatus;die;
if($applyStatus == 1){
$deposit_info = Db::name('shops_deposit')->where('shopId',$shopId)->field('shopId,payDeposit,cashDeposit')->find();
// dump($deposit_info);die;
$data_deposit['cashDeposit'] = $deposit_info['cashDeposit'] + $cashDeposit;
// echo $data_deposit['cashDeposit'];die;
if($deposit_info['payDeposit'] < $data_deposit['cashDeposit']){
return WSTReturn("质保金大于店铺应交剩余金额",2);
}elseif($deposit_info['payDeposit'] == $data_deposit['cashDeposit']){
$data_deposit['isFinish'] = 1;
$data_deposit['completeTime'] = time();
}
$res = Db::name('shops_deposit')->where('shopId',$shopId)->update($data_deposit);//商户充值质保金
//添加到质保金变动记录表
$detail = [];
$detail['shopId'] = $shopId;
$detail['cashDeposit'] = $cashDeposit;
$detail['payType'] = 3;
$detail['payTime'] = time();
Db::name('shops_deposit_detail')->insert($detail);
}else{
$deposit_info = Db::name('shops_deposit')->where('shopId',$shopId)->field('shopId,payDeposit,cashDeposit')->find();
$data_deposit['cashDeposit'] = $deposit_info['cashDeposit'] - $offDeposit;
$data_deposit['isFinish'] = 2;
Db::name('shops_deposit')->where('shopId',$shopId)->update($data_deposit);//扣除商户质保金
//添加到质保金变动记录表
$detail = [];
$detail['shopId'] = $shopId;
$detail['cashDeposit'] = $offDeposit;
$detail['payType'] = 4;
$detail['payTime'] = time();
Db::name('shops_deposit_detail')->insert($detail);
//为商户发送扣除质保金提醒
$userId = Db::name('shops')->where('shopId',$shopId)->field('userId')->find();
// dump($userId);die;
$messages = [];
$messages['msgType'] = 1;
$messages['sendUserId'] = 1;
$messages['receiveUserId'] = $userId['userId'];
$messages['msgContent'] = $offCause;
$messages['msgStatus'] = 0;
$messages['msgJson'] = '{"from":0,"dataId":"0"}';
$messages['dataFlag'] = 1;
$messages['from'] = 0;
$messages['createTime'] = date('Y-m-d',time());
Db::name('messages')->insert($messages);
}
Db::commit();
return WSTReturn('操作成功',1);
}catch (\Exception $e) {
Db::rollback();errLog($e);
return WSTReturn('操作失败',2);
}
}
/**
* 删除
*/
public function del(){
$id = input('post.id/d');
if($id==1)return WSTReturn('无法删除自营店铺');
Db::startTrans();
try{
$shop = $this->get($id);
$shop->dataFlag = -1;
$result = $shop->save();
WSTUnuseImage('shops','shopImg',$id);
// 店铺申请表的图片标记为删除
$imgArr = model('shopExtras')->field('legalCertificateImg,businessLicenceImg,bankAccountPermitImg,organizationCodeImg,taxRegistrationCertificateImg,taxpayerQualificationImg')->where(['shopId'=>$id])->find();
WSTUnuseImage($imgArr->getData());
if(false !== $result){
//删除推荐店铺
Db::name('recommends')->where(['dataSrc'=>1,'dataId'=>$id])->delete();
//删除店铺与商品分类的关系
Db::name('cat_shops')->where(['shopId'=>$id])->delete();
//删除用户店铺身份
Db::name('users')->where(['userId'=>$shop->userId])->update(['dataFlag'=>-1]);
//下架及下架商品
model('goods')->delByshopId($id);
//删除店铺钩子事件
hook('afterChangeShopStatus',['shopId'=>$id]);
Db::commit();
return WSTReturn("删除成功", 1);
}
}catch (\Exception $e) {
Db::rollback();errLog($e);
}
return WSTReturn('删除失败',-1);
}
/**
* 根据根据userId删除店铺
*/
public function delByUserId($userId){
if($userId==1)return WSTReturn('无法删除自营店铺');
$shop = $this->where('userId',$userId)->find();
if(!$shop)return;
$shop->dataFlag = -1;
$result = $shop->save();
WSTUnuseImage('shops','shopImg',$shop->shopId);
if(false !== $result){
//删除推荐店铺
Db::name('recommends')->where(['dataSrc'=>1,'dataId'=>$shop->shopId])->delete();
//删除店铺与商品分类的关系
Db::name('cat_shops')->where(['shopId'=>$shop->shopId])->delete();
//下架及删除商品
model('goods')->delByshopId($shop->shopId);
//删除店铺钩子事件
hook('afterChangeShopStatus',['shopId'=>$shop->shopId]);
return WSTReturn("删除成功", 1);
}
return WSTReturn('删除失败',-1);
}
/**
* 获取商家入驻资料
*/
public function getShopApply($id){
$shop = $this->alias('s')->join('__SHOP_EXTRAS__ ss','s.shopId=ss.shopId','inner')
->join('__USERS__ u','u.userId=s.userId','inner')
->where('s.shopId',$id)
->find()
->toArray();
//获取经营范围
$goodscats = Db::name('cat_shops')->where('shopId',$id)->select();
$shop['catshops'] = [];
foreach ($goodscats as $v){
$shop['catshops'][$v['catId']] = true;
}
$shop['auxiliary']=db('shop_auxiliary')->where('shopId',$shop['shopId'])->select();
$shop['taxRegistrationCertificateImgVO'] = ($shop['taxRegistrationCertificateImg']!='')?explode(',',$shop['taxRegistrationCertificateImg']):[];
return $shop;
}
/**
* 获取店铺信息
*/
public function getById($id){
$shop = $this->alias('s')->join('__SHOP_EXTRAS__ ss','s.shopId=ss.shopId','inner')
->where('s.shopId',$id)
->find()
->toArray();
//获取经营范围
$goodscats = Db::name('cat_shops')->where('shopId',$id)->select();
$shop['catshops'] = [];
foreach ($goodscats as $v){
$shop['catshops'][$v['catId']] = true;
}
//获取认证类型
$shopAccreds = Db::name('shop_accreds')->where('shopId',$id)->select();
$shop['accreds'] = [];
foreach ($shopAccreds as $v){
$shop['accreds'][$v['accredId']] = true;
}
$shop['taxRegistrationCertificateImgVO'] = ($shop['taxRegistrationCertificateImg']!='')?explode(',',$shop['taxRegistrationCertificateImg']):[];
return $shop;
}
/**
* 生成店铺编号
* @param $key 编号前缀,要控制不要超过int总长度,最好是一两个字母
*/
public function getShopSn($key = ''){
$rs = $this->Max("REPLACE(shopSn,'S','')+''");
if($rs==''){
return $key.'000000001';
}else{
for($i=0;$i<1000;$i++){
$num = (int)str_replace($key,'',$rs);
$shopSn = $key.sprintf("%09d",($num+1));
$ischeck = $this->checkShopSn($shopSn);
if(!$ischeck)return $shopSn;
}
return '';//一直都检测到那就不要强行添加了
}
}
/**
* 检测店铺编号是否存在
*/
public function checkShopSn($shopSn,$shopId=0){
$dbo = $this->where(['shopSn'=>$shopSn,'dataFlag'=>1]);
if($shopId>0)$dbo->where('shopId','<>',$shopId);
$num = $dbo->Count();
if($num==0)return false;
return true;
}
/**
* 处理申请
*/
public function handleApply(){
$data = input('post.');
$shopId=$data['shopId'];
Db::startTrans();
try{
$shops = $this->get($shopId);
if($data['status']==1){
//建立店铺配置信息
$sc = [];
$sc['shopId'] = $shopId;
if(!Db::name('ShopConfigs')->where($sc)->value('shopId')){
Db::name('ShopConfigs')->insert($sc);
}
if(!Db::name('shop_users')->where($sc)->value('shopId')){
$su = [];
$su["shopId"] = $shopId;
$su["userId"] = $shops->userId;
$su["roleId"] = 0;
Db::name('shop_users')->insert($su);
}
if(!Db::name('shop_scores')->where($sc)->value('shopId')){
//建立店铺评分记录
$ss = [];
$ss['shopId'] = $shopId;
Db::name('shop_scores')->insert($ss);
}
Db::name('shops')->where(['shopId'=>$shopId])->update(['status'=>1]);
if($shops->status!=$data['status']){
$userInfo = getUserInfo(['userId'=>$shops->userId],'userLevel,userType');
if($userInfo['userLevel'] == 0 || $userInfo['userType'] == 0){
$user_data['userLevel'] = empty($userInfo['userLevel']) ? 1 : $userInfo['userLevel'];
$user_data['userType'] = empty($userInfo['userType']) ? 1 : $userInfo['userType'];
Db::name('users')->where(['userId'=>$shops->userId])->update($user_data);
}
//发送开店成功短信
$tpl = WSTMsgTemplates('PHONE_USER_SHOP_OPEN_SUCCESS');
if( $tpl['tplContent']!='' && $tpl['status']=='1' && $data['phone']!=''){
$params = ['tpl'=>$tpl,'params'=>['MALL_NAME'=>WSTConf("CONF.mallName"),'LOGIN_NAME'=>$data['userName']]];
$rv = model('admin/LogSms')->sendSMS(0,$shops->userId,$data['phone'],$params,'handleApply');
}
}
//店铺申请成功之后钩子 mark 20180530 by zll
//hook('afterShopHandleApply',['userId'=>$shops->userId]);
}else{
if($shops->status!=$data['status']){
//发送开店失败短信
$tpl = WSTMsgTemplates('PHONE_SHOP_OPEN_FAIL');
if( $tpl['tplContent']!='' && $tpl['status']=='1' && $data['phone']!=''){
$params = ['tpl'=>$tpl,'params'=>['MALL_NAME'=>WSTConf("CONF.mallName"),'REASON'=>$data['applyDesc']]];
$rv = model('admin/LogSms')->sendSMS(0,$shops->userId,$data['phone'],$params,'handleApply');
}
}
}
$this->allowField(true)->save($data,['shopId'=>$shopId]);
Db::commit();
// //店铺申请成功之后钩子 mark 20180530 by zll
// hook('afterShopHandleApply',['userId'=>$shops->userId,'applyStatus'=>$data['applyStatus']]);
return WSTReturn("操作成功", 1);
}catch (\Exception $e) {
Db::rollback();errLog($e);
//return WSTReturn($e->getMessage());
return WSTReturn('操作失败',-1);
//echo $e->getMessage();
}
}
public function handleApplyTest(){
$shopId = input('post.shopId/d',0);
$shops = $this->get($shopId);
$shopAds=input('shopAds');
$auxiliary=explode(',',$shopAds);
if(empty($shops))return WSTReturn('删除失败,该入驻申请不存在');
if($shops->applyStatus==2)return WSTReturn('该入驻申请已通过',1);
$validate = Loader::validate('Shops');
if(!$validate->check(Input('post.')))return WSTReturn($validate->getError());
//判断经营范围
$goodsCatIds = input('post.goodsCatIds');
$accredIds = input('post.accredIds');
if($goodsCatIds=='')return WSTReturn('请选择经营范围');
$data = input('post.');
$data['createTime']=date('Y-m-d');
$data['applyStatus'] = ($data['applyStatus']==2)?2:-1;
if($data['applyStatus']!=2 && $data['applyDesc']==''){
return WSTReturn('请输入审核不通过原因');
}
if($data['applyStatus']==2 && $data['cashDeposit'] ==''){
return WSTReturn('请输入实缴保证金');
}
if($data['applyStatus']==2 && !is_numeric($data['cashDeposit'])){
return WSTReturn('实缴保证金请输入数字');
}
$shopLicense=input('shopLicense');
if((strpos($data['goodsCatIds'],'393')!==false)||$data['goodsCatIds']=='393'){
if($shopLicense==""){
return WSTReturn('食品许可证不能为空');
}
}else{
$data['shopLicense']='';
}
// $goodsCatIds = $data['goodsCatIds'];
if($data['payDeposit'] !=''){
if(!is_numeric($data['payDeposit'])){
return WSTReturn('应缴保证金请输入数字');
}
$payDeposit['payDeposit'] = $data['payDeposit'];
}else{
$payDeposit = Db::name('goods_cats')->where('catId',$goodsCatIds)->field('payDeposit')->find();
}
// dump($payDeposit);die;
$cashDeposit = $data['cashDeposit'];
$isFinish = '';
$completeTime = '';
if($payDeposit['payDeposit'] > $cashDeposit){
$isFinish = 2;
$completeTime = '';
}elseif($payDeposit['payDeposit'] <= $cashDeposit){
$isFinish = 1;
$completeTime = time();
}//elseif($payDeposit['payDeposit'] < $cashDeposit){
//return WSTReturn('通过保证金大于经营类目质保金,请重新输入');
//}
// echo $isFinish;die;
Db::startTrans();
try{
//保存店铺基础信息
$auxiliary_data=[];
$shopAuxiliary = Db::name('shop_auxiliary')->where('shopId='.$shopId)->find();
WSTUseImages(0, $shopAuxiliary['id'], $auxiliary,'shopauxiliary');
Db::name('shop_auxiliary')->where('shopId='.$shopId)->delete();
foreach($auxiliary as $k=>$v){
$auxiliary_data[$k]['shopId']=$shopId;
$auxiliary_data[$k]['auxiliaryImg']=$v;
}
//dump($shopAuxiliary);die;
Db::name('shop_auxiliary')->insertAll($auxiliary_data);
$areaIds = model('Areas')->getParentIs($data['areaId']);
if(!empty($areaIds))$data['areaIdPath'] = implode('_',$areaIds)."_";
$areaIds = model('Areas')->getParentIs($data['bankAreaId']);
if(!empty($areaIds))$data['bankAreaIdPath'] = implode('_',$areaIds)."_";
WSTUnset($data,'id,shopId,userId,dataFlag,goodsCatIds,accredIds,isSelf');
if($data['applyStatus']==2 && $data['shopSn']=='')$data['shopSn'] = $this->getShopSn('S');
$row=db('shop_license')->where('shopId',$shopId)->update(['shopLicense'=>$shopLicense]);
//启用上传图片
WSTUseImages(1, $shopId, $data['shopImg'],'shops','shopImg');
//WSTUseImages(1, $shopId, $shopLicense,'shops','shopLicense');
$this->allowField(true)->save($data,['shopId'=>$shopId,'dataFlag'=>1,'shopStatus'=>1]);
//更改用户身份
if($data['applyStatus']==2){
Db::name('users')->where('userId',$shops->userId)->update(['userType'=>1]);
}
//保存店铺其他信息
$areaIds = model('Areas')->getParentIs($data['businessAreaPath0']);
if(!empty($areaIds))$data['businessAreaPath0'] = implode('_',$areaIds)."_";
//if($data['establishmentDate']=='')unset($data['establishmentDate']);
//if($data['businessEndDate']=='')unset($data['businessEndDate']);
//if($data['businessStartDate']=='')unset($data['businessStartDate']);
//if($data['legalCertificateStartDate']=='')unset($data['legalCertificateStartDate']);
//if($data['legalCertificateEndDate']=='')unset($data['legalCertificateEndDate']);
//if($data['organizationCodeStartDate']=='')unset($data['organizationCodeStartDate']);
//if($data['organizationCodeEndDate']=='')unset($data['organizationCodeEndDate']);
//$data['registeredCapital'] = (float)$data['registeredCapital'];
$seModel = model('ShopExtras');
$Id = $seModel->where(['shopId'=>$shopId])->value('id');
/*
legalCertificateImg
businessLicenceImg
bankAccountPermitImg
organizationCodeImg
taxRegistrationCertificateImg
taxpayerQualificationImg
*/
// 启用上传图片[extras表]
WSTUseImages(1, $Id, $data['legalCertificateImg'], 'shop_extras', 'legalCertificateImg');
WSTUseImages(1, $Id, $data['businessLicenceImg'], 'shop_extras', 'businessLicenceImg');
WSTUseImages(1, $Id, $data['bankAccountPermitImg'], 'shop_extras', 'bankAccountPermitImg');
//WSTUseImages(1, $Id, $data['organizationCodeImg'], 'shop_extras', 'organizationCodeImg');
//WSTUseImages(1, $Id, $data['taxRegistrationCertificateImg'], 'shop_extras', 'taxRegistrationCertificateImg');
//WSTUseImages(1, $Id, $data['taxpayerQualificationImg'], 'shop_extras', 'taxpayerQualificationImg');
$seModel->allowField(true)->save($data,['shopId'=>$shopId]);
//经营范围
Db::name('cat_shops')->where('shopId','=',$shopId)->delete();
$goodsCats = explode(',',$goodsCatIds);
foreach ($goodsCats as $key =>$v){
if((int)$v>0){
Db::name('cat_shops')->insert(['shopId'=>$shopId,'catId'=>$v]);
}
}
//认证类型
Db::name('shop_accreds')->where('shopId','=',$shopId)->delete();
if($accredIds!=''){
$accreds = explode(',',$accredIds);
foreach ($accreds as $key =>$v){
if((int)$v>0){
Db::name('shop_accreds')->insert(['shopId'=>$shopId,'accredId'=>$v]);
}
}
}
if($data['applyStatus']==2){
//建立店铺配置信息
$sc = [];
$sc['shopId'] = $shopId;
Db::name('ShopConfigs')->insert($sc);
$su = [];
$su["shopId"] = $shopId;
$su["userId"] = $shops->userId;
$su["roleId"] = 0;
Db::name('shop_users')->insert($su);
//建立店铺评分记录
$ss = [];
$ss['shopId'] = $shopId;
Db::name('shop_scores')->insert($ss);
//店铺申请通过添加质保金
$deposit = [];
$deposit['shopId'] = $shopId;
$deposit['cashDeposit'] = $cashDeposit;
$deposit['passTime'] = time();
$deposit['payDeposit'] = $payDeposit['payDeposit'];
$deposit['isFinish'] = $isFinish;
$deposit['completeTime'] = $completeTime;
// dump($deposit);die;
Db::name('shops_deposit')->insert($deposit);
//加入商家质保金缴纳记录表
$detail = [];
$detail['shopId'] = $shopId;
$detail['cashDeposit'] = $cashDeposit;
$detail['payType'] = 1;
$detail['payTime'] = time();
Db::name('shops_deposit_detail')->insert($detail);
//店铺申请成功之后钩子 mark 20180530 by zll
hook('afterShopHandleApply',['userId'=>$shops->userId]);
}
if($shops->applyStatus!=$data['applyStatus'])$this->sendMessages($shopId,$shops->userId,$data,'handleApply');
Db::commit();
// //店铺申请成功之后钩子 mark 20180530 by zll
// hook('afterShopHandleApply',['userId'=>$shops->userId,'applyStatus'=>$data['applyStatus']]);
return WSTReturn("操作成功", 1);
}catch (\Exception $e) {
Db::rollback();errLog($e);
//return WSTReturn($e->getMessage());
return WSTReturn('操作失败',-1);
//echo $e->getMessage();
}
}
/**
* 发送信息
*/
public function sendMessages($shopId,$userId,$data,$method){
$user = model('users')->get($userId);
$shops = model('shops')->get($shopId);
if((int)$data['applyStatus']==2){
//如果存在手机则发送手机号码提示
$tpl = WSTMsgTemplates('PHONE_USER_SHOP_OPEN_SUCCESS');
if( $tpl['tplContent']!='' && $tpl['status']=='1' && $data['applyLinkTel']!=''){
$params = ['tpl'=>$tpl,'params'=>['MALL_NAME'=>WSTConf("CONF.mallName"),'LOGIN_NAME'=>$user->loginName]];
$rv = model('admin/LogSms')->sendSMS(0,$userId,$data['applyLinkTel'],$params,$method);
}
//发送邮件
/*
$tpl = WSTMsgTemplates('EMAIL_USER_SHOP_OPEN_SUCCESS');
if( $tpl['tplContent']!='' && $tpl['status']=='1' && $data['applyLinkEmail']){
$find = ['${LOGIN_NAME}','${MALL_NAME}'];
$replace = [$user->loginName,WSTConf("CONF.mallName")];
$sendRs = WSTSendMail($data['applyLinkEmail'],'申请入驻审核通过',str_replace($find,$replace,$tpl['content']));
}
关闭发送邮件 20180203 make cheng */
// 会员发送一条商城消息
$tpl = WSTMsgTemplates('SHOP_OPEN_SUCCESS');
if( $tpl['tplContent']!='' && $tpl['status']=='1'){
$find = ['${LOGIN_NAME}','${MALL_NAME}'];
$replace = [$user->loginName,WSTConf("CONF.mallName")];
WSTSendMsg($userId,str_replace($find,$replace,$tpl['tplContent']),['from'=>0,'dataId'=>$shopId]);
}
//微信消息
if((int)WSTConf('CONF.wxenabled')==1){
$params = [];
$params['SHOP_NAME'] = $shops['shopName'];
$params['APPLY_TIME'] = $shops['applyTime'];
$params['NOW_TIME'] = date('Y-m-d H:i:s');
$params['REASON'] = "申请入驻成功";
WSTWxMessage(['CODE'=>'WX_SHOP_OPEN_SUCCESS','userId'=>$userId,'params'=>$params]);
}
}else{
//如果存在手机则发送手机号码提示
$tpl = WSTMsgTemplates('PHONE_SHOP_OPEN_FAIL');
if( $tpl['tplContent']!='' && $tpl['status']=='1' && $data['applyLinkTel']!=''){
$params = ['tpl'=>$tpl,'params'=>['MALL_NAME'=>WSTConf("CONF.mallName"),'REASON'=>$data['applyDesc']]];
$rv = model('admin/LogSms')->sendSMS(0,$userId,$data['applyLinkTel'],$params,$method);
}
//发送邮件
// $tpl = WSTMsgTemplates('EMAIL_SHOP_OPEN_FAIL');
// if( $tpl['tplContent']!='' && $tpl['status']=='1' && $data['applyLinkEmail']){
// $find = ['${LOGIN_NAME}','${MALL_NAME}','${REASON}'];
// $replace = [$user->loginName,WSTConf("CONF.mallName"),$data['applyDesc']];
// $sendRs = WSTSendMail($data['applyLinkEmail'],'申请入驻失败',str_replace($find,$replace,$tpl['content']));
// }
// 会员发送一条商城消息
$tpl = WSTMsgTemplates('SHOP_OPEN_FAIL');
if( $tpl['tplContent']!='' && $tpl['status']=='1'){
$find = ['${LOGIN_NAME}','${MALL_NAME}','${REASON}'];
$replace = [$user->loginName,WSTConf("CONF.mallName"),$data['applyDesc']];
WSTSendMsg($userId,str_replace($find,$replace,$tpl['tplContent']),['from'=>0,'dataId'=>$shopId]);
}
//微信消息
if((int)WSTConf('CONF.wxenabled')==1){
$params = [];
$params['SHOP_NAME'] = $shops['shopName'];
$params['APPLY_TIME'] = $shops['applyTime'];
$params['NOW_TIME'] = date('Y-m-d H:i:s');
$params['REASON'] = $data['applyDesc'];
WSTWxMessage(['CODE'=>'WX_SHOP_OPEN_FAIL','userId'=>$userId,'params'=>$params]);
}
}
}
/**
* 删除申请
*/
public function delApply(){
$id = input('post.id/d');
$shop = $this->get($id);
if($shop->applyStatus==2)return WSTReturn('通过申请的店铺不允许删除');
Db::startTrans();
try{
//删除店铺信息
Db::name('cat_shops')->where(['shopId'=>$id])->delete();
Db::name('shop_extras')->where(['shopId'=>$id])->delete();
Db::name('shops')->where(['shopId'=>$id])->delete();
WSTUnuseImage('shops','shopImg',$id);
Db::commit();
return WSTReturn("删除成功", 1);
}catch (\Exception $e) {
Db::rollback();errLog($e);
}
return WSTReturn('删除失败',-1);
}
/**
* 新增
*/
public function add(){
$validate = Loader::validate('Shops');
if(!$validate->check(Input('post.')))return WSTReturn($validate->getError());
//判断经营范围
$goodsCatIds = Input('post.goodsCatIds');
$accredIds = Input('post.accredIds');
if($goodsCatIds=='')return WSTReturn('请选择经营范围');
Db::startTrans();
try{
$userId = 0;
$isNewUser = (int)input('post.isNew/d');
if($isNewUser==1){
//创建用户账号
$user = [];
$user['loginName'] = input('post.loginName');
$user['loginPwd'] = input('post.loginPwd');
$ck = WSTCheckLoginKey($user['loginName']);
if($ck['status']!=1)return $ck;
if($user['loginPwd']=='')$user['loginPwd'] = '88888888';
$loginPwd = $user['loginPwd'];
$user["loginSecret"] = rand(1000,9999);
$user['loginPwd'] = md5($user['loginPwd'].$user['loginSecret']);
$user["userType"] = 1;
$user['createTime'] = date('Y-m-d H:i:s');
model('users')->save($user);
$userId = model('users')->userId;
}else{
$userId = (int)input('post.shopUserId/d');
//检查用户是否可用
$shopUser = model('users')->where(['userId'=>$userId,'dataFlag'=>1])->find();
if(empty($shopUser))return WSTReturn('无效的账号信息');
$tmpShop = $this->where(['dataFlag'=>1,'userId'=>$userId])->find();
if(!empty($tmpShop))return WSTReturn('所关联账号已有店铺信息');
$shopUser->userType = 1;
$shopUser->save();
}
if($userId>0){
//创建商家基础信息
$data = input('post.');
$data['createTime'] = date('Y-m-d H:i:s');
$areaIds = model('Areas')->getParentIs($data['areaId']);
if(!empty($areaIds))$data['areaIdPath'] = implode('_',$areaIds)."_";
$areaIds = model('Areas')->getParentIs($data['bankAreaId']);
if(!empty($areaIds))$data['bankAreaIdPath'] = implode('_',$areaIds)."_";
WSTUnset($data,'id,shopId,dataFlag,isSelf');
if($data['shopSn']=='')$data['shopSn'] = $this->getShopSn('S');
$data['userId'] = $userId;
$data['applyStatus'] = 2;
$this->allowField(true)->save($data);
$shopId = $this->shopId;
//启用上传图片
WSTUseImages(1, $shopId, $data['shopImg']);
//保存店铺其他信息
$areaIds = model('Areas')->getParentIs($data['businessAreaPath0']);
if(!empty($areaIds))$data['businessAreaPath'] = implode('_',$areaIds)."_";
//if($data['establishmentDate']=='')unset($data['establishmentDate']);
//if($data['businessEndDate']=='')unset($data['businessEndDate']);
//if($data['businessStartDate']=='')unset($data['businessStartDate']);
//if($data['legalCertificateStartDate']=='')unset($data['legalCertificateStartDate']);
//if($data['legalCertificateEndDate']=='')unset($data['legalCertificateEndDate']);
//if($data['organizationCodeStartDate']=='')unset($data['organizationCodeStartDate']);
// if($data['organizationCodeEndDate']=='')unset($data['organizationCodeEndDate']);
//$data['registeredCapital'] = (float)$data['registeredCapital'];
$data['shopId'] = $shopId;
$seModel = model('ShopExtras');
$seModel->allowField(true)->save($data);
$Id = $seModel->where(['shopId'=>$shopId])->value('id');
// 判断是否有上传图片资料,启用上传图片[extras表]
WSTUseImages(1, $Id, $data['legalCertificateImg'], 'shop_extras');
WSTUseImages(1, $Id, $data['businessLicenceImg'], 'shop_extras');
WSTUseImages(1, $Id, $data['bankAccountPermitImg'], 'shop_extras');
//WSTUseImages(1, $Id, $data['organizationCodeImg'], 'shop_extras');
// WSTUseImages(1, $Id, $data['taxRegistrationCertificateImg'], 'shop_extras');
// WSTUseImages(1, $Id, $data['taxpayerQualificationImg'], 'shop_extras');
//建立店铺配置信息
$sc = [];
$sc['shopId'] = $shopId;
Db::name('ShopConfigs')->insert($sc);
$su = [];
$su["shopId"] = $shopId;
$su["userId"] = $userId;
$su["roleId"] = 0;
Db::name('shop_users')->insert($su);
//建立店铺评分记录
$ss = [];
$ss['shopId'] = $shopId;
Db::name('shop_scores')->insert($ss);
//经营范围
$goodsCats = explode(',',$goodsCatIds);
foreach ($goodsCats as $v){
if((int)$v>0)Db::name('cat_shops')->insert(['shopId'=>$shopId,'catId'=>$v]);
}
//认证类型
if($accredIds!=''){
$accreds = explode(',',$accredIds);
foreach ($accreds as $v){
if((int)$v>0)Db::name('shop_accreds')->insert(['shopId'=>$shopId,'accredId'=>$v]);
}
}
$data['applyStatus'] = 2;
$data['applyDesc'] = '';
$this->sendMessages($shopId,$userId,$data,'add');
}
Db::commit();
return WSTReturn("新增成功", 1);
}catch (\Exception $e) {
Db::rollback();errLog($e);
return WSTReturn('新增失败',-1);
}
}
/**
* 编辑
*/
public function edit(){
$shopId = input('post.shopId/d',0);
$shops = $this->get($shopId);
$shopAds=input('shopAds');
$auxiliary=explode(',',$shopAds);
if(empty($shops) || $shops->dataFlag!=1)return WSTReturn('店铺不存在');
$validate = Loader::validate('Shops');
if(!$validate->check(Input('post.')))return WSTReturn($validate->getError());
//判断经营范围
$goodsCatIds = input('post.goodsCatIds');
$accredIds = input('post.accredIds');
if($goodsCatIds=='')return WSTReturn('请选择经营范围');
Db::startTrans();
try{
$data = input('post.');
$auxiliary_data=[];
$shopAuxiliary = Db::name('shop_auxiliary')->where('shopId='.$shopId)->find();
WSTUseImages(0, $shopAuxiliary['id'], $auxiliary,'shopauxiliary');
Db::name('shop_auxiliary')->where('shopId='.$shopId)->delete();
foreach($auxiliary as $k=>$v){
$auxiliary_data[$k]['shopId']=$shopId;
$auxiliary_data[$k]['auxiliaryImg']=$v;
}
Db::name('shop_auxiliary')->insertAll($auxiliary_data);
//保存店铺基础信息
$areaIds = model('Areas')->getParentIs($data['areaId']);
if(!empty($areaIds))$data['areaIdPath'] = implode('_',$areaIds)."_";
$areaIds = model('Areas')->getParentIs($data['bankAreaId']);
if(!empty($areaIds))$data['bankAreaIdPath'] = implode('_',$areaIds)."_";
WSTUnset($data,'id,shopId,userId,dataFlag,goodsCatIds,accredIds,isSelf,applyStatus,applyDesc');
//启用上传图片
WSTUseImages(1, $shopId, $data['shopImg'],'shops','shopImg');
$this->allowField(true)->save($data,['shopId'=>$shopId,'dataFlag'=>1]);
//保存店铺其他信息
$areaIds = model('Areas')->getParentIs($data['businessAreaPath0']);
if(!empty($areaIds))$data['businessAreaPath'] = implode('_',$areaIds)."_";
//if($data['establishmentDate']=='')unset($data['establishmentDate']);
//if($data['businessEndDate']=='')unset($data['businessEndDate']);
//if($data['businessStartDate']=='')unset($data['businessStartDate']);
//if($data['legalCertificateStartDate']=='')unset($data['legalCertificateStartDate']);
//if($data['legalCertificateEndDate']=='')unset($data['legalCertificateEndDate']);
//if($data['organizationCodeStartDate']=='')unset($data['organizationCodeStartDate']);
//if($data['organizationCodeEndDate']=='')unset($data['organizationCodeEndDate']);
//$data['registeredCapital'] = (float)$data['registeredCapital'];
$seModel = model('ShopExtras');
$Id = $seModel->where(['shopId'=>$shopId])->value('id');
// 启用上传图片[extras表]
WSTUseImages(1, $Id, $data['legalCertificateImg'], 'shop_extras','legalCertificateImg');
WSTUseImages(1, $Id, $data['businessLicenceImg'], 'shop_extras','businessLicenceImg');
WSTUseImages(1, $Id, $data['bankAccountPermitImg'], 'shop_extras','bankAccountPermitImg');
//WSTUseImages(1, $Id, $data['organizationCodeImg'], 'shop_extras','organizationCodeImg');
//WSTUseImages(1, $Id, $data['taxRegistrationCertificateImg'], 'shop_extras','taxRegistrationCertificateImg');
// WSTUseImages(1, $Id, $data['taxpayerQualificationImg'], 'shop_extras','taxpayerQualificationImg');
$seModel->allowField(true)->save($data,['shopId'=>$shopId]);
//经营范围
Db::name('cat_shops')->where('shopId','=',$shopId)->delete();
$goodsCats = explode(',',$goodsCatIds);
foreach ($goodsCats as $key =>$v){
if((int)$v>0){
Db::name('cat_shops')->insert(['shopId'=>$shopId,'catId'=>$v]);
}
}
//认证类型
Db::name('shop_accreds')->where('shopId','=',$shopId)->delete();
if($accredIds!=''){
$accreds = explode(',',$accredIds);
foreach ($accreds as $key =>$v){
if((int)$v>0){
Db::name('shop_accreds')->insert(['shopId'=>$shopId,'accredId'=>$v]);
}
}
}
if((int)input('shopStatus')!=1){
//店铺状态不正常就停用所有的商品
model('goods')->unsaleByshopId($shopId);
}
//删除店铺钩子事件
hook('afterChangeShopStatus',['shopId'=>$shopId]);
Db::commit();
return WSTReturn("编辑成功", 1);
}catch (\Exception $e) {
Db::rollback();errLog($e);
return WSTReturn('编辑失败',-1);
}
}
/**
* 获取所有店铺id
*/
public function getAllShopId(){
return $this->where(['dataFlag'=>1,'shopStatus'=>1])->column('shopId');
}
/**
* 根据店铺ID获取店铺名称
*/
public function upShopName(){
$shopId = input('shopId/d');
// $shopId = 1;
$res = Db::name('shops')->where('shopId',$shopId)->field('shopId,shopName')->find();
// dump($res);die;
return $res;
}
/**
* 搜索经验范围的店铺
*/
public function searchQuery(){
$goodsCatatId = (int)input('post.goodsCatId');
if($goodsCatatId<=0)return [];
$key = input('post.key');
$where = [];
$where['dataFlag'] = 1;
$where['shopStatus'] = 1;
$where['catId'] = $goodsCatatId;
if($key!='')$where['shopName|shopSn'] = ['like','%'.$key.'%'];
return $this->alias('s')->join('__CAT_SHOPS__ cs','s.shopId=cs.shopId','inner')
->where($where)->field('shopName,s.shopId,shopSn')->select();
}
/**
* 自营自动登录
*/
public function selfLogin($id){
$shopId = $id;
$userid = $this->where(["dataFlag"=>1, "status"=>1,"shopId"=>$shopId])->field('userId')->find();
if(!empty($userid['userId'])){
$userId = $userid['userId'];
//获取用户信息
$u = new Users();
$rs = $u->getById($userId);
//获取用户等级
$rrs = WSTUserRank($rs['userTotalScore']);
$rs['rankId'] = $rrs['rankId'];
$rs['rankName'] = $rrs['rankName'];
$rs['userrankImg'] = $rrs['userrankImg'];
$ip = request()->ip();
$u->where(["userId"=>$userId])->update(["lastTime"=>date('Y-m-d H:i:s'),"lastIP"=>$ip]);
//加载店铺信息
$shops= new Shops();
$shop = $shops->where(["userId"=>$userId,"dataFlag" =>1])->find();
if(!empty($shop))$rs = array_merge($shop->toArray(),$rs->toArray());
//记录登录日志
$data = array();
$data["userId"] = $userId;
$data["loginTime"] = date('Y-m-d H:i:s');
$data["loginIp"] = $ip;
Db::name('log_user_logins')->insert($data);
if($rs['userPhoto']=='')$rs['userPhoto'] = WSTConf('CONF.userLogo');
session('WST_USER',$rs);
return WSTReturn("","1");
}
return WSTReturn("",-1);
}
/**
* 查询店铺佣金扣点
*/
public function commission($shopId){
$obj = Db::name('shops')->alias('s')
->join('__SHOP_COMMISSION__ sc','sc.shopId=s.shopId','left')->where('s.shopId',$shopId)->field('s.shopId,sc.commission,sc.userId,sc.userName,sc.usersPhone,sc.deductMoney')->find();
// dump($obj);die;
return $obj;
}
/**
* 设置店铺佣金扣点
*/
public function upCommission(){
$data['shopId'] = input('shopId/d');
$data['commission'] = input('commission');
$data['userName'] = input('userName');
//$data['userId'] = input('userId/d');
$data['usersPhone'] = input('usersPhone');
$user = Db::name('users')->where(['loginName|userPhone'=>$data['usersPhone']])->field('userId')->find();
if(!$user){
return WSTReturn('该职员不存在',-1);die;
}
$data['userId'] = $user['userId'];
$com = Db::name('shop_commission')->where('shopId',$data['shopId'])->find();
if($com){
$result = Db::name('shop_commission')->where('shopId',$data['shopId'])->update(['commission'=>$data['commission'],'usersPhone'=>$data['usersPhone'],'userName'=>$data['userName'],'userId'=>$data['userId']]);
}else{
$result = Db::name('shop_commission')->insert($data);
}
if($result){
return WSTReturn("操作成功",1);
}else{
return WSTReturn("操作失败",-1);
}
}
/**
* 查询业务员信息
*/
public function staffs(){
$userName = input('userName');
$data = Db::name('users')->where(['loginName'=>$userName,'userStatus'=>1,'dataFlag'=>1])->field('userPhone,userId')->find();
if($data){
return $data;
}else{
return WSTReturn('该职员不存在',-1);
}
}
/**
* 导出订单
*/
public function toExport($shopStatus=1){
$name="店铺列表";
$areaIdPath = input('areaIdPath');
$shopName = input('shopName');
$telephone = input('userPhone');
$catId =(int)input('cat');
$isInvestment = (int)input('isInvestment/d',-1);
$where = [];
$where['s.dataFlag'] = 1;
$where['s.applyStatus'] = 2;
$where['s.shopStatus'] = $shopStatus;
if($catId!="0"){
$where['c.catId'] = $catId;
}
if(in_array($isInvestment,[0,1]))$where['ss.isInvestment'] = $isInvestment;
if($shopName!='')$where['shopName'] = ['like','%'.$shopName.'%'];
if($telephone!='')$where['telephone'] = ['like','%'.$telephone.'%'];
if($areaIdPath !='')$where['areaIdPath'] = ['like',$areaIdPath."%"];
if($catId !='')$where['catId'] = ['like',$catId."%"];
$sort = input('sort');
$order = [];
if($sort!=''){
$sortArr = explode('.',$sort);
$order = $sortArr[0].' '.$sortArr[1];
}
$list=Db::table('__SHOPS__')->alias('s')
->join('__AREAS__ a2','s.areaId=a2.areaId','left')
->join('__USERS__ u','u.userId=s.userId','left')
->join('__SHOP_EXTRAS__ ss','s.shopId=ss.shopId','left')
->join('__CAT_SHOPS__ c','c.shopId=s.shopId','left')
->join('__SHOP_PAY__ sp','sp.shopId=s.shopId','left')
->where($where)
->field('u.loginName,s.shopId,shopSn,shopName,a2.areaName,shopkeeper,telephone,shopAddress,shopCompany,shopAtive,shopStatus,s.applyTime,s.createTime,sp.status')
->order('createTime desc')->group('s.shopId')
->select();
foreach ($list as &$value) {
$catName=db('cat_shops')->alias('a')->join('goods_cats g','g.catId=a.catId')
->where('shopId',$value['shopId'])->field('catName')->select();
$value['catName']="";
if(count($catName)>1){
foreach ($catName as &$v) {
$value['catName']=$value['catName'].$v['catName'].',';
}
}
$goodsNum=db('goods')->alias('g')->where(['shopId'=>$value['shopId'],'isSale'=>1,'dataFlag'=>1])->field('count(goodsId)goodsNum')->select();
$value['goodsNum']="";
foreach ($goodsNum as &$v) {
$value['goodsNum']=$value['goodsNum'].$v['goodsNum'];
}
}
//dump($list);die;
Loader::import('phpexcel.PHPExcel.IOFactory');
$objPHPExcel = new \PHPExcel();
// 设置excel文档的属性
// $objPHPExcel->getProperties()->setCreator("heyuanhui")//创建人
// ->setLastModifiedBy("heyuanhui")//最后修改人
// ->setTitle($name)//标题
// ->setSubject($name)//题目
// ->setDescription($name)//描述
// ->setKeywords("订单")//关键字
// ->setCategory("Test result file");//种类
// 开始操作excel表
$objPHPExcel->setActiveSheetIndex(0);
// 设置工作薄名称
$objPHPExcel->getActiveSheet()->setTitle(iconv('gbk', 'utf-8', 'Sheet'));
// 设置默认字体和大小
$objPHPExcel->getDefaultStyle()->getFont()->setName(iconv('gbk', 'utf-8', ''));
$objPHPExcel->getDefaultStyle()->getFont()->setSize(11);
$styleArray = array(
'font' => array(
'bold' => true,
'color'=>array(
'argb' => 'ffffffff',
)
),
'borders' => array (
'outline' => array (
'style' => \PHPExcel_Style_Border::BORDER_THIN, //设置border样式
'color' => array ('argb' => 'FF000000'), //设置border颜色
)
)
);
//设置宽
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('O')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('P')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('Q')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('R')->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension('S')->setWidth(12);
$objPHPExcel->getActiveSheet()->getStyle('A1:S1')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle('A1:S1')->getFill()->getStartColor()->setARGB('333399');
$objPHPExcel->getActiveSheet()
->setCellValue('A1', '用户名称')
->setCellValue('B1', '店铺ID')
->setCellValue('C1', '店铺编号')
->setCellValue('D1', '店铺名称')
->setCellValue('E1', '地区名称')
->setCellValue('F1', '店主名称')
->setCellValue('G1', '店主联系电话')
->setCellValue('H1', '店铺地址')
->setCellValue('I1', '公司名称')
->setCellValue('J1', '门店状态')
->setCellValue('K1', '门店状态')
->setCellValue('L1', '商品数量')
->setCellValue('M1', '申请时间')
->setCellValue('N1', '通过时间')
->setCellValue('O1', '经营类目');
$objPHPExcel->getActiveSheet()->getStyle('A1:S1')->applyFromArray($styleArray);
for ($row = 0; $row < count($list); $row++){
$i = $row+2;
$objPHPExcel->getActiveSheet()
->setCellValue('A'.$i, $list[$row]['loginName'])
->setCellValue('B'.$i, $list[$row]['shopId'])
->setCellValue('C'.$i, $list[$row]['shopSn'])
->setCellValue('D'.$i, $list[$row]['shopName'])
->setCellValue('E'.$i, $list[$row]['areaName'])
->setCellValue('F'.$i, $list[$row]['shopkeeper'])
->setCellValue('G'.$i, $list[$row]['telephone'])
->setCellValue('H'.$i, $list[$row]['shopAddress'])
->setCellValue('I'.$i, $list[$row]['shopCompany'])
->setCellValue('J'.$i, $list[$row]['shopAtive'])
->setCellValue('K'.$i, $list[$row]['shopStatus'])
->setCellValue('L'.$i, $list[$row]['goodsNum'])
->setCellValue('M'.$i, $list[$row]['applyTime'])
->setCellValue('N'.$i, $list[$row]['createTime'])
->setCellValue('O'.$i, $list[$row]['catName']);
}
//输出EXCEL格式
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
// 从浏览器直接输出$filename
header('Content-Type:application/csv;charset=UTF-8');
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-excel;");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");
header('Content-Disposition: attachment;filename="'.$name.'.xls"');
header("Content-Transfer-Encoding:binary");
$objWriter->save('php://output');
}
//商家登录
public function detailByPage(){
$where='s.shopStatus=1 AND s.dataFlag=1';
$start=input('startDate');
$end=input('endDate');
$nonTime=input('nonTime');
if($nonTime){
$nonlogTime=date('Y-m-d H:i:s',strtotime('-'.$nonTime.'day'));
$where.=' AND l.nonlogTime<"'.$nonlogTime.'"';
}
//dump($nonlogTime);
// if($start!='' && $end!=''){
// $start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
// $end = date('Y-m-d 23:59:59',strtotime(input('endDate')));
// $where.=' AND lo.loginTime BETWEEN "'.$start.'" AND "'.$end.'"';
// }else if($start!=''){
// $start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
// $where.= ' AND lo.loginTime>="'.$start.'"';
// }else if($end!=''){
// $end = date('Y-m-d 00:00:00',strtotime(input('endDate')));
// $where.= ' AND lo.loginTime<="'.$end.'"';
// }
// $result=Db::query('SELECT
// s.userId,s.shopName,l.loginNum,b.goodsNum
// FROM
// '.config('database.prefix').'shops s
// LEFT JOIN
// (SELECT COUNT(*) loginNum,userId FROM '.config('database.prefix').'log_user_logins a GROUP BY a.userId) l on l.userId=s.userId
// LEFT JOIN
// (SELECT COUNT(*) goodsNum,shopId FROM '.config('database.prefix').'goods g GROUP BY g.shopId) b on b.shopId=s.shopId
// ');
$result=Db::table('__SHOPS__')->alias('s')
//->join('__LOG_USER_LOGINS__ a','s.userId=a.userId','left')
->join('(SELECT COUNT(*) loginNum,userId,loginTime,MAX(loginTime) nonlogTime FROM __LOG_USER_LOGINS__ a GROUP BY a.userId) l','s.userId=l.userId','left')
->join('(SELECT COUNT(*) goodsNum,shopId,isSale FROM __GOODS__ g WHERE g.isSale=1 GROUP BY g.shopId) go','s.shopId=go.shopId','left')
->join('__LOG_USER_LOGINS__ lo','s.userId=lo.userId','left')
// ->join('(SELECT COUNT(*) orderNum,shopId,orderStatus FROM __ORDERS__ o GROUP BY o.shopId) oo','s.shopId=oo.shopId','left')
// ->join('(SELECT COUNT(*) orderNums,shopId,orderStatus FROM __ORDERS__ o2 GROUP BY o2.orderStatus) od','s.shopId=od.shopId','left')
//->whereTime('l.loginTime','between',[$start,$end])
->where($where)
->field('s.shopName,l.loginNum,go.goodsNum,s.shopId,s.shopCompany,shopkeeper,telephone,applyTime,nonlogTime')
->order('l.loginNum desc')
->group('s.shopId')
->paginate(input('limit/d'))->toArray();
//dump(db::getlastsql());
//dump($result);
foreach ($result['Rows'] as &$value) {
if($end=='')$end = date('Y-m-d 23:59:59',strtotime("now"));
if($start=='')$start = date('Y-m-d 23:59:59',strtotime("0"));
$value['nonTime']=sprintf("%.0f",(strtotime(date('Y-m-d H:i:s'))-strtotime($value['nonlogTime']))/86400);
$value['successOrder']=db('orders')->whereTime('createTime','between',[$start,$end])
->where(['shopId'=>$value['shopId'],'orderStatus'=>2,'dataFlag'=>1])->count('shopId');
$value['cancelOrder']=db('orders')->whereTime('createTime','between',[$start,$end])
->where(['shopId'=>$value['shopId'],'orderStatus'=>-1,'dataFlag'=>1])->count('shopId');
$value['nonpayOrder']=db('orders')->whereTime('createTime','between',[$start,$end])
->where(['shopId'=>$value['shopId'],'orderStatus'=>-2,'dataFlag'=>1])->count('shopId');
$value['deliveredOrder']=db('orders')->whereTime('createTime','between',[$start,$end])
->where(['shopId'=>$value['shopId'],'orderStatus'=>1,'dataFlag'=>1])->count('shopId');
}
// $result=Db::table('__SHOPS__')->alias('s')
// ->join('__LOG_USER_LOGINS__ a','s.userId=a.userId','left')
// ->join('__GOODS__ go','s.shopId=go.shopId','left')
// ->where($where)
// ->field('a.userId,shopName,count(a.userId)logNum,count(go.shopId)goodsNum')
// ->order('logNum desc')->group('a.userId,go.shopId,s.shopId,s.userId,a.userId')
// ->paginate(input('limit/d'))->toArray();
return $result;
}
/**
* 导出商家登录活跃数据订单
*/
public function toExports(){
$name="商家活跃信息列表";
$start=input('startDate');
$end=input('endDate');
$nonTime=input('nonTime');
$where='s.shopStatus=1 AND s.dataFlag=1';
if($nonTime){
$nonlogTime=date('Y-m-d H:i:s',strtotime('-'.$nonTime.'day'));
$where.=' AND l.nonlogTime<"'.$nonlogTime.'"';
}
// if($start!='' && $end!=''){
// $start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
// $end = date('Y-m-d 23:59:59',strtotime(input('endDate')));
// $where.=' AND lo.loginTime BETWEEN "'.$start.'" AND "'.$end.'"';
// }else if($start!=''){
// $start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
// $where.= ' AND lo.loginTime>="'.$start.'"';
// }else if($end!=''){
// $end = date('Y-m-d 00:00:00',strtotime(input('endDate')));
// $where.= ' AND lo.loginTime<="'.$end.'"';
// }
$list=Db::query('SELECT
s.shopId,s.shopName,l.loginNum,b.goodsNum,l.nonlogTime,s.shopCompany,s.applyTime,s.shopkeeper,s.telephone
FROM
'.config('database.prefix').'shops s
LEFT JOIN
(SELECT COUNT(*) loginNum,userId,MAX(loginTime) nonlogTime FROM '.config('database.prefix').'log_user_logins a GROUP BY a.userId) l on l.userId=s.userId
LEFT JOIN
(SELECT COUNT(*) goodsNum,shopId FROM '.config('database.prefix').'goods g WHERE g.isSale=1 GROUP BY g.shopId) b on b.shopId=s.shopId
LEFT JOIN
(SELECT userId,loginTime FROM '.config('database.prefix').'log_user_logins)lo on lo.userId=s.userId
WHERE '.$where.'
GROUP BY s.shopId
ORDER BY l.loginNum DESC');
foreach ($list as &$value) {
if($end=='')$end = date('Y-m-d 23:59:59',strtotime("now"));
if($start=='')$start = date('Y-m-d 23:59:59',strtotime("0"));
$value['nonTime']=sprintf("%.0f",(strtotime(date('Y-m-d H:i:s'))-strtotime($value['nonlogTime']))/86400);
$value['successOrder']=db('orders')->whereTime('createTime','between',[$start,$end])
->where(['shopId'=>$value['shopId'],'orderStatus'=>2,'dataFlag'=>1])->count('shopId');
$value['cancelOrder']=db('orders')->whereTime('createTime','between',[$start,$end])
->where(['shopId'=>$value['shopId'],'orderStatus'=>-1,'dataFlag'=>1])->count('shopId');
$value['nonpayOrder']=db('orders')->whereTime('createTime','between',[$start,$end])
->where(['shopId'=>$value['shopId'],'orderStatus'=>-2,'dataFlag'=>1])->count('shopId');
$value['deliveredOrder']=db('orders')->whereTime('createTime','between',[$start,$end])
->where(['shopId'=>$value['shopId'],'orderStatus'=>1,'dataFlag'=>1])->count('shopId');
}
Loader::import('phpexcel.PHPExcel.IOFactory');
$objPHPExcel = new \PHPExcel();
// 设置excel文档的属性
// $objPHPExcel->getProperties()->setCreator("heyuanhui")//创建人
// ->setLastModifiedBy("heyuanhui")//最后修改人
// ->setTitle($name)//标题
// ->setSubject($name)//题目
// ->setDescription($name)//描述
// ->setKeywords("订单")//关键字
// ->setCategory("Test result file");//种类
// 开始操作excel表
$objPHPExcel->setActiveSheetIndex(0);
// 设置工作薄名称
$objPHPExcel->getActiveSheet()->setTitle(iconv('gbk', 'utf-8', 'Sheet'));
// 设置默认字体和大小
$objPHPExcel->getDefaultStyle()->getFont()->setName(iconv('gbk', 'utf-8', ''));
$objPHPExcel->getDefaultStyle()->getFont()->setSize(11);
$styleArray = array(
'font' => array(
'bold' => true,
'color'=>array(
'argb' => 'ffffffff',
)
),
'borders' => array (
'outline' => array (
'style' => \PHPExcel_Style_Border::BORDER_THIN, //设置border样式
'color' => array ('argb' => 'FF000000'), //设置border颜色
)
)
);
//设置宽
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('O')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('P')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('Q')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('R')->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension('S')->setWidth(12);
$objPHPExcel->getActiveSheet()->getStyle('A1:S1')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle('A1:S1')->getFill()->getStartColor()->setARGB('333399');
$objPHPExcel->getActiveSheet()
->setCellValue('A1', '店铺名称')
->setCellValue('B1', '公司名称')
->setCellValue('C1', '注册时间')
->setCellValue('D1', '联系人姓名')
->setCellValue('E1', '联系人电话')
->setCellValue('F1', '未登录天数')
->setCellValue('G1', '登录频次')
->setCellValue('H1', '商品数量')
->setCellValue('I1', '已成功订单')
->setCellValue('J1', '已取消订单')
->setCellValue('K1', '未付款订单')
->setCellValue('L1', '已发货订单');
$objPHPExcel->getActiveSheet()->getStyle('A1:S1')->applyFromArray($styleArray);
for ($row = 0; $row < count($list); $row++){
$i = $row+2;
$objPHPExcel->getActiveSheet()
->setCellValue('A'.$i, $list[$row]['shopName'])
->setCellValue('B'.$i, $list[$row]['shopCompany'])
->setCellValue('C'.$i, $list[$row]['applyTime'])
->setCellValue('D'.$i, $list[$row]['shopkeeper'])
->setCellValue('E'.$i, $list[$row]['telephone'])
->setCellValue('F'.$i, $list[$row]['nonTime'])
->setCellValue('G'.$i, $list[$row]['loginNum'])
->setCellValue('H'.$i, $list[$row]['goodsNum'])
->setCellValue('I'.$i, $list[$row]['successOrder'])
->setCellValue('J'.$i, $list[$row]['cancelOrder'])
->setCellValue('K'.$i, $list[$row]['nonpayOrder'])
->setCellValue('L'.$i, $list[$row]['deliveredOrder']);
}
//输出EXCEL格式
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
// 从浏览器直接输出$filename
header('Content-Type:application/csv;charset=UTF-8');
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-excel;");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");
header('Content-Disposition: attachment;filename="'.$name.'.xls"');
header("Content-Transfer-Encoding:binary");
$objWriter->save('php://output');
}
}