732 lines
24 KiB
PHP
732 lines
24 KiB
PHP
<?php
|
||
/**
|
||
* tpshop
|
||
* ============================================================================
|
||
* 版权所有 2015-2027 深圳搜豹网络科技有限公司,并保留所有权利。
|
||
* 网站地址: http://www.tp-shop.cn
|
||
* ----------------------------------------------------------------------------
|
||
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
|
||
* 不允许对程序代码以任何形式任何目的的再发布。
|
||
* ============================================================================
|
||
* Author: dyr
|
||
* Date: 2016-08-23
|
||
*/
|
||
|
||
namespace app\common\model;
|
||
|
||
use think\Model;
|
||
use think\Db;
|
||
use app\common\logic\VirtualLogic;
|
||
|
||
/**
|
||
* @package Home\Model
|
||
*/
|
||
class Order extends Model
|
||
{
|
||
|
||
public function shop()
|
||
{
|
||
return $this->hasOne('shop', 'shop_id', 'shop_id');
|
||
}
|
||
|
||
public function shopOrder()
|
||
{
|
||
return $this->hasOne('ShopOrder', 'order_id', 'order_id');
|
||
}
|
||
|
||
//获取所有订单商品
|
||
public function OrderGoods()
|
||
{
|
||
return $this->hasMany('OrderGoods', 'order_id', 'order_id');
|
||
}
|
||
|
||
//订单商品总数
|
||
public function countGoodsNum()
|
||
{
|
||
return $this->hasMany('OrderGoods', 'order_id', 'order_id')->sum('goods_num');
|
||
}
|
||
|
||
/**
|
||
* 获取订单操作记录
|
||
* @return \think\model\relation\HasMany
|
||
*/
|
||
public function OrderAction()
|
||
{
|
||
return $this->hasMany('OrderAction', 'order_id', 'order_id')->order('action_id desc');
|
||
}
|
||
|
||
/**
|
||
* 获取订单发货单
|
||
* @return \think\model\relation\HasMany
|
||
*/
|
||
public function DeliveryDoc()
|
||
{
|
||
return $this->hasMany('DeliveryDoc', 'order_id', 'order_id');
|
||
}
|
||
|
||
public function users()
|
||
{
|
||
return $this->hasone('users', 'user_id', 'user_id')->field('user_id,nickname');
|
||
}
|
||
|
||
/**
|
||
* 获取虚拟订单的兑换码
|
||
* @return \think\model\relation\HasMany
|
||
*/
|
||
public function VrOrderCode()
|
||
{
|
||
return $this->hasMany('vr_order_code', 'order_id', 'order_id');
|
||
}
|
||
|
||
/**
|
||
* 获取订单状态对应的中文
|
||
* @param $value
|
||
* @param $data
|
||
* @return mixed
|
||
*/
|
||
public function getOrderStatusDetailAttr($value, $data)
|
||
{
|
||
$data_status_arr = C('ORDER_STATUS_DESC');
|
||
// 货到付款
|
||
if ($data['pay_code'] == 'cod') {
|
||
if (in_array($data['order_status'], array(0, 1)) && $data['shipping_status'] == 0) {
|
||
return $data_status_arr['WAITSEND']; //'待发货',
|
||
}
|
||
} else {
|
||
// 非货到付款
|
||
if ($data['pay_status'] == 0 && $data['order_status'] == 0) {
|
||
return $data_status_arr['WAITPAY']; //'待支付',
|
||
}
|
||
if($data['pay_status'] == 2 && $data['order_status'] == 0){
|
||
return '部分支付';
|
||
}
|
||
if ($data['pay_status'] == 1 && in_array($data['order_status'], array(0, 1)) && $data['shipping_status'] != 1) {
|
||
if ($data['prom_type'] == 5) { //虚拟商品
|
||
return $data_status_arr['WAITRECEIVE']; //'待收货',
|
||
} elseif ($data['prom_type'] == 6) {
|
||
if ($data['order_status'] == 0) {
|
||
return '待处理';
|
||
} else {
|
||
if ($data['shop_id'] > 0) {
|
||
return '待自提';
|
||
}
|
||
return $data_status_arr['WAITSEND']; //'待发货',
|
||
}
|
||
} else {
|
||
if ($data['shop_id'] > 0) {
|
||
return '待自提';
|
||
}
|
||
if($data['shipping_status']==0 && $data['pay_status'] == 1){
|
||
return $data_status_arr['WAITSEND']; //'待发货',
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (($data['shipping_status'] == 1) && ($data['order_status'] == 1)) {
|
||
return $data_status_arr['WAITRECEIVE']; //'待收货',
|
||
}
|
||
if (($data['shipping_status'] == 2) && in_array($data['order_status'],[1,2,4])) {
|
||
return $data_status_arr['PORTIONSEND']; //'部分发货',
|
||
}
|
||
if ($data['order_status'] == 2) {
|
||
return $data_status_arr['WAITCCOMMENT']; //'待评价',
|
||
}
|
||
if ($data['order_status'] == 3) {
|
||
return $data_status_arr['CANCEL']; //'已取消',
|
||
}
|
||
if ($data['order_status'] == 4) {
|
||
return $data_status_arr['FINISH']; //'已完成',
|
||
}
|
||
if ($data['order_status'] == 5) {
|
||
return $data_status_arr['CANCELLED']; //'已作废',
|
||
}
|
||
return $data_status_arr['OTHER'];
|
||
}
|
||
|
||
/**
|
||
* 只有在订单为拼团才有用:prom_type = 6
|
||
*/
|
||
public function teamActivity()
|
||
{
|
||
return $this->hasOne('TeamActivity', 'team_id', 'prom_id');
|
||
}
|
||
|
||
public function preSell()
|
||
{
|
||
return $this->hasOne('PreSell', 'pre_sell_id', 'prom_id');
|
||
}
|
||
|
||
public function teamFollow()
|
||
{
|
||
return $this->hasOne('TeamFollow', 'order_id', 'order_id');
|
||
}
|
||
|
||
|
||
/**
|
||
* 是否虚拟订单,获取虚拟订单的code码
|
||
*/
|
||
public function getVrordersCodeAttr($value, $data)
|
||
{
|
||
if($data['prom_type'] == 5){
|
||
$VirtualLogic = new VirtualLogic();
|
||
$virtual = $VirtualLogic->check_virtual_code($data);
|
||
return $virtual['vrorders'];
|
||
}
|
||
return [];
|
||
}
|
||
|
||
|
||
/**
|
||
* 订单详细收货地址
|
||
* @param $value
|
||
* @param $data
|
||
* @return string
|
||
*/
|
||
public function getFullAddressAttr($value, $data)
|
||
{
|
||
$province = Db::name('region')->where(['id' => $data['province']])->value('name');
|
||
$city = Db::name('region')->where(['id' => $data['city']])->value('name');
|
||
$district = Db::name('region')->where(['id' => $data['district']])->value('name');
|
||
$address = $province . ',' . $city . ',' . $district . ',' . $data['address'];
|
||
return $address;
|
||
}
|
||
|
||
/**
|
||
* 订单是否可拆单
|
||
* @param $value
|
||
* @param $data
|
||
* @return bool
|
||
*/
|
||
public function getIsSplitAttr($value, $data)
|
||
{
|
||
if ($data['shop_id'] > 0) {
|
||
return false;
|
||
}
|
||
if ($data['prom_type'] == 4) {
|
||
return false;
|
||
}
|
||
if ($data['order_status'] < 2) {
|
||
$goods_num = Db::name('order_goods')->where('order_id', $data['order_id'])->sum('goods_num');
|
||
if ($goods_num > 1) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
|
||
public function teamFound()
|
||
{
|
||
return $this->hasOne('TeamFound', 'order_id', 'order_id');
|
||
}
|
||
|
||
/**
|
||
* 获取当前可操作的按钮(后台)
|
||
* @param $data
|
||
* @return array
|
||
*/
|
||
public function getAdminOrderButtonAttr($value, $data)
|
||
{
|
||
/*
|
||
* 操作按钮汇总 :付款、设为未付款、确认、取消确认、无效、去发货、确认收货、申请退货
|
||
*
|
||
*/
|
||
$os = $data['order_status'];//订单状态
|
||
$ss = $data['shipping_status'];//发货状态
|
||
$ps = $data['pay_status'];//支付状态
|
||
$pt = $data['prom_type'];//订单类型:0默认1抢购2团购3优惠4预售5虚拟6拼团
|
||
$btn = array();
|
||
if ($data['pay_code'] == 'cod') {
|
||
if ($os == 0 && $ss == 0) {
|
||
if ($pt != 6) {
|
||
$btn['confirm'] = '确认';
|
||
}
|
||
} elseif ($os == 1 && ($ss == 0 || $ss == 2)) {
|
||
$btn['delivery'] = '去发货';
|
||
if ($pt != 6) {
|
||
$btn['cancel'] = '取消确认';
|
||
}
|
||
} elseif ($ss == 1 && $os == 1 && $ps == 0) {
|
||
$btn['pay'] = '付款';
|
||
} elseif ($ps == 1 && $ss == 1 && $os == 1) {
|
||
if ($pt != 6) {
|
||
$btn['pay_cancel'] = '设为未付款';
|
||
}
|
||
}
|
||
} else {
|
||
if ($ps == 0 && $os == 0 || $ps == 2) {
|
||
$btn['pay'] = '付款';
|
||
} elseif ($os == 0 && $ps == 1) {
|
||
if ($pt != 6) {
|
||
$btn['pay_cancel'] = '设为未付款';
|
||
$btn['confirm'] = '确认';
|
||
}
|
||
if ($pt == 4) {
|
||
$pre_sell = Db::name('pre_sell')->where('pre_sell_id', $data['prom_id'])->find();
|
||
if ($pre_sell['is_finished'] == 2) {
|
||
$btn['confirm'] = '确认';
|
||
}
|
||
}
|
||
} elseif ($os == 1 && $ps == 1 && ($ss == 0 || $ss == 2)) {
|
||
if ($pt != 6) {
|
||
$btn['cancel'] = '取消确认';
|
||
}
|
||
$btn['delivery'] = '去发货';
|
||
}
|
||
}
|
||
|
||
if ($ss == 1 && $os == 1 && $ps == 1) {
|
||
// $btn['delivery_confirm'] = '确认收货';
|
||
$btn['refund'] = '申请退货';
|
||
} elseif ($os == 2 || $os == 4) {
|
||
$btn['refund'] = '申请退货';
|
||
} elseif ($os == 3 || $os == 5) {
|
||
$btn['remove'] = '移除';
|
||
}
|
||
if ($os != 5) {
|
||
$btn['invalid'] = '无效';
|
||
}
|
||
return $btn;
|
||
}
|
||
|
||
|
||
/**
|
||
* 支付按钮
|
||
* @param $value
|
||
* @param $data
|
||
* @return int
|
||
*/
|
||
public function getPayBtnAttr($value, $data)
|
||
{
|
||
// 三个月(90天)内的订单才可以进行有操作按钮. 三个月(90天)以外的过了退货 换货期, 即便是保修也让他联系厂家, 不走线上
|
||
if (time() - $data['add_time'] > (86400 * 90)) {
|
||
return 0;
|
||
}
|
||
// 货到付款,虚拟订单不会为cod
|
||
if ($data['pay_code'] == 'cod') {
|
||
return 0;
|
||
}
|
||
// 待支付
|
||
if ($data['pay_status'] == 0 && $data['order_status'] == 0) {
|
||
return 1; // 去支付按钮
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
/**
|
||
* 取消按钮
|
||
* @param $value
|
||
* @param $data
|
||
* @return int
|
||
*/
|
||
public function getCancelBtnAttr($value, $data)
|
||
{
|
||
// 三个月(90天)内的订单才可以进行有操作按钮. 三个月(90天)以外的过了退货 换货期, 即便是保修也让他联系厂家, 不走线上
|
||
if (time() - $data['add_time'] > (86400 * 90)) {
|
||
return 0;
|
||
}
|
||
// 货到付款
|
||
if ($data['pay_code'] == 'cod') {
|
||
if (in_array($data['order_status'], [0, 1]) && $data['shipping_status'] == 0) {
|
||
return 1; // 取消按钮 (订单待确认和已确认,未发货情况)
|
||
}
|
||
}
|
||
//(订单已支付待确认和已确认,未发货情况)
|
||
if ($data['pay_status'] == 1 && in_array($data['order_status'], [0, 1])) {
|
||
//拼团和预售已支付订单不能取消,普通订单已支付未发货能取消,虚拟订单不走这个逻辑
|
||
if(!in_array($data['prom_type'], [4, 5, 6]) && $data['shipping_status'] == 0){
|
||
return 1;
|
||
}
|
||
if($data['prom_type'] == 5){
|
||
$vr_order_code = Db::name('vr_order_code')->where(['order_id' => $data['order_id']])->find();
|
||
if (!empty($vr_order_code)) {
|
||
if ($vr_order_code['vr_state'] != 1 && $vr_order_code['refund_lock'] < 1) {
|
||
if ($vr_order_code['vr_indate'] > time()) {
|
||
return 2; // 已支付取消按钮
|
||
}
|
||
if ($vr_order_code['vr_indate'] < time() && $vr_order_code['vr_invalid_refund'] == 1) {
|
||
return 2; // 已支付取消按钮
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// 待支付
|
||
if ($data['pay_status'] == 0 && $data['order_status'] == 0) {
|
||
return 1; // 取消按钮
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
/**
|
||
* 确认收货
|
||
* @param $value
|
||
* @param $data
|
||
* @return int
|
||
*/
|
||
public function getReceiveBtnAttr($value, $data)
|
||
{
|
||
// 三个月(90天)内的订单才可以进行有操作按钮. 三个月(90天)以外的过了退货 换货期, 即便是保修也让他联系厂家, 不走线上
|
||
if (time() - $data['add_time'] > (86400 * 90)) {
|
||
return 0;
|
||
}
|
||
// 货到付款
|
||
if ($data['pay_code'] == 'cod') {
|
||
if ($data['shipping_status'] == 1 && $data['order_status'] == 1) //待收货
|
||
{
|
||
return 1; // 确认收货 (已确认,已发货)
|
||
}
|
||
} else {
|
||
if ($data['pay_status'] == 1 && $data['order_status'] == 1 && $data['shipping_status'] == 1) {
|
||
return 1; // 确认收货(已支付,已确认,已发货)
|
||
}
|
||
}
|
||
if($data['prom_type'] == 5){
|
||
$vr_order_code = Db::name('vr_order_code')->where(['order_id' => $data['order_id']])->find();
|
||
if (!empty($vr_order_code)) {
|
||
if ($data['pay_status'] == 1 && $data['order_status'] < 2 && $vr_order_code['vr_state'] != 1 && $vr_order_code['refund_lock'] < 1) {
|
||
return 1;
|
||
}
|
||
}
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
/**
|
||
* 评价按钮
|
||
* @param $value
|
||
* @param $data
|
||
* @return int
|
||
*/
|
||
public function getCommentBtnAttr($value, $data)
|
||
{
|
||
// 三个月(90天)内的订单才可以进行有操作按钮. 三个月(90天)以外的过了退货 换货期, 即便是保修也让他联系厂家, 不走线上
|
||
if (time() - $data['add_time'] > (86400 * 90)) {
|
||
return 0;
|
||
}
|
||
if ($data['order_status'] == 2) {
|
||
return 1; // (已收货状态出现评价按钮)
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
/**
|
||
* 查看物流
|
||
* @param $value
|
||
* @param $data
|
||
* @return int
|
||
*/
|
||
public function getShippingBtnAttr($value, $data)
|
||
{
|
||
// 三个月(90天)内的订单才可以进行有操作按钮. 三个月(90天)以外的过了退货 换货期, 即便是保修也让他联系厂家, 不走线上
|
||
if (time() - $data['add_time'] > (86400 * 90)) {
|
||
return 0;
|
||
}
|
||
if ($data['shipping_status'] > 0 && $data['order_status'] > 1) {
|
||
return 1; // 已发货并且已支付
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
//支付尾款按钮
|
||
public function getPayTailBtnAttr($value, $data){
|
||
if($data['prom_type'] == 4 && $data['pay_status'] == 2){
|
||
$pre_sell = db('pre_sell')->where('pre_sell_id', $data['prom_id'])->find();
|
||
if($pre_sell['is_finished'] == 2 && (time() >= $pre_sell['pay_start_time'] && $pre_sell['pay_end_time'] >= time())){
|
||
return 1;
|
||
}
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
/**
|
||
* 退货按钮 (联系客服)
|
||
* @param $value
|
||
* @param $data
|
||
* @return int
|
||
*/
|
||
public function getReturnBtnAttr($value, $data)
|
||
{
|
||
// 三个月(90天)内的订单才可以进行有操作按钮. 三个月(90天)以外的过了退货 换货期, 即便是保修也让他联系厂家, 不走线上
|
||
if (time() - $data['add_time'] > (86400 * 90)) {
|
||
return 0;
|
||
}
|
||
|
||
if (in_array($data['order_status'], [2, 4]) || (in_array($data['shipping_status'], [1]) && $data['order_status'] == 1 && $data['pay_status']==1)) {
|
||
return 1; // 退货按钮 (联系客服)
|
||
}
|
||
// if (in_array($data['shipping_status'], [1, 2]) && $data['order_status'] == 1) {
|
||
// return 1; // 退货按钮 (联系客服)
|
||
// }
|
||
|
||
return 0;
|
||
}
|
||
|
||
/**
|
||
* 取消详情
|
||
* @param $value
|
||
* @param $data
|
||
* @return int
|
||
*/
|
||
public function getCancelInfoAttr($value, $data)
|
||
{
|
||
// 三个月(90天)内的订单才可以进行有操作按钮. 三个月(90天)以外的过了退货 换货期, 即便是保修也让他联系厂家, 不走线上
|
||
if (time() - $data['add_time'] > (86400 * 90)) {
|
||
return 0;
|
||
}
|
||
if ($data['order_status'] == 3 && in_array($data['pay_status'],[1,3,4])) {
|
||
return 1; // 取消订单详情
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
|
||
/**废弃,禁止使用 获取订单状态的显示按钮(用户)*/
|
||
public function getOrderButtonAttr($value, $data)
|
||
{
|
||
/**
|
||
* 订单用户端显示按钮
|
||
* 去支付 AND pay_status=0 AND order_status=0 AND pay_code ! ="cod"
|
||
* 取消按钮 AND pay_status=0 AND shipping_status=0 AND order_status=0
|
||
* 确认收货 AND shipping_status=1 AND order_status=0
|
||
* 评价 AND order_status=1
|
||
* 查看物流 if(!empty(物流单号))
|
||
*/
|
||
$btn_arr = array(
|
||
'pay_btn' => 0, // 去支付按钮
|
||
'cancel_btn' => 0, // 取消按钮
|
||
'receive_btn' => 0, // 确认收货
|
||
'comment_btn' => 0, // 评价按钮
|
||
'shipping_btn' => 0, // 查看物流
|
||
'return_btn' => 0, // 退货按钮 (联系客服)
|
||
);
|
||
// 三个月(90天)内的订单才可以进行有操作按钮. 三个月(90天)以外的过了退货 换货期, 即便是保修也让他联系厂家, 不走线上
|
||
if (time() - $data['add_time'] > (86400 * 90)) {
|
||
return $btn_arr;
|
||
}
|
||
// 货到付款
|
||
if ($data['pay_code'] == 'cod') {
|
||
if (($data['order_status'] == 0 || $data['order_status'] == 1) && $data['shipping_status'] == 0) {
|
||
$btn_arr['cancel_btn'] = 1; // 取消按钮 (联系客服)
|
||
}
|
||
if ($data['shipping_status'] == 1 && $data['order_status'] == 1) //待收货
|
||
{
|
||
$btn_arr['receive_btn'] = 1; // 确认收货
|
||
$btn_arr['return_btn'] = 1; // 退货按钮 (联系客服)
|
||
}
|
||
} // 非货到付款
|
||
else {
|
||
if ($data['pay_status'] == 0 && $data['order_status'] == 0) // 待支付
|
||
{
|
||
$btn_arr['pay_btn'] = 1; // 去支付按钮
|
||
$btn_arr['cancel_btn'] = 1; // 取消按钮
|
||
}
|
||
if ($data['pay_status'] == 1 && $data['order_status'] < 2 && $data['shipping_status'] == 0) {
|
||
if ($data['prom_type'] == 6 || $data['prom_type'] == 4) {
|
||
$btn_arr['cancel_btn'] = 0;
|
||
} else {
|
||
$btn_arr['cancel_btn'] = 1; // 取消按钮
|
||
}
|
||
}
|
||
if ($data['pay_status'] == 1 && $data['order_status'] == 1 && $data['shipping_status'] == 1) {
|
||
$btn_arr['receive_btn'] = 1; // 确认收货
|
||
}
|
||
}
|
||
|
||
if ($data['order_status'] == 4 || $data['order_status'] == 5) {
|
||
$btn_arr['return_btn'] = 1; // 退货按钮 (联系客服)
|
||
}
|
||
if ($data['order_status'] == 2) {
|
||
if ($data['is_comment'] == 0) $btn_arr['comment_btn'] = 1; // 评价按钮
|
||
$btn_arr['return_btn'] = 1; // 退货按钮 (联系客服)
|
||
}
|
||
if ($data['shipping_status'] > 0 && $data['order_status'] == 1) {
|
||
$btn_arr['shipping_btn'] = 1; // 查看物流
|
||
}
|
||
if ($data['shipping_status'] == 2 && $data['order_status'] == 1) {
|
||
$btn_arr['return_btn'] = 1; // 退货按钮 (联系客服)
|
||
}
|
||
// if($data['order_status'] == 3 && ($data['pay_status'] == 1 || $data['pay_status'] == 4)){
|
||
// $btn_arr['cancel_info'] = 1; // 取消订单详情
|
||
// }
|
||
if ($data['order_status'] == 3 && ($data['pay_status'] == 1 || $data['pay_status'] == 4 || $data['pay_status'] == 3)) {
|
||
$btn_arr['cancel_info'] = 1; // 取消订单详情
|
||
}
|
||
return $btn_arr;
|
||
}
|
||
|
||
//废弃,禁止使用 虚拟订单操作按钮
|
||
public function getVirtualOrderButtonAttr($value, $data)
|
||
{
|
||
$vr_order_code = Db::name('vr_order_code')->where(['order_id' => $data['order_id']])->find();
|
||
$Virtual_btn_arr = array(
|
||
'pay_btn' => 0, // 去支付按钮
|
||
'cancel_btn' => 0, // 取消按钮
|
||
'receive_btn' => 0, // 确认收货
|
||
'comment_btn' => 0, // 评价按钮
|
||
);
|
||
if ($data['pay_status'] == 0 && $data['order_status'] == 0) { // 待支付
|
||
$Virtual_btn_arr['pay_btn'] = 1; // 去支付按钮
|
||
$Virtual_btn_arr['cancel_btn'] = 1; //未支付取消按钮
|
||
}
|
||
if (!empty($vr_order_code)) {
|
||
if ($data['pay_status'] == 1 && $data['order_status'] < 2 && $vr_order_code['vr_state'] != 1 && $vr_order_code['refund_lock'] < 1) {
|
||
if ($vr_order_code['vr_indate'] > time()) {
|
||
$Virtual_btn_arr['cancel_btn'] = 2; // 已支付取消按钮
|
||
}
|
||
if ($vr_order_code['vr_indate'] < time() && $vr_order_code['vr_invalid_refund'] == 1) {
|
||
$Virtual_btn_arr['cancel_btn'] = 2; // 已支付取消按钮
|
||
M('vr_order_code')->where(array('order_id' => $data['order_id']))->update(['vr_state' => 2]);
|
||
}
|
||
$Virtual_btn_arr['receive_btn'] = 1;
|
||
}
|
||
if ($data['order_status'] == 2) {
|
||
if ($data['is_comment'] == 0) $Virtual_btn_arr['comment_btn'] = 1; // 评价按钮
|
||
}
|
||
}
|
||
return $Virtual_btn_arr;
|
||
}
|
||
|
||
public function getAddressRegionAttr($value, $data)
|
||
{
|
||
$regions = Db::name('region')->where('id', 'IN', [$data['province'], $data['city'], $data['district'], $data['twon']])->order('level desc')->select();
|
||
$address = '';
|
||
if ($regions) {
|
||
foreach ($regions as $regionKey => $regionVal) {
|
||
$address = $regionVal['name'] . $address;
|
||
}
|
||
}
|
||
return $address;
|
||
}
|
||
|
||
public function getPayStatusDetailAttr($value, $data)
|
||
{
|
||
$pay_status = config('PAY_STATUS');
|
||
return $pay_status[$data['pay_status']];
|
||
}
|
||
|
||
public function getShippingStatusDetailAttr($value, $data)
|
||
{
|
||
$shipping_status = config('SHIPPING_STATUS');
|
||
return $shipping_status[$data['shipping_status']];
|
||
}
|
||
|
||
public function getPromTypeDescAttr($value, $data)
|
||
{
|
||
if ($data['prom_type'] == 4) {
|
||
return '预售订单';
|
||
} elseif ($data['prom_type'] == 5) {
|
||
return '虚拟订单';
|
||
} elseif ($data['prom_type'] == 6) {
|
||
return '拼团订单';
|
||
} else {
|
||
return '普通订单';
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 是否显示支付到期时间FinallyPayTime
|
||
* @param $value
|
||
* @param $data
|
||
* @return bool
|
||
*/
|
||
public function getPayBeforeTimeShowAttr($value, $data)
|
||
{
|
||
if ($data['prom_type'] == 4) {
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* 订单支付期限
|
||
* @param $value
|
||
* @param $data
|
||
* @return mixed
|
||
*/
|
||
public function getFinallyPayTimeAttr($value, $data)
|
||
{
|
||
return $data['add_time'] + config('finally_pay_time');
|
||
}
|
||
|
||
/**
|
||
* 付款URL
|
||
* @param $value
|
||
* @param $data
|
||
* @return string
|
||
*/
|
||
public function getPayUrlAttr($value, $data)
|
||
{
|
||
if ($data['prom_type'] == 4) {
|
||
return U('Cart/cart4', ['master_order_sn' => $data['master_order_sn']]);
|
||
} else {
|
||
return U('Cart/cart4', ['order_id' => $data['order_id']]);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 订单发票
|
||
* @return string
|
||
*/
|
||
public function invoice()
|
||
{
|
||
return $this->hasOne('invoice', 'order_id', 'order_id');
|
||
}
|
||
|
||
/**
|
||
* 配送方式
|
||
*/
|
||
public function getDeliveryMethodAttr($value, $data)
|
||
{
|
||
if ($data['shop_id'] > 0) {
|
||
return "上门自提";
|
||
} else {
|
||
return "快递配送";
|
||
}
|
||
}
|
||
|
||
public function getConsigneeDescAttr($value, $data)
|
||
{
|
||
if ($data['shop_id'] > 0) {
|
||
return "提货人";
|
||
} else {
|
||
return "收货人";
|
||
}
|
||
}
|
||
|
||
public function getShippingStatusDescAttr($value, $data)
|
||
{
|
||
$config = config('SHIPPING_STATUS');
|
||
return $config[$data['shipping_status']];
|
||
}
|
||
|
||
public function getCountGoodsNumAttr($value, $data)
|
||
{
|
||
return Db::name('order_goods')->where('order_id', $data['order_id'])->sum('goods_num');
|
||
}
|
||
|
||
|
||
/*
|
||
* 获取拼团订单的团长
|
||
*@param $value
|
||
* @param $data
|
||
* @return mixed
|
||
*/
|
||
public function getOrderTeamFoundAttr($value, $data)
|
||
{
|
||
if(6 !==$data['prom_type']){
|
||
return '';
|
||
}
|
||
$orderTeamFound = $this['team_found'];
|
||
if ($orderTeamFound) {
|
||
//团长的单
|
||
return $orderTeamFound;//团长
|
||
} else {
|
||
//去找团长
|
||
$TeamFound = new \app\common\model\TeamFound();
|
||
$teamFound = $TeamFound::get(['found_id' => $orderTeamFound['found_id']]);
|
||
return $teamFound;//团长
|
||
}
|
||
|
||
}
|
||
|
||
} |