2019-09-06 23:53:10 +08:00

1367 lines
60 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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');
}
}