www.lightcourse.com/app/common/model/Transport.php

224 lines
7.1 KiB
PHP
Raw Normal View History

2022-10-24 02:38:36 +00:00
<?php
namespace app\common\model;
use think\facade\Db;
/**
* ============================================================================
* 联课教育商城系统
* ============================================================================
* 版权所有 2022 刻羽互动科技有限公司,并保留所有权利。
* 网站地址: http://www.o1h.cn
* ----------------------------------------------------------------------------
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
* 不允许对程序代码以任何形式任何目的的再发布。
* ============================================================================
* 数据层模型
*/
class Transport extends BaseModel {
public $page_info;
/**
* 增加售卖区域
* @access public
* @author o1h.cn
* @param type $data 参数内容
* @return type
*/
public function addTransport($data) {
return Db::name('transport')->insertGetId($data);
}
/**
* 增加各地区详细运费设置
* @access public
* @author o1h.cn
* @param array $data
* @return bool
*/
public function addExtend($data) {
return Db::name('transportextend')->insertAll($data);
}
/**
* 取得一条售卖区域信息
* @access public
* @author o1h.cn
* @param array $condition 条件
* @return array
*/
public function getTransportInfo($condition) {
return Db::name('transport')->where($condition)->find();
}
/**
* 取得一条售卖区域扩展信息
* @access public
* @author o1h.cn
* @param array $condition 条件
* @return array
*/
public function getExtendInfo($condition) {
return Db::name('transportextend')->where($condition)->select()->toArray();
}
/**
* 删除售卖区域
* @access public
* @author o1h.cn
* @param type $transport_id 条件
* @return boolean
*/
public function delTansport($transport_id) {
try {
Db::startTrans();
$delete = Db::name('transport')->where('transport_id',$transport_id)->delete();
if ($delete) {
$delete = Db::name('transportextend')->where('transport_id',$transport_id)->delete();
}
Db::commit();
} catch (Exception $e) {
Db::rollback();
return false;
}
return true;
}
/**
* 删除售卖区域扩展信息
* @access public
* @author o1h.cn
* @param int $transport_id 售卖区域ID
* @return bool
*/
public function delTransportextend($transport_id) {
return Db::name('transportextend')->where(array('transport_id' => $transport_id))->delete();
}
/**
* 取得售卖区域列表
* @access public
* @author o1h.cn
* @param array $condition 查询条件
* @param int $pagesize 分页信息
* @param string $order 排序
* @return array
*/
public function getTransportList($condition = array(), $pagesize = '', $order = 'transport_id desc') {
if($pagesize){
$res = Db::name('transport')->where($condition)->order($order)->paginate(['list_rows'=>$pagesize,'query' => request()->param()],false);
$this->page_info=$res;
return $res->items();
}else{
return Db::name('transport')->where($condition)->order($order)->select()->toArray();
}
}
/**
* 取得扩展信息列表
* @access public
* @author o1h.cn
* @param array $condition 条件
* @param string $order 排序
* @return array
*/
public function getTransportextendList($condition = array(), $order = '') {
return Db::name('transportextend')->where($condition)->order($order)->select()->toArray();
}
/**
* 编辑更新售卖区域
* @access public
* @author o1h.cn
* @param type $data 数据
* @param type $condition 条件
* @return type
*/
public function editTransport($data, $condition = array()) {
return Db::name('transport')->where($condition)->update($data);
}
/**
* 检测售卖区域是否正在被使用
* @access public
* @author o1h.cn
* @param type $id ID编号
* @return boolean
*/
public function isTransportUsing($id) {
if (!is_numeric($id)) {
return false;
}
$goods_info = Db::name('goods')->where(array('transport_id' => $id))->field('goods_id')->find();
return $goods_info ? true : false;
}
/**
* 计算某地区某售卖区域ID下的商品总运费如果售卖区域不存在或按免运费处理
* @access public
* @author o1h.cn
* @param int $transport_id 售卖区域ID
* @param int $area_id 区域ID
* @param int $count 计数
* @return number/boolean
*/
public function calcTransport($transport_id, $area_id,$count=1) {
if (empty($transport_id)) {
return 0;
}
$transport = $this->getTransportInfo(array('transport_id' => $transport_id));
$extend_list = $this->getTransportextendList(array('transport_id' => $transport_id));
if (empty($extend_list) || !$transport) {
return false;
} else {
return $this->_calc_unit($area_id,$transport, $extend_list,$count);
}
}
/**
* 计算某个具单元的运费
* @access public
* @author o1h.cn
* @param type $area_id 配送地区ID
* @param type $extend 售卖区域内容
* @param type $count 计数
* @return type
*/
private function _calc_unit($area_id, $transport,$extend,$count) {
if (!empty($extend) && is_array($extend)) {
foreach ($extend as $v) {
if ($v['transportext_area_id']=='' && !$transport['transport_is_limited']) {
$calc_total = $v['transportext_sprice'];
if($v['transportext_xprice']>0 && $count>$v['transportext_snum']){
if($v['transportext_xnum']){
$calc_total+=ceil(($count-$v['transportext_snum'])/$v['transportext_xnum'])*$v['transportext_xprice'];
}else{
$calc_total+=$v['transportext_xprice'];
}
}
}
if($area_id){
if (strpos($v['transportext_area_id'], "," . $area_id . ",") !== false) {
$calc_total = $v['transportext_sprice'];
if($v['transportext_xprice']>0 && $count>$v['transportext_snum']){
if($v['transportext_xnum']){
$calc_total+=ceil(($count-$v['transportext_snum'])/$v['transportext_xnum'])*$v['transportext_xprice'];
}else{
$calc_total+=$v['transportext_xprice'];
}
}
}
}
}
}
return isset($calc_total) ? ds_price_format($calc_total) : false;
}
}