$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; } }