文件
mashangyoujiu/Application/Common/Model/DeliveryTemplateModel.class.php

245 行
7.6 KiB
PHP
可执行文件

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

<?php
/**
* Created by PhpStorm.
* User: ruodc
* Date: 2020/3/1
* Time: 9:29
*/
namespace Common\Model;
//[1.8.80]
/**
* Class DeliveryTemplateModel
* @package Common\Model
*/
class DeliveryTemplateModel extends BaseModel
{
protected $tableName = 'delivery_template';
protected $fields = array(
'id',// int(11) NOT NULL AUTO_INCREMENT,
'title',// varchar(45) NOT NULL COMMENT '模板名',
'type',// tinyint(1) NOT NULL COMMENT '模板类型:1免运费 2按件数 3按重量 4统一运费',
'status',// tinyint(1) NOT NULL DEFAULT '1' COMMENT '模板状态:1开启 2关闭 3删除',
'add_time',// int(11) NOT NULL COMMENT '添加时间',
'merchant_id',// int(11) NOT NULL COMMENT '所属商户ID',
'store_id',// int(11) NOT NULL COMMENT '所属门店ID',
'state',// tinyint(1) DEFAULT '1' COMMENT '1正常 0删除'
);
/**
* 当前门店配送模板信息
* @param $storeId 门店id
* @param $startTime 筛选的开始时间
* @param $endTime 筛选的结束时间
* @param $templateName 筛选的模板名称
* @param $currentPage 当前页面
* @param $pageSize 页面显示数量
* @return mixed
*/
public function displayDistributionTemInfo($storeId, $startTime, $endTime, $templateName, $currentPage, $pageSize)
{
$map = array(
'store_id' => $storeId,
'state' => 1,
);
if ($startTime != null) {
$map['add_time'] = array('between', array($startTime, $endTime));
}
if ($templateName != null) {
$map['title'] = array('like', '%' . $templateName . '%');
}
$temData = $this->getSelect($map, 'id,title,add_time,type', 'add_time desc', $currentPage . ',' . $pageSize);
foreach ($temData as &$val) {
$val['add_time'] = date('Y-m-d H:i:s', $val['add_time']);
}
return $temData;
}
/**
* 获取当前门店的已有模板
* @param $storeId 门店ID
* @return mixed
*/
public function getStoreFreightTem($storeId)
{
$temData = $this->distinct(true)->field('id,title,type')
->where(array('store_id' => $storeId, 'status' => 1, 'state' => 1))
->select();
return $temData;
}
/**
* 添加/编辑 运费模板
* @param $data
* @param int $temId 编辑状态存在的ID
* @return bool|mixed
*/
public function addDistributionTem($data, $temId = 0)
{
if ($temId != 0) {
$ret = $this->where(array('id' => $temId))->setField($data);
} else {
$ret = $this->add($data);
}
return $ret;
}
/**
* 删除模板
* 模板ID
* @param $temId
* @return array
*/
public function deleteTemplate($temId)
{
$TemplateAreaModel = new TemplateAreaModel();
$map = array(
'template_id' => $temId,
);
$TemplateAreaModel->updateOrder($map, ['state'=> 0]);//删除地址
$thisTime = time();
$GroupModel = new RetailGroupModel();
$SpikeModel = new RetailSpikeModel();
$GoodsModel = new RetailGoodsModel();
//删除普通商品
$map = array(
'delivery_template_id' => $temId,
'status' => array('in', '0,1'),
);
$goods = $GoodsModel->getSelect($map, 'id,goods_name,delivery_type');
foreach ($goods as $v) {
$type = $this->handleDeliveryType($v['delivery_type']);
if(!$type){
return array(
'status' => 0,
'msg' => "商品-{$v['goods_name']}-正在使用该模板,并且只支持快递发货,请先修改该商品配送方式后再继续进行删除模板操作",
);
}
$map = array(
'id' => $v['id'],
);
$data = array(
'delivery_template_id' => null,
'delivery_type' => $type,
);
$GoodsModel->updateOrder($map, $data);
}
//删除拼团
$gMap = array(
'delivery_template_id' => $temId,
'acttype' => 1,
'starttime' => array('elt', $thisTime),
'endtime' => array('gt', $thisTime),
);
$group = $GroupModel->getSelect($gMap, 'id,actname,send_type');
foreach ($group as $v) {
$type = $this->handleDeliveryType($v['send_type']);
if(!$type){
return array(
'status' => 0,
'msg' => "拼团活动-{$v['actname']}-正在使用该模板,并且只支持快递发货,请先修改该拼团配送方式后再继续进行删除模板操作",
);
}
$map = array(
'id' => $v['id'],
);
$data = array(
'delivery_template_id' => null,
'send_type' => $type,
);
$GroupModel->updateOrder($map, $data);
}
//删除秒杀
$sMap = array(
'delivery_template_id' => $temId,
'acttype' => 1,
'starttime' => array('elt', $thisTime),
'endtime' => array('gt', $thisTime),
);
$spike = $SpikeModel->getSelect($sMap, 'id,active_title,send_type');
foreach ($spike as $v) {
$type = $this->handleDeliveryType($v['send_type']);
if(!$type){
return array(
'status' => 0,
'msg' => "秒杀活动-{$v['actname']}-正在使用该模板,并且只支持快递发货,请先修改该秒杀配送方式后再继续进行删除模板操作",
);
}
$map = array(
'id' => $v['id'],
);
$data = array(
'delivery_template_id' => null,
'send_type' => $type,
);
$SpikeModel->updateOrder($map, $data);
}
$data = array(
'state' => 0
);
$map = array(
'id' => $temId,
);
$this->updateOrder($map, $data);
return array(
'status' => 1,
'msg' => '删除成功',
);
}
/**
* 处理配送方式,删除快递
* @param $type
* @return array|string
*/
private function handleDeliveryType($type)
{
$type = explode(',', $type);
$index = array_search('3', $type);
if ($index >= 0) {
array_splice($type, $index, 1);
}
if(empty($type)){
return false;
}else{
$type = implode(',', $type);
return $type;
}
}
/**
* 通过模板ID获取当前模板的信息
* @param $temId
* @return mixed
*/
public function getTemInfoByTemId($temId)
{
$temData = $this->distinct(true)->field('id , title , type')
->where(array('status' => 1))
->where(array('id' => $temId))
->find();
return $temData;
}
/**
* 获取门店商品对应运费模板的信息以及配送区域信息
* @param $temsId 模板ID string 以","拼接
* @return mixed
*/
public function getTemplateDetailedData($temsId)
{
$temDetailedData = $this->alias('t')
->field('t.id,t.type,a.area_id,a.type,a.first_num,a.first_fee,a.append_num,a.append_fee,a.unified_fee')
->join('LEFT JOIN ls_template_area as a on a.template_id = t.id')
->where(array('t.id' => array('in', $temsId)))
->select();
return $temDetailedData;
}
}