You've already forked qlg.tsgz.moe
							
							
		
			
				
	
	
		
			174 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			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);
 | 
						|
    }
 | 
						|
} |