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

224 lines
7.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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