From 41ad75af08bbc65b197fec57851d3b67bdcb31a8 Mon Sep 17 00:00:00 2001 From: gitfjn <2860488097@qq.com> Date: Fri, 16 Jan 2026 18:26:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/controller/Calendar.php | 69 +++++++++++------------ application/api/controller/Staffgoods.php | 29 ++++++++-- application/api/model/OrderEvaluate.php | 17 ++++++ application/api/model/Orderexe.php | 7 +++ 4 files changed, 81 insertions(+), 41 deletions(-) create mode 100644 application/api/model/OrderEvaluate.php diff --git a/application/api/controller/Calendar.php b/application/api/controller/Calendar.php index d6ffad93..a4876a06 100644 --- a/application/api/controller/Calendar.php +++ b/application/api/controller/Calendar.php @@ -22,48 +22,47 @@ class Calendar extends ApiBase $startDate = $month . '-01'; $endDate = date('Y-m-t', strtotime($startDate)); // 获取该月最后一天 - // 查询该月份的所有服务数据 + // 查询该月份的所有服务数据,关联商品表和员工表 $service = Db::name('order_exe') - ->where('date', '>=', $startDate) - ->where('date', '<=', $endDate) - ->where('abnormal', 0) - ->order('date asc, addtime asc') + ->alias('oe') + ->join('goods g', 'oe.goods_id = g.id', 'LEFT') + ->join('staff s', 'oe.staff_id = s.id', 'LEFT') + ->where('oe.date', '>=', $startDate) + ->where('oe.date', '<=', $endDate) + ->where('oe.abnormal', 0) + ->where('s.onwork', 1) + ->where('s.leave', 1) + ->where('oe.staff_id', '<>', null) + ->field('oe.date,oe.addtime,oe.start_time,oe.timeout,oe.xq,oe.staff_id,s.name as staff_name,g.name as goods_name') + ->order('oe.date asc, oe.addtime asc') ->select(); $serviceDate = []; if ($service) { - //查询到有数据,就去找服务人员 foreach ($service as $v) { - if ($v['staff_id'] != null) { - $staffName = Db::name('staff')->where('id', $v['staff_id']) - ->where('onwork', 1) - ->where('leave', 1) - ->find(); - if ($staffName){ - // 处理服务时间 - $timeRange = ''; - if (!empty($v['start_time']) && !empty($v['timeout'])) { - // 判断是否为时间戳(数字) - $startTimestamp = is_numeric($v['start_time']) ? $v['start_time'] : strtotime($v['start_time']); - $timeoutTimestamp = is_numeric($v['timeout']) ? $v['timeout'] : strtotime($v['timeout']); - $startTime = date('H:i', $startTimestamp); - $timeoutTime = date('H:i', $timeoutTimestamp); - $timeRange = $startTime . '-' . $timeoutTime; - } elseif (!empty($v['start_time'])) { - $startTimestamp = is_numeric($v['start_time']) ? $v['start_time'] : strtotime($v['start_time']); - $startTime = date('H:i', $startTimestamp); - $timeRange = $startTime; - } - - $serviceDate[] = [ - 'date' => $v['date'], - 'staff_name' => $staffName['name'], - 'addtime' => $v['addtime'] == 1 ? '上午' : ($v['addtime'] == 2 ? '下午' : ''), //1表示上午,2表示下午 - 'serviceTime' => $timeRange, - 'xq' => $v['xq'] ?? $this->getChineseWeekDay($v['date']), // 如果没有xq字段,则根据日期计算 - ]; - } + // 处理服务时间 + $timeRange = ''; + if (!empty($v['start_time']) && !empty($v['timeout'])) { + // 判断是否为时间戳(数字) + $startTimestamp = is_numeric($v['start_time']) ? $v['start_time'] : strtotime($v['start_time']); + $timeoutTimestamp = is_numeric($v['timeout']) ? $v['timeout'] : strtotime($v['timeout']); + $startTime = date('H:i', $startTimestamp); + $timeoutTime = date('H:i', $timeoutTimestamp); + $timeRange = $startTime . '-' . $timeoutTime; + } elseif (!empty($v['start_time'])) { + $startTimestamp = is_numeric($v['start_time']) ? $v['start_time'] : strtotime($v['start_time']); + $startTime = date('H:i', $startTimestamp); + $timeRange = $startTime; } + + $serviceDate[] = [ + 'date' => $v['date'], + 'staff_name' => $v['staff_name'] ?? '', + 'goods_name' => $v['goods_name'] ?? '', + 'addtime' => $v['addtime'] == 1 ? '上午' : ($v['addtime'] == 2 ? '下午' : ''), //1表示上午,2表示下午 + 'serviceTime' => $timeRange, + 'xq' => $v['xq'] ?? $this->getChineseWeekDay($v['date']), // 如果没有xq字段,则根据日期计算 + ]; } } return $this->_success("成功", $serviceDate); diff --git a/application/api/controller/Staffgoods.php b/application/api/controller/Staffgoods.php index 6295aac6..144fbb52 100644 --- a/application/api/controller/Staffgoods.php +++ b/application/api/controller/Staffgoods.php @@ -2,7 +2,8 @@ namespace app\api\controller; use app\api\logic\StaffgoodsLogic; use app\common\server\UrlServer; -use app\api\model\{Orderexe}; +use app\api\model\OrderEvaluate; +use app\api\model\Orderexe; use think\Db; class Staffgoods extends ApiBase @@ -412,17 +413,33 @@ class Staffgoods extends ApiBase if (!empty($zorderId)) { $where['order_id'] = $zorderId; } - $lists = Db::name('orderexe_evaluate') + $lists = OrderEvaluate::with(['orderexe' => function ($query) { + $query->field('id,goods_id'); + }, 'orderexe.goods']) ->where($where) ->order('id desc') ->paginate(10); + // 获取 items 并修改 $items = $lists->items(); - foreach ($items as $k => $v) { - $items[$k]['create_time'] = date('Y-m', $v['create_time']); + $dataArray = []; + if (is_array($items) && count($items) > 0) { + foreach ($items as $v) { + $dataArray[] = [ + 'id' => $v['id'], + 'content' => $v['content'], + 'create_time' => date('Y-m-d', $v['create_time']), + 'eceives' => $v['eceives'], + 'eceivesd' => $v['eceivesd'], + 'score' => $v['score'], + 'goods_name' => $v['orderexe']['goods']['name'], + 'goods_image' => $v['orderexe']['goods']['image'], + 'min_price' => $v['orderexe']['goods']['min_price'], + ]; + } } - $lists->items($items); - $this->_success('获取数据成功', $lists); + + $this->_success('获取数据成功', $dataArray); } //员工的工资单 diff --git a/application/api/model/OrderEvaluate.php b/application/api/model/OrderEvaluate.php new file mode 100644 index 00000000..dd65ce7a --- /dev/null +++ b/application/api/model/OrderEvaluate.php @@ -0,0 +1,17 @@ +hasOne('Orderexe','id','order_id'); + } +} \ No newline at end of file diff --git a/application/api/model/Orderexe.php b/application/api/model/Orderexe.php index 2b15b79d..2e551ac1 100644 --- a/application/api/model/Orderexe.php +++ b/application/api/model/Orderexe.php @@ -97,6 +97,13 @@ class Orderexe extends Model return $this->hasMany('order_goods', 'order_id', 'id'); } + //关联商品 + public function goods() + { + return $this->belongsTo('goods', 'goods_id', 'id') + ->field('id,name,image,min_price'); + } + public function getGoodsCountAttr($value, $data) {