vr-shopxo-source/app/admin/form/Order.php

589 lines
22 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
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2099 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( https://opensource.org/licenses/mit-license.php )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\admin\form;
use think\facade\Db;
use app\service\PaymentService;
use app\service\ExpressService;
/**
* 订单动态表格
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-08
* @desc description
*/
class Order
{
// 基础条件
public $condition_base = [
['is_delete_time', '=', 0],
];
/**
* 入口
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-08
* @desc description
* @param [array] $params [输入参数]
*/
public function Run($params = [])
{
return [
// 基础配置
'base' => [
'key_field' => 'id',
'is_search' => 1,
'search_url' => MyUrl('admin/order/index'),
'detail_title' => '基础信息',
'is_middle' => 0,
],
// 表单配置
'form' => [
[
'label' => '基础信息',
'view_type' => 'module',
'view_key' => 'order/module/goods',
'grid_size' => 'xl',
'is_detail' => 0,
'search_config' => [
'form_type' => 'input',
'form_name' => 'id',
'where_type_custom' => 'in',
'where_value_custom' => 'WhereBaseGoodsInfo',
'placeholder' => '请输入订单ID/订单号/商品名称/型号',
],
],
[
'label' => '用户信息',
'view_type' => 'module',
'view_key' => 'lib/module/user',
'grid_size' => 'sm',
'is_sort' => 1,
'search_config' => [
'form_type' => 'input',
'form_name' => 'user_id',
'where_type_custom' => 'in',
'where_value_custom' => 'WhereValueUserInfo',
'placeholder' => '请输入用户名/昵称/手机/邮箱',
],
],
[
'label' => '订单状态',
'view_type' => 'module',
'view_key' => 'order/module/status',
'is_sort' => 1,
'search_config' => [
'form_type' => 'select',
'form_name' => 'status',
'where_type' => 'in',
'data' => lang('common_order_admin_status'),
'data_key' => 'id',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => '支付状态',
'view_type' => 'module',
'view_key' => 'order/module/pay_status',
'is_sort' => 1,
'search_config' => [
'form_type' => 'select',
'form_name' => 'pay_status',
'where_type' => 'in',
'data' => lang('common_order_pay_status'),
'data_key' => 'id',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => '总价(元)',
'view_type' => 'field',
'view_key' => 'total_price',
'is_sort' => 1,
'search_config' => [
'form_type' => 'section',
'is_point' => 1,
],
],
[
'label' => '支付金额(元)',
'view_type' => 'field',
'view_key' => 'pay_price',
'is_sort' => 1,
'search_config' => [
'form_type' => 'section',
'is_point' => 1,
],
],
[
'label' => '单价(元)',
'view_type' => 'field',
'view_key' => 'price',
'is_sort' => 1,
'search_config' => [
'form_type' => 'section',
'is_point' => 1,
],
],
[
'label' => '出货仓库',
'view_type' => 'field',
'view_key' => 'warehouse_name',
'is_sort' => 1,
'search_config' => [
'form_type' => 'select',
'form_name' => 'warehouse_id',
'where_type' => 'in',
'data' => $this->OrderWarehouseList(),
'data_key' => 'id',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => '订单模式',
'view_type' => 'field',
'view_key' => 'order_model',
'view_data_key' => 'name',
'view_data' => lang('common_site_type_list'),
'is_sort' => 1,
'search_config' => [
'form_type' => 'select',
'where_type' => 'in',
'data' => lang('common_site_type_list'),
'data_key' => 'value',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => '来源',
'view_type' => 'field',
'view_key' => 'client_type',
'view_data_key' => 'name',
'view_data' => lang('common_platform_type'),
'is_sort' => 1,
'search_config' => [
'form_type' => 'select',
'where_type' => 'in',
'data' => lang('common_platform_type'),
'data_key' => 'value',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => '地址信息',
'view_type' => 'module',
'view_key' => 'order/module/address',
'grid_size' => 'sm',
'is_detail' => 0,
'search_config' => [
'form_type' => 'input',
'form_name' => 'id',
'where_type_custom' => 'in',
'where_value_custom' => 'WhereValueAddressInfo',
],
],
[
'label' => '取货信息',
'view_type' => 'module',
'view_key' => 'order/module/take',
'width' => 125,
'is_detail' => 0,
'search_config' => [
'form_type' => 'input',
'form_name' => 'id',
'where_type_custom' => 'in',
'where_value_custom' => 'WhereValueTakeInfo',
],
],
[
'label' => '退款金额(元)',
'view_type' => 'field',
'view_key' => 'refund_price',
'is_sort' => 1,
'search_config' => [
'form_type' => 'section',
'is_point' => 1,
],
],
[
'label' => '退货数量',
'view_type' => 'field',
'view_key' => 'returned_quantity',
'is_sort' => 1,
'search_config' => [
'form_type' => 'section',
],
],
[
'label' => '购买总数',
'view_type' => 'field',
'view_key' => 'buy_number_count',
'is_sort' => 1,
'search_config' => [
'form_type' => 'section',
],
],
[
'label' => '增加金额(元)',
'view_type' => 'field',
'view_key' => 'increase_price',
'is_sort' => 1,
'search_config' => [
'form_type' => 'section',
'is_point' => 1,
],
],
[
'label' => '优惠金额(元)',
'view_type' => 'field',
'view_key' => 'preferential_price',
'is_sort' => 1,
'search_config' => [
'form_type' => 'section',
'is_point' => 1,
],
],
[
'label' => '支付方式',
'view_type' => 'field',
'view_key' => 'payment_name',
'is_sort' => 1,
'search_config' => [
'form_type' => 'select',
'form_name' => 'payment_id',
'where_type' => 'in',
'data' => PaymentService::PaymentList(),
'data_key' => 'id',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => '用户备注',
'view_type' => 'field',
'view_key' => 'user_note',
'is_sort' => 1,
'search_config' => [
'form_type' => 'select',
'where_type' => 'like',
],
],
[
'label' => '扩展信息',
'view_type' => 'module',
'view_key' => 'order/module/extension',
'grid_size' => 'sm',
'search_config' => [
'form_type' => 'input',
'form_name' => 'extension_data',
'where_type' => 'like',
],
],
[
'label' => '快递公司',
'view_type' => 'field',
'view_key' => 'express_name',
'is_sort' => 1,
'search_config' => [
'form_type' => 'select',
'form_name' => 'express_id',
'data' => ExpressService::ExpressList(),
'where_type' => 'in',
'data_key' => 'id',
'data_name' => 'name',
'is_multiple' => 1,
],
],
[
'label' => '快递单号',
'view_type' => 'field',
'view_key' => 'express_number',
'is_sort' => 1,
'search_config' => [
'form_type' => 'input',
'where_type' => 'like',
],
],
[
'label' => '最新售后',
'view_type' => 'module',
'view_key' => 'order/module/aftersale',
'grid_size' => 'sm',
],
[
'label' => '用户是否评论',
'view_type' => 'module',
'view_key' => 'order/module/is_comments',
'is_sort' => 1,
'search_config' => [
'form_type' => 'select',
'where_type' => 'in',
'form_name' => 'user_is_comments',
'data' => lang('common_is_text_list'),
'data_key' => 'id',
'data_name' => 'name',
'where_type_custom' => 'WhereTypyUserIsComments',
'where_value_custom' => 'WhereValueUserIsComments',
'is_multiple' => 1,
],
],
[
'label' => '确认时间',
'view_type' => 'field',
'view_key' => 'confirm_time',
'is_sort' => 1,
'search_config' => [
'form_type' => 'datetime',
],
],
[
'label' => '支付时间',
'view_type' => 'field',
'view_key' => 'pay_time',
'is_sort' => 1,
'search_config' => [
'form_type' => 'datetime',
],
],
[
'label' => '发货时间',
'view_type' => 'field',
'view_key' => 'delivery_time',
'is_sort' => 1,
'search_config' => [
'form_type' => 'datetime',
],
],
[
'label' => '完成时间',
'view_type' => 'field',
'view_key' => 'collect_time',
'is_sort' => 1,
'search_config' => [
'form_type' => 'datetime',
],
],
[
'label' => '取消时间',
'view_type' => 'field',
'view_key' => 'cancel_time',
'is_sort' => 1,
'search_config' => [
'form_type' => 'datetime',
],
],
[
'label' => '关闭时间',
'view_type' => 'field',
'view_key' => 'close_time',
'is_sort' => 1,
'search_config' => [
'form_type' => 'datetime',
],
],
[
'label' => '创建时间',
'view_type' => 'field',
'view_key' => 'add_time',
'is_sort' => 1,
'search_config' => [
'form_type' => 'datetime',
],
],
[
'label' => '更新时间',
'view_type' => 'field',
'view_key' => 'upd_time',
'is_sort' => 1,
'search_config' => [
'form_type' => 'datetime',
],
],
[
'label' => '操作',
'view_type' => 'operate',
'view_key' => 'order/module/operate',
'align' => 'center',
'fixed' => 'right',
],
],
];
}
/**
* 评论条件符号处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-08
* @desc description
* @param [string] $form_key [表单数据key]
* @param [array] $params [输入参数]
*/
public function WhereTypyUserIsComments($form_key, $params = [])
{
if(isset($params[$form_key]))
{
// 条件值是 0,1
// 解析成数组都存在则返回null则1 > 0 =
$value = explode(',', urldecode($params[$form_key]));
if(count($value) == 1)
{
return in_array(1, $value) ? '>' : '=';
}
}
return null;
}
/**
* 评论条件值处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-08
* @desc description
* @param [string] $form_key [表单数据key]
* @param [array] $params [输入参数]
*/
public function WhereValueUserIsComments($value, $params = [])
{
return (count($value) == 2) ? null : 0;
}
/**
* 订单仓库列表
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-29
* @desc description
*/
public function OrderWarehouseList()
{
$data = [];
$wids = Db::name('Order')->column('warehouse_id');
if(!empty($wids))
{
$where = ['id'=>$wids];
$order_by = 'level desc, id desc';
$data = Db::name('Warehouse')->field('id,name')->where($where)->order($order_by)->select()->toArray();
}
return $data;
}
/**
* 取货码条件处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-08
* @desc description
* @param [string] $value [条件值]
* @param [array] $params [输入参数]
*/
public function WhereValueTakeInfo($value, $params = [])
{
if(!empty($value))
{
// 获取订单 id
$ids = Db::name('OrderExtractionCode')->where('code', '=', $value)->column('order_id');
// 避免空条件造成无效的错觉
return empty($ids) ? [0] : $ids;
}
return $value;
}
/**
* 收件地址条件处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-08
* @desc description
* @param [string] $value [条件值]
* @param [array] $params [输入参数]
*/
public function WhereValueAddressInfo($value, $params = [])
{
if(!empty($value))
{
// 获取订单 id
$ids = Db::name('OrderAddress')->where('name|tel|address', 'like', '%'.$value.'%')->column('order_id');
// 避免空条件造成无效的错觉
return empty($ids) ? [0] : $ids;
}
return $value;
}
/**
* 用户信息条件处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-08
* @desc description
* @param [string] $value [条件值]
* @param [array] $params [输入参数]
*/
public function WhereValueUserInfo($value, $params = [])
{
if(!empty($value))
{
// 获取用户 id
$ids = Db::name('User')->where('username|nickname|mobile|email', 'like', '%'.$value.'%')->column('id');
// 避免空条件造成无效的错觉
return empty($ids) ? [0] : $ids;
}
return $value;
}
/**
* 基础条件处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-08
* @desc description
* @param [string] $value [条件值]
* @param [array] $params [输入参数]
*/
public function WhereBaseGoodsInfo($value, $params = [])
{
if(!empty($value))
{
// 订单ID、订单号
$ids = Db::name('Order')->where(['id|order_no'=>$value])->column('id');
// 获取订单详情搜索的订单 id
if(empty($ids))
{
$ids = Db::name('OrderDetail')->where('title|model', 'like', '%'.$value.'%')->column('order_id');
}
// 避免空条件造成无效的错觉
return empty($ids) ? [0] : $ids;
}
return $value;
}
}
?>