qlg.tsgz.moe/hyhproject/home2/model/GoodsVirtuals.php
2019-09-06 23:53:10 +08:00

174 lines
6.1 KiB
PHP
Executable File

<?php
namespace wstmart\home\model;
use wstmart\common\model\Goods as CGoodsVirtuals;
use think\Db;
use think\Loader;
/**
* ============================================================================
* 虚拟商品卡券模型
*/
class GoodsVirtuals extends CGoodsVirtuals{
/**
* 导入
*/
public function importCards($data){
Loader::import('phpexcel.PHPExcel.IOFactory');
$objReader = \PHPExcel_IOFactory::load(WSTRootPath().json_decode($data)->route.json_decode($data)->name);
$objReader->setActiveSheetIndex(0);
$sheet = $objReader->getActiveSheet();
$rows = $sheet->getHighestRow();
$cells = $sheet->getHighestColumn();
//数据集合
$readData = [];
$shopId = (int)session('WST_USER.shopId');
$goodsId = (int)input('goodsId');
$importNum = 0;
//生成订单
Db::startTrans();
try{
//读取现有的卡券
$goodscards = Db::name('goods_virtuals')->where(['dataFlag'=>1,'goodsId'=>$goodsId])->field('cardNo')->select();
$goodscardsMap = [];
if(count($goodscards)>0){
foreach($goodscards as $v){
$goodscardsMap[] = $v['cardNo'];
}
}
//循环读取每个单元格的数据
for ($row = 2; $row <= $rows; $row++){//行数是以第2行开始
$cards = [];
$cards['shopId'] = $shopId;
$cards['goodsId'] = $goodsId;
$cardNo = trim($sheet->getCell("A".$row)->getValue());
if($cardNo=='')break;//如果某一行第一列为空则停止导入
$cards['cardNo'] = $cardNo;
$cards['cardPwd'] = trim($sheet->getCell("B".$row)->getValue());
$cards['createTime'] = date('Y-m-d H:i:s');
if(in_array($cardNo,$goodscardsMap))continue;
$goodscardsMap[] = $cardNo;
$readData[] = $cards;
$importNum++;
}
if(count($readData)>0){
model('GoodsVirtuals')->saveAll($readData);
$this->updateGoodsStock($goodsId);
}
Db::commit();
return json_encode(['status'=>1,'importNum'=>$importNum]);
}catch (\Exception $e) {
Db::rollback();errLog($e);
return json_encode(WSTReturn('导入商品卡券失败',-1));
}
}
/**
* 删除
*/
public function del(){
$shopId = (int)session('WST_USER.shopId');
$ids = input('ids');
$id = input('id');
if($ids=='')return WSTReturn('请选择要删除的卡券号');
try{
$this->where(['shopId'=>$shopId,'id'=>['in',$ids],'goodsId'=>$id])->update(['dataFlag'=>-1]);
$this->updateGoodsStock($id);
Db::commit();
}catch (\Exception $e) {
Db::rollback();errLog($e);
return WSTReturn('操作失败');
}
return WSTReturn('操作成功',1);
}
/**
* 编辑
*/
public function edit(){
$shopId = (int)session('WST_USER.shopId');
$id = (int)input('id');
//判断卡券是否有效
$rs = $this->where(['id'=>$id,'shopId'=>$shopId,'dataFlag'=>1,'isUse'=>0])->find();
if(empty($rs))return WSTReturn('非法的卡券');
$cardNo = input('cardNo');
$cardPwd = input('cardPwd');
if($cardNo=='' || $cardPwd=='')return WSTReturn('请输入完整卡券信息');
$conts = $this->where(['shopId'=>$shopId,'dataFlag'=>1,'cardNo'=>$cardNo,'id'=>['<>',$id]])->Count();
if($conts>0)return WSTReturn('该卡券号已存在,请重新输入');
$rs->cardNo = $cardNo;
$rs->cardPwd = $cardPwd;
$rs->save();
return WSTReturn('操作成功',1);
}
/**
* 获取虚拟商品库存列表
*/
public function stockByPage(){
$key = input('cardNo');
$id = (int)input('id');
$isUse = (int)input('isUse',-1);
$shopId = (int)session('WST_USER.shopId');
$where = ['shopId'=>$shopId,'goodsId'=>$id,'dataFlag'=>1];
if($key !='')$where['cardNo'] = ['like','%'.$key.'%'];
if(in_array($isUse,[0,1]))$where['isUse'] = $isUse;
$page = $this->field('orderNo,orderId,cardNo,id,cardPwd,isUse')
->where($where)->order('id desc')
->paginate(20)->toArray();
return $page;
}
/**
* 生成卡券号
*/
public function getCardNo($shopId){
$cardNo = date('Ymd').sprintf("%08d", rand(0,99999999));
$conts = $this->where(['shopId'=>$shopId,'dataFlag'=>1,'cardNo'=>$cardNo])->Count();
if($conts==0){
return $cardNo;
}else{
return $this->getCardNo($shopId);
}
}
/**
* 生成卡券
*/
public function add(){
$shopId = (int)session('WST_USER.shopId');
$goodsId = (int)input('goodsId');
//判断商品是否有效
$goods = model('goods')->where(['goodsId'=>$goodsId,'shopId'=>$shopId,'goodsType'=>1])->find();
if(empty($goods))return WSTReturn('非法的卡券商品');
$cardNo = input('cardNo');
$cardPwd = input('cardPwd');
if($cardNo=='' || $cardPwd=='')return WSTReturn('请输入完整卡券信息');
$conts = $this->where(['shopId'=>$shopId,'dataFlag'=>1,'cardNo'=>$cardNo])->Count();
if($conts>0)return WSTReturn('该卡券号已存在,请重新输入');
$data = [];
$data['cardNo'] = $cardNo;
$data['cardPwd'] = $cardPwd;
$data['dataFlag'] = 1;
$data['shopId'] = $shopId;
$data['goodsId'] = $goodsId;
$data['createTime'] = date('Y-m-d H:i:s');
Db::startTrans();
try{
$this->save($data);
$this->updateGoodsStock($goodsId);
Db::commit();
}catch (\Exception $e) {
Db::rollback();errLog($e);
return WSTReturn('新增失败');
}
return WSTReturn('新增成功',1);
}
/**
* 更新商品数量
*/
public function updateGoodsStock($id){
$shopId = (int)session('WST_USER.shopId');
$counts = $this->where(['dataFlag'=>1,'goodsId'=>$id,'shopId'=>$shopId,'isUse'=>0])->Count();
Db::name('goods')->where('goodsId',$id)->setField('goodsStock',$counts);
}
}