245 行
7.6 KiB
PHP
可执行文件
245 行
7.6 KiB
PHP
可执行文件
<?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;
|
||
}
|
||
|
||
|
||
} |