初始版本
This commit is contained in:
660
server/app/common/model/order/Order.php
Executable file
660
server/app/common/model/order/Order.php
Executable file
@@ -0,0 +1,660 @@
|
||||
<?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\model\order;
|
||||
|
||||
|
||||
use app\common\enum\OrderEnum;
|
||||
use app\common\enum\PayEnum;
|
||||
use app\common\enum\user\UserTerminalEnum;
|
||||
use app\common\enum\YesNoEnum;
|
||||
use app\common\model\BaseModel;
|
||||
use app\common\model\coach\Coach;
|
||||
use app\common\model\Region;
|
||||
use app\common\model\shop\Shop;
|
||||
use app\common\model\user\User;
|
||||
use app\common\service\ConfigService;
|
||||
use think\model\concern\SoftDelete;
|
||||
|
||||
/**
|
||||
* 订单模型类
|
||||
* Class Order
|
||||
* @package app\common\model\order
|
||||
*/
|
||||
class Order extends BaseModel
|
||||
{
|
||||
use SoftDelete;
|
||||
|
||||
protected $json = ['extra','car_config_snap','address_snap'];
|
||||
|
||||
protected $deleteTime = 'delete_time';
|
||||
|
||||
// 设置JSON数据返回数组
|
||||
protected $jsonAssoc = true;
|
||||
|
||||
/**
|
||||
* 用户端显示按钮:取消订单;立即支付;加时(接单后就显示,到服务完成);补差价(接单完成后就显示,到服务完成);评论;查看评论
|
||||
* 师傅端显示按钮:立即接单;立即出发;已达到(需要定位,上传图片);开始服务;服务完成(需要定位,上传图片)
|
||||
*/
|
||||
|
||||
public function coachInfo()
|
||||
{
|
||||
return $this->hasOne(Coach::class,'id','coach_id')->field('id,sn,name,work_photo,mobile');
|
||||
}
|
||||
|
||||
|
||||
public function userInfo()
|
||||
{
|
||||
return $this->hasOne(User::class,'id','user_id')->field('id,sn,nickname,avatar');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 指派技师
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return int
|
||||
* @author cjhao
|
||||
* @date 2024/11/17 21:58
|
||||
*/
|
||||
public function getDispatchBtnAttr($value,$data)
|
||||
{
|
||||
$btn = 0;
|
||||
if($data['order_status'] > OrderEnum::ORDER_STATUS_WAIT_PAY && $data['order_status'] < OrderEnum::ORDER_STATUS_DEPART){
|
||||
$btn = 1;
|
||||
}
|
||||
return $btn;
|
||||
|
||||
}
|
||||
/**
|
||||
* 师傅端按钮-start
|
||||
*/
|
||||
/**
|
||||
* @notes 待接单按钮
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return int
|
||||
* @author cjhao
|
||||
* @date 2024/9/13 16:55
|
||||
*/
|
||||
public function getTakeOrderBtnAttr($value,$data)
|
||||
{
|
||||
$btn = 0;
|
||||
if(OrderEnum::ORDER_STATUS_WAIT_RECEIVING == $data['order_status']){
|
||||
$btn = 1;
|
||||
}
|
||||
return $btn;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 出发按钮
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return int
|
||||
* @author cjhao
|
||||
* @date 2024/9/13 16:59
|
||||
*/
|
||||
public function getDepartBtnAttr($value,$data)
|
||||
{
|
||||
$btn = 0;
|
||||
if(OrderEnum::ORDER_STATUS_WAIT_DEPART == $data['order_status']){
|
||||
$btn = 1;
|
||||
}
|
||||
return $btn;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 到达按钮
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return int
|
||||
* @author cjhao
|
||||
* @date 2024/9/13 17:04
|
||||
*/
|
||||
public function getArriveBtnAttr($value,$data)
|
||||
{
|
||||
$btn = 0;
|
||||
if(OrderEnum::ORDER_STATUS_DEPART == $data['order_status']){
|
||||
$btn = 1;
|
||||
}
|
||||
return $btn;
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 服务开始
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return int
|
||||
* @author cjhao
|
||||
* @date 2024/9/13 17:05
|
||||
*/
|
||||
public function getServerStartBtnAttr($value,$data)
|
||||
{
|
||||
$btn = 0;
|
||||
if(OrderEnum::ORDER_STATUS_ARRIVE == $data['order_status']){
|
||||
$btn = 1;
|
||||
}
|
||||
return $btn;
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 服务完成按钮
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return int
|
||||
* @author cjhao
|
||||
* @date 2024/9/13 17:07
|
||||
*/
|
||||
public function getServerFinishBtnAttr($value,$data)
|
||||
{
|
||||
$btn = 0;
|
||||
if(OrderEnum::ORDER_STATUS_START_SERVER == $data['order_status']){
|
||||
$btn = 1;
|
||||
}
|
||||
return $btn;
|
||||
|
||||
|
||||
}
|
||||
/**
|
||||
* 师傅端按钮-end
|
||||
*/
|
||||
|
||||
/**
|
||||
* 用户端按钮-start
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @notes 差价按钮
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return int
|
||||
* @author cjhao
|
||||
* @date 2024/9/20 01:40
|
||||
*/
|
||||
public function getGapBtnAttr($value,$data)
|
||||
{
|
||||
$btn = 0;
|
||||
if( $data['order_status'] < OrderEnum::ORDER_STATUS_SERVER_FINISH && $data['order_status'] > OrderEnum::ORDER_STATUS_WAIT_RECEIVING){
|
||||
$btn = 1;
|
||||
}
|
||||
return $btn;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 加钟按钮
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return int
|
||||
* @author cjhao
|
||||
* @date 2024/9/20 01:40
|
||||
*/
|
||||
public function getAppendBtnAttr($value,$data)
|
||||
{
|
||||
$btn = 0;
|
||||
if( $data['order_status'] < OrderEnum::ORDER_STATUS_SERVER_FINISH && $data['order_status'] > OrderEnum::ORDER_STATUS_WAIT_RECEIVING){
|
||||
$btn = 1;
|
||||
}
|
||||
return $btn;
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 取消按钮
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return int
|
||||
* @author ljj
|
||||
* @date 2022/2/11 12:08 下午
|
||||
*/
|
||||
public function getCancelBtnAttr($value,$data)
|
||||
{
|
||||
$btn = YesNoEnum::NO;
|
||||
//待支付或预约中的订单可以取消
|
||||
if ($data['order_status'] < OrderEnum::ORDER_STATUS_SERVER_FINISH) {
|
||||
$btn = YesNoEnum::YES;
|
||||
}
|
||||
return $btn;
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 取消按钮
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return int
|
||||
* @author ljj
|
||||
* @date 2022/2/11 12:08 下午
|
||||
*/
|
||||
public function getUserCancelBtnAttr($value,$data)
|
||||
{
|
||||
$btn = YesNoEnum::NO;
|
||||
//待支付或预约中的订单可以取消
|
||||
if ($data['order_status'] < OrderEnum::ORDER_STATUS_WAIT_DEPART) {
|
||||
$btn = YesNoEnum::YES;
|
||||
}
|
||||
return $btn;
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 退款按钮
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return int
|
||||
* @author ljj
|
||||
* @date 2022/2/11 12:08 下午
|
||||
*/
|
||||
public function getRefundBtnAttr($value,$data)
|
||||
{
|
||||
$btn = YesNoEnum::NO;
|
||||
//待支付或预约中的订单可以取消
|
||||
if($data['order_status'] < OrderEnum::ORDER_STATUS_SERVER_FINISH){
|
||||
return $btn;
|
||||
}
|
||||
if (PayEnum::ISPAID == $data['pay_status'] && $data['total_order_amount'] > $data['total_refund_amount']) {
|
||||
$btn = YesNoEnum::YES;
|
||||
}
|
||||
return $btn;
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 删除按钮
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return int
|
||||
* @author ljj
|
||||
* @date 2022/2/11 2:57 下午
|
||||
*/
|
||||
public function getDelBtnAttr($value,$data)
|
||||
{
|
||||
$btn = YesNoEnum::NO;
|
||||
//已关闭的订单可以删除
|
||||
if ($data['order_status'] == OrderEnum::ORDER_STATUS_CLOSE) {
|
||||
$btn = YesNoEnum::YES;
|
||||
}
|
||||
|
||||
return $btn;
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 支付按钮
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return int
|
||||
* @author ljj
|
||||
* @date 2022/2/28 9:48 上午
|
||||
*/
|
||||
public function getPayBtnAttr($value,$data)
|
||||
{
|
||||
$btn = YesNoEnum::NO;
|
||||
if ($data['order_status'] == OrderEnum::ORDER_STATUS_WAIT_PAY && $data['pay_status'] == PayEnum::UNPAID) {
|
||||
$btn = YesNoEnum::YES;
|
||||
}
|
||||
|
||||
return $btn;
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 评价按钮
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return int
|
||||
* @author ljj
|
||||
* @date 2022/2/28 9:52 上午
|
||||
*/
|
||||
public function getCommentBtnAttr($value,$data)
|
||||
{
|
||||
$btn = YesNoEnum::NO;
|
||||
if ($data['order_status'] == OrderEnum::ORDER_STATUS_SERVER_FINISH) {
|
||||
$is_comment = OrderGoods::where(['order_id'=>$data['id']])->value('is_comment');
|
||||
if ($is_comment == YesNoEnum::NO) {
|
||||
$btn = YesNoEnum::YES;
|
||||
}
|
||||
}
|
||||
|
||||
return $btn;
|
||||
}
|
||||
|
||||
public function getLookCommentBtnAttr($value,$data)
|
||||
{
|
||||
$btn = YesNoEnum::NO;
|
||||
if ($data['order_status'] == OrderEnum::ORDER_STATUS_SERVER_FINISH) {
|
||||
$isComment = OrderGoods::where(['order_id'=>$data['id']])->value('is_comment');
|
||||
if ($isComment == YesNoEnum::YES) {
|
||||
$btn = YesNoEnum::YES;
|
||||
}
|
||||
}
|
||||
return $btn;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户端按钮-end
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @notes 关联用户模型
|
||||
* @return \think\model\relation\HasOne
|
||||
* @author ljj
|
||||
* @date 2022/2/10 6:36 下午
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class,'id','user_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 获取订单距离
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return string
|
||||
* @author cjhao
|
||||
* @date 2024/9/13 16:30
|
||||
*/
|
||||
public function getOrderDistanceDescAttr($value,$data)
|
||||
{
|
||||
return $data['order_distance'].'km';
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 关联订单服务模型
|
||||
* @return \think\model\relation\HasMany
|
||||
* @author ljj
|
||||
* @date 2022/2/10 6:52 下午
|
||||
*/
|
||||
public function orderGoods()
|
||||
{
|
||||
return $this->hasMany(OrderGoods::class,'order_id','id');
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 关联订单日志模型
|
||||
* @return \think\model\relation\HasMany
|
||||
* @author ljj
|
||||
* @date 2022/2/10 6:53 下午
|
||||
*/
|
||||
public function orderLog()
|
||||
{
|
||||
return $this->hasMany(OrderLog::class,'order_id','id')->append(['operator']);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 预约时间
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return false|string
|
||||
* @author ljj
|
||||
* @date 2022/2/11 10:11 上午
|
||||
*/
|
||||
public function getAppointTimeAttr($value,$data)
|
||||
{
|
||||
return date('H:i',$data['appoint_time']);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 预约时间
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return false|string
|
||||
* @author ljj
|
||||
* @date 2022/2/11 10:11 上午
|
||||
*/
|
||||
public function getAppointTimeDescAttr($value,$data)
|
||||
{
|
||||
return date('Y-m-d H:i',$data['appoint_time']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 预约时间段
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return string
|
||||
* @author cjhao
|
||||
* @date 2024/9/14 12:38
|
||||
*/
|
||||
public function getAppointDateAttr($value,$data)
|
||||
{
|
||||
return date('m-d',$data['appoint_time']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 预约日期
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return string
|
||||
* @author ljj
|
||||
* @date 2022/2/11 10:09 上午
|
||||
*/
|
||||
public function getAppointWeekAttr($value,$data)
|
||||
{
|
||||
$weekarray = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];
|
||||
return $weekarray[date("w",$data['appoint_time'])];
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 上门时间
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return string
|
||||
* @author ljj
|
||||
* @date 2022/2/11 10:54 上午
|
||||
*/
|
||||
public function getDoorTimeAttr($value,$data)
|
||||
{
|
||||
$appoint_time_start = date('H:i',$data['appoint_time_start']);
|
||||
$appoint_time_end = date('H:i',$data['appoint_time_end']);
|
||||
return $appoint_time_start.'-'.$appoint_time_end;
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 支付状态
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return string|string[]
|
||||
* @author ljj
|
||||
* @date 2022/2/11 11:08 上午
|
||||
*/
|
||||
public function getPayStatusDescAttr($value,$data)
|
||||
{
|
||||
return PayEnum::getPayStatusDesc($data['pay_status']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 支付方式
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return string|string[]
|
||||
* @author ljj
|
||||
* @date 2022/2/11 12:01 下午
|
||||
*/
|
||||
public function getPayWayDescAttr($value,$data)
|
||||
{
|
||||
return PayEnum::getPayTypeDesc($data['pay_way']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 订单状态
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return string|string[]
|
||||
* @author ljj
|
||||
* @date 2022/2/11 11:59 上午
|
||||
*/
|
||||
public function getOrderStatusDescAttr($value,$data)
|
||||
{
|
||||
return OrderEnum::getOrderStatusDesc($data['order_status']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 核销状态
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return string|string[]
|
||||
* @author ljj
|
||||
* @date 2022/2/11 12:02 下午
|
||||
*/
|
||||
public function getVerificationStatusDescAttr($value,$data)
|
||||
{
|
||||
return OrderEnum::getVerificationStatusDesc($data['verification_status']);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 支付时间
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @author ljj
|
||||
* @date 2022/2/28 11:02 上午
|
||||
*/
|
||||
public function getPayTimeAttr($value,$data)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s',$value) : '-';
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return string
|
||||
* @author cjhao
|
||||
* @date 2024/11/20 16:05
|
||||
*/
|
||||
public function getTrueServerFinishTimeAttr($value,$data){
|
||||
return $value ? date('Y-m-d H:i:s',$value) : '-';
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 完成时间
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @author ljj
|
||||
* @date 2022/2/28 11:02 上午
|
||||
*/
|
||||
public function getFinishTimeAttr($value,$data)
|
||||
{
|
||||
return $value ? date('Y-m-d H:i:s',$value) : '-';
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @notes 未支付订单自动取消时间
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return float|int|string
|
||||
* @author ljj
|
||||
* @date 2022/3/15 4:28 下午
|
||||
*/
|
||||
public function getOrderCancelTimeAttr($value, $data)
|
||||
{
|
||||
$end_time = 0;
|
||||
$is_cancel = ConfigService::get('transaction', 'cancel_unpaid_orders',1);
|
||||
if ($data['order_status'] == 0 && $data['pay_status'] == 0 && $is_cancel == 1) {
|
||||
$order_cancel_time = ConfigService::get('transaction', 'cancel_unpaid_orders_times',30);
|
||||
$end_time = $data['create_time'] + $order_cancel_time * 60;
|
||||
}
|
||||
return $end_time;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @notes 省
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
* @author ljj
|
||||
* @date 2022/4/6 6:57 下午
|
||||
*/
|
||||
public function getProvinceAttr($value,$data)
|
||||
{
|
||||
return Region::where(['id'=>$data['province_id']])->value('name');
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 市
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
* @author ljj
|
||||
* @date 2022/4/6 7:02 下午
|
||||
*/
|
||||
public function getCityAttr($value,$data)
|
||||
{
|
||||
return Region::where(['id'=>$data['city_id']])->value('name');
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 区
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return mixed
|
||||
* @author ljj
|
||||
* @date 2022/4/6 7:02 下午
|
||||
*/
|
||||
public function getDistrictAttr($value,$data)
|
||||
{
|
||||
return Region::where(['id'=>$data['district_id']])->value('name');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 派单状态
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return string|string[]
|
||||
* @author ljj
|
||||
* @date 2022/8/29 4:57 下午
|
||||
*/
|
||||
public function getDispatchDescAttr($value,$data)
|
||||
{
|
||||
return OrderEnum::getDispatchDesc($data['is_dispatch']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 订单来源
|
||||
* @param $value
|
||||
* @param $data
|
||||
* @return array|mixed|string|string[]
|
||||
* @author cjhao
|
||||
* @date 2024/9/21 23:49
|
||||
*/
|
||||
public function getOrderTerminalDescAttr($value,$data)
|
||||
{
|
||||
return UserTerminalEnum::getTermInalDesc($data['order_terminal']);
|
||||
}
|
||||
|
||||
public function orderGap()
|
||||
{
|
||||
return $this->hasMany(OrderGap::class,'order_id','id')->where(['pay_status'=>PayEnum::ISPAID])->withoutField('create_time,update_time,delete_time');
|
||||
}
|
||||
|
||||
|
||||
public function orderAppend()
|
||||
{
|
||||
return $this->hasMany(OrderAppend::class,'order_id','id')->where(['pay_status'=>PayEnum::ISPAID])->field('sn,order_id,pay_status,goods_name,goods_id,duration,refund_amount,goods_num,pay_time,goods_price,order_amount');
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user