智慧教务系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

194 lines
5.8 KiB

<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址:https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\service\admin\order_table;
use app\model\order_table\OrderTable;
use app\model\customer_resources\CustomerResources;
use app\model\course\Course;
use app\model\class_grade\ClassGrade;
use app\model\personnel\Personnel;
use core\base\BaseAdminService;
/**
* 订单服务层
* Class OrderTableService
* @package app\service\admin\order_table
*/
class OrderTableService extends BaseAdminService
{
public function __construct()
{
parent::__construct();
$this->model = new OrderTable();
}
/**
* 获取订单列表
* @param array $where
* @return array
*/
public function getPage(array $data = [])
{
$where = [];
$field = 'id,resource_id,payment_id,order_type,order_status,payment_type,order_amount,course_id,class_id,staff_id,after_sales_status,after_sales_reason,after_sales_time,created_at,updated_at,payment_time,subscription_payment_time';
$order = 'id desc';
if($data['order_status']){
$where[] = ['order_status','=',$data['order_status']];
}
if($data['payment_type']){
$where[] = ['payment_type','=',$data['payment_type']];
}
if($data['resource_id']){
$where[] = ['resource_id','=',$data['resource_id']];
}
if($data['order_type']){
$where[] = ['order_type','=',$data['order_type']];
}
$search_model = $this->model->where($where)->with(['customerResources','course','classGrade','personnel'])->field($field)->order($order);
return $this->pageQuery($search_model, function ($item, $key) {
$type = [1=>'新订单',2=>'续费订单',3=>'内部员工订单'];
$item['type'] = $type[$item['order_type']] ?? '';
});
}
/**
* 获取订单信息
* @param int $id
* @return array
*/
public function getInfo(int $id)
{
$field = 'id,resource_id,payment_id,order_status,payment_type,order_amount,course_id,class_id,staff_id,after_sales_status,after_sales_reason,after_sales_time,created_at,updated_at,payment_time,subscription_payment_time';
$info = $this->model->field($field)->where([['id', "=", $id]])->with(['customerResources','course','classGrade','personnel'])->findOrEmpty()->toArray();
return $info;
}
/**
* 添加订单
* @param array $data
* @return mixed
*/
public function add(array $data)
{
$personnel = new Personnel();
// $data['staff_id'] = $personnel->where(['sys_user_id' => $this->uid])->value("id");
// if(!$data['staff_id']){
// return fail("操作人员角色不对");
// }
$cr = new CustomerResources();
$data['campus_id'] = $cr->where(['id' => $data['resource_id']])->value("campus");
$data['staff_id'] = 51;
$res = $this->model->create($data);
return success("操作成功");
}
/**
* 订单编辑
* @param int $id
* @param array $data
* @return bool
*/
public function edit(int $id, array $data)
{
$cr = new CustomerResources();
$data['campus_id'] = $cr->where(['id' => $data['resource_id']])->value("campus");
$this->model->where([['id', '=', $id]])->update($data);
return true;
}
/**
* 删除订单
* @param int $id
* @return bool
*/
public function del(int $id)
{
$model = $this->model->where([['id', '=', $id]])->find();
$res = $model->delete();
return $res;
}
public function getCustomerResourcesAll(){
$customerResourcesModel = new CustomerResources();
return $customerResourcesModel->select()->toArray();
}
public function getCourseAll(){
$courseModel = new Course();
return $courseModel->select()->toArray();
}
public function getClassGradeAll(){
$classGradeModel = new ClassGrade();
return $classGradeModel->select()->toArray();
}
public function getPersonnelAll(){
$personnelModel = new Personnel();
return $personnelModel->select()->toArray();
}
/**
* 获取订单详情(带完整关联数据)
* @param int $id
* @return array
*/
public function getOrderDetail(int $id)
{
// 查询订单基础信息及关联数据
$order = $this->model
->where([['id', '=', $id]])
->with([
'customerResources', // 客户资源
'course', // 课程
'classGrade', // 班级
'personnel', // 员工
'student', // 学员
'campus' // 校区
])
->findOrEmpty()
->toArray();
if (empty($order)) {
return [];
}
// 如果有赠品ID,单独查询赠品信息
if (!empty($order['gift_id'])) {
$giftInfo = db('shcool_resources_gift')
->where('id', $order['gift_id'])
->field('id,gift_name,gift_type,gift_status')
->find();
$order['gift_info'] = $giftInfo ?: [];
} else {
$order['gift_info'] = [];
}
return $order;
}
}