249 lines
7.7 KiB
PHP
249 lines
7.7 KiB
PHP
|
<?php
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | likeshop开源商城系统
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
|
|||
|
// | gitee下载:https://gitee.com/likeshop_gitee
|
|||
|
// | github下载:https://github.com/likeshop-github
|
|||
|
// | 访问官网:https://www.likeshop.cn
|
|||
|
// | 访问社区:https://home.likeshop.cn
|
|||
|
// | 访问手册:http://doc.likeshop.cn
|
|||
|
// | 微信公众号:likeshop技术社区
|
|||
|
// | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用,未经许可不能去除前后端官方版权标识
|
|||
|
// | likeshop系列产品收费版本务必购买商业授权,购买去版权授权后,方可去除前后端官方版权标识
|
|||
|
// | 禁止对系统程序代码以任何目的,任何形式的再发布
|
|||
|
// | likeshop团队版权所有并拥有最终解释权
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | author: likeshop.cn.team
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
|
|||
|
namespace app\common\logic;
|
|||
|
|
|||
|
use app\common\model\Freight;
|
|||
|
use app\common\model\FreightConfig;
|
|||
|
use think\facade\Db;
|
|||
|
use think\Exception;
|
|||
|
|
|||
|
class FreightLogic
|
|||
|
{
|
|||
|
|
|||
|
public static function lists($get)
|
|||
|
{
|
|||
|
$freight = new Freight();
|
|||
|
$where = [];
|
|||
|
|
|||
|
if (isset($get['name']) && $get['name'] != '') {
|
|||
|
$where[] = ['name', 'like', '%' . $get['name'] . '%'];
|
|||
|
}
|
|||
|
|
|||
|
if (isset($get['charge_way']) && $get['charge_way'] != '') {
|
|||
|
$where[] = ['charge_way', '=', $get['charge_way']];
|
|||
|
}
|
|||
|
|
|||
|
if (isset($get['shop_id'])){
|
|||
|
$where[] = ['shop_id','=',$get['shop_id']];
|
|||
|
}
|
|||
|
$count = $freight->where($where)->count();
|
|||
|
$list = $freight
|
|||
|
->where($where)
|
|||
|
->page($get['page'], $get['limit'])
|
|||
|
->append(['charge_way_text'])
|
|||
|
->order('id desc')
|
|||
|
->select();
|
|||
|
|
|||
|
if (!$list) {
|
|||
|
return ['count' => '', 'lists' => []];
|
|||
|
}
|
|||
|
|
|||
|
return ['count' => $count, 'lists' => $list];
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
public static function add($post)
|
|||
|
{
|
|||
|
$freight = new Freight();
|
|||
|
$freight->name = $post['name'];
|
|||
|
$freight->charge_way = $post['charge_way'];
|
|||
|
$freight->remark = $post['remark'];
|
|||
|
$freight->shop_id = $post['shop_id'];
|
|||
|
$freight->allowField(['name','charge_way','remark','shop_id'])->save();
|
|||
|
|
|||
|
$freight_config = new FreightConfig();
|
|||
|
|
|||
|
$config_data = [];
|
|||
|
foreach ($post as &$item) {
|
|||
|
if (is_array($item)) {
|
|||
|
$item = array_values($item);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
$post = form_to_linear($post);
|
|||
|
foreach ($post as $v) {
|
|||
|
$v['freight_id'] = $freight->id;
|
|||
|
$v['create_time'] = time();
|
|||
|
$config_data[] = $v;
|
|||
|
}
|
|||
|
$freight_config->allowField(['region','first_unit','first_money','continue_unit','continue_money','freight_id','create_time'])->insertAll($config_data);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public static function edit($post)
|
|||
|
{
|
|||
|
Db::startTrans();
|
|||
|
try {
|
|||
|
$freight = Freight::where(['id' => $post['id']])
|
|||
|
->with('configs')
|
|||
|
->find();
|
|||
|
|
|||
|
//删除之前保存的配置,再增加
|
|||
|
FreightConfig::where(['freight_id' => $freight['id']])->delete();
|
|||
|
|
|||
|
$freight->where('id',$freight['id'])->save([
|
|||
|
'name' => $post['name'],
|
|||
|
'charge_way' => $post['charge_way'],
|
|||
|
'remark' => $post['remark'],
|
|||
|
]);
|
|||
|
|
|||
|
|
|||
|
$config_data = [];
|
|||
|
foreach ($post as &$item) {
|
|||
|
if (is_array($item)) {
|
|||
|
$item = array_values($item);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
$post = form_to_linear($post);
|
|||
|
|
|||
|
foreach ($post as $v) {
|
|||
|
$v['freight_id'] = $freight->id;
|
|||
|
$config_data[] = $v;
|
|||
|
}
|
|||
|
|
|||
|
$freight_config = new FreightConfig();
|
|||
|
$freight_config->allowField(['region','first_unit','first_money','continue_unit','continue_money','freight_id','create_time'])->insertAll($config_data);
|
|||
|
Db::commit();
|
|||
|
} catch (Exception $e) {
|
|||
|
Db::rollback();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public static function del($post)
|
|||
|
{
|
|||
|
Db::startTrans();
|
|||
|
try {
|
|||
|
Freight::where(['id' => $post['id']])->delete();
|
|||
|
FreightConfig::where(['freight_id' => $post['id']])->delete();
|
|||
|
Db::commit();
|
|||
|
} catch (Exception $e) {
|
|||
|
Db::rollback();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public static function detail($id)
|
|||
|
{
|
|||
|
$freight = Freight::where(['id' => $id])
|
|||
|
->with('configs')
|
|||
|
->append(['charge_way_text'])
|
|||
|
->find()->toArray();
|
|||
|
|
|||
|
|
|||
|
$regions = Db::name('dev_region')->column('name', 'id');
|
|||
|
|
|||
|
foreach ($freight['configs'] as &$item) {
|
|||
|
$item['region_name'] = '';
|
|||
|
|
|||
|
if ($item['region'] == 'all'){
|
|||
|
$item['region_name'] = '全国';
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
$region = explode(',', $item['region']);
|
|||
|
|
|||
|
foreach ($region as $v) {
|
|||
|
if (isset($regions[$v])) {
|
|||
|
$item['region_name'] .= $regions[$v] . ',';
|
|||
|
}
|
|||
|
}
|
|||
|
$item['region_name'] = rtrim($item['region_name'], ',');
|
|||
|
}
|
|||
|
return $freight;
|
|||
|
}
|
|||
|
|
|||
|
public static function areaTree()
|
|||
|
{
|
|||
|
$lists = Db::name('dev_region')
|
|||
|
->field('id,parent_id,level,name as title')
|
|||
|
->order('parent_id', 'desc')
|
|||
|
->select();
|
|||
|
|
|||
|
$result = self::areaSort($lists);
|
|||
|
return $result;
|
|||
|
}
|
|||
|
|
|||
|
public static function areaSort(&$lists)
|
|||
|
{
|
|||
|
$tree = [];
|
|||
|
foreach ($lists as $k1 => $province) {
|
|||
|
if ($province['level'] == 1) {
|
|||
|
|
|||
|
//树形结构参数
|
|||
|
$province['checkArr']['type'] = 0;
|
|||
|
$province['checkArr']['checked'] = 0;
|
|||
|
$province['last'] = false;
|
|||
|
$province['parentId'] = -1;
|
|||
|
|
|||
|
//钓鱼岛这个没有下级
|
|||
|
if ($province['id'] == 900000) {
|
|||
|
$province['children'] = [];
|
|||
|
$province['last'] = true;
|
|||
|
}
|
|||
|
|
|||
|
$tree[$k1] = $province;
|
|||
|
unset($lists[$k1]);
|
|||
|
foreach ($lists as $k2 => $city) {
|
|||
|
$city['parentId'] = $city['parent_id'];
|
|||
|
if ($city['parentId'] == $province['id']) {
|
|||
|
foreach ($lists as $k3 => $district) {
|
|||
|
$district['parentId'] = $district['parent_id'];
|
|||
|
if ($district['parentId'] == $city['id']) {
|
|||
|
|
|||
|
//树形结构参数
|
|||
|
$district['checkArr']['type'] = 0;
|
|||
|
$district['checkArr']['checked'] = 0;
|
|||
|
$district['last'] = true;
|
|||
|
|
|||
|
$city['children'][] = $district;
|
|||
|
unset($lists[$k3]);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//树形结构参数
|
|||
|
$city['checkArr']['type'] = 0;
|
|||
|
$city['checkArr']['checked'] = 0;
|
|||
|
$city['last'] = false;
|
|||
|
|
|||
|
$tree[$k1]['children'][] = $city;
|
|||
|
unset($lists[$k2]);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return array_values($tree);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* note 获取全部运费模板
|
|||
|
*/
|
|||
|
public static function getFreightList()
|
|||
|
{
|
|||
|
return Db::name('freight')->field('id,name')->select();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|