|
@@ -0,0 +1,241 @@
|
|
|
+<?php
|
|
|
+namespace app\api\logic;
|
|
|
+
|
|
|
+use app\common\model\CookbookModel;
|
|
|
+use app\common\model\MealcenterModel;
|
|
|
+use app\common\model\MealModel;
|
|
|
+use app\common\model\MealOrdersModel;
|
|
|
+use app\common\model\UserAddressModel;
|
|
|
+use think\Db;
|
|
|
+
|
|
|
+class MealLogic
|
|
|
+{
|
|
|
+ /**
|
|
|
+ * 获取套餐配送中心列表
|
|
|
+ *
|
|
|
+ * @return void
|
|
|
+ * @author wj
|
|
|
+ * @date 2022-12-01
|
|
|
+ */
|
|
|
+ public function getcenterlist($arr)
|
|
|
+ {
|
|
|
+ $fillfields = ['lat', 'long'];
|
|
|
+ foreach ($fillfields as $key => $value) {
|
|
|
+ if (!isset($arr[$value]) || empty($arr[$value])) {
|
|
|
+ return backarr(0, "参数缺少");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $page = isset($arr['page']) && is_numeric($arr['page']) && !empty($arr['page']) && $arr['page'] > 0 ? $arr['page'] : 1;
|
|
|
+ $size = isset($arr['size']) && is_numeric($arr['size']) && !empty($arr['size']) && $arr['size'] > 0 ? $arr['size'] : 10;
|
|
|
+ $lat = $arr['lat'];
|
|
|
+ $long = $arr['long'];
|
|
|
+
|
|
|
+ $where = ['is_active' => 1];
|
|
|
+ $m_m = new MealcenterModel();
|
|
|
+ $count = $m_m->getList($where, 'count');
|
|
|
+ if ($count <= 0) {
|
|
|
+ return backarr(0, "无数据");
|
|
|
+ }
|
|
|
+ $totalpage = ceil($count / $size);
|
|
|
+ $page > $totalpage && $page = $totalpage;
|
|
|
+ $list = $m_m->getlistbycoord(['lat' => $lat, 'long' => $long], $page, $size);
|
|
|
+ $data = [
|
|
|
+ 'page' => $page,
|
|
|
+ 'size' => $size,
|
|
|
+ 'count' => $count,
|
|
|
+ 'list' => $list,
|
|
|
+ ];
|
|
|
+ return backarr(1, "查询成功", $data);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 获取套餐
|
|
|
+ *
|
|
|
+ * @return void
|
|
|
+ * @author wj
|
|
|
+ * @date 2022-12-01
|
|
|
+ */
|
|
|
+ public function getmeals($arr)
|
|
|
+ {
|
|
|
+ $fillfields = ['center_id'];
|
|
|
+ foreach ($fillfields as $key => $value) {
|
|
|
+ if (!isset($arr[$value]) || empty($arr[$value])) {
|
|
|
+ return backarr(0, "参数缺少");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $center_id = $arr['center_id'];
|
|
|
+ $m_m = new MealModel();
|
|
|
+ $where = [
|
|
|
+ 'center_id' => $center_id,
|
|
|
+ 'is_active' => 1,
|
|
|
+ ];
|
|
|
+ $mlist = $m_m->getList($where);
|
|
|
+ if (empty($mlist)) {
|
|
|
+ return backarr(0, "无数据");
|
|
|
+ }
|
|
|
+ $m_c = new CookbookModel();
|
|
|
+ foreach ($mlist as $key => $value) {
|
|
|
+ $value['cooks'] = $m_c->getcooks($center_id, $value['id']);
|
|
|
+ $mlist[$key] = $value;
|
|
|
+ }
|
|
|
+ return backarr(1, "查询成功", $mlist);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 创建订单
|
|
|
+ *
|
|
|
+ * @return void
|
|
|
+ * @author wj
|
|
|
+ * @date 2022-12-01
|
|
|
+ */
|
|
|
+ public function createOrder($arr)
|
|
|
+ {
|
|
|
+ $fillfields = ['center_id', 'meal_id', 'quantity', 'user_id'];
|
|
|
+ foreach ($fillfields as $key => $value) {
|
|
|
+ if (!isset($arr[$value]) || empty($arr[$value])) {
|
|
|
+ return backarr(0, "参数缺少");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $center_id = $arr['center_id'];
|
|
|
+ $meal_id = $arr['meal_id'];
|
|
|
+ $quantity = $arr['quantity'];
|
|
|
+ $userid = $arr['user_id'];
|
|
|
+ $m_mc = new MealcenterModel();
|
|
|
+ $mcinfo = $m_mc->getInfo(['id' => $center_id, 'is_active' => 1]);
|
|
|
+ if (empty($mcinfo)) {
|
|
|
+ return backarr(0, "配餐中心不存在");
|
|
|
+ }
|
|
|
+ $m_m = new MealModel();
|
|
|
+ $minfo = $m_m->getInfo(['id' => $meal_id, 'is_active' => 1]);
|
|
|
+ if (empty($minfo)) {
|
|
|
+ return backarr(0, "套餐信息不存在");
|
|
|
+ }
|
|
|
+ Db::startTrans();
|
|
|
+ try {
|
|
|
+ $m_ua = new UserAddressModel();
|
|
|
+ if (!isset($arr['address_id']) || empty($arr['address_id'])) {
|
|
|
+ $fillfields = ['receiver_address', 'address', 'receiver_name', 'receiver_telno', 'lat', 'long'];
|
|
|
+ foreach ($fillfields as $key => $value) {
|
|
|
+ if (!isset($arr[$value]) || empty($arr[$value])) {
|
|
|
+ throw new \Exception("参数缺少");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $insertData = [
|
|
|
+ 'receiver_address' => $arr['receiver_address'],
|
|
|
+ 'address' => $arr['address'],
|
|
|
+ 'receiver_name' => $arr['receiver_name'],
|
|
|
+ 'receiver_telno' => $arr['receiver_telno'],
|
|
|
+ 'lat' => $arr['lat'],
|
|
|
+ 'long' => $arr['long'],
|
|
|
+ 'user_id' => $userid,
|
|
|
+ ];
|
|
|
+ $uaid = $m_ua->insertData($insertData);
|
|
|
+ if (empty($uaid)) {
|
|
|
+ throw new \Exception("地址保存失败");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ $uaid = $arr['address_id'];
|
|
|
+ $uinfo = $m_ua->getInfo(['id' => $uaid]);
|
|
|
+ if (empty($uinfo)) {
|
|
|
+ throw new \Exception("无地址信息");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $many = bcmul($quantity, $minfo['price'], 2);
|
|
|
+ $m_c = new CookbookModel();
|
|
|
+ $cooks = $m_c->getcooks($center_id, $meal_id)->toArray();
|
|
|
+ $cooksids = implode(',', array_column($cooks, 'id'));
|
|
|
+ $orderno = date('ymdhis') . $center_id . $meal_id . $userid;
|
|
|
+ $remark = isset($arr['remark']) ? $arr['remark'] : '';
|
|
|
+ $insertData = [
|
|
|
+ 'center_id' => $center_id,
|
|
|
+ 'meal_id' => $meal_id,
|
|
|
+ 'orderno' => $orderno,
|
|
|
+ 'user_id' => $userid,
|
|
|
+ 'address_id' => $uaid,
|
|
|
+ 'quantity' => $quantity,
|
|
|
+ 'money' => $many,
|
|
|
+ 'status' => 0,
|
|
|
+ 'createtime' => date('Y-m-d H:i:s'),
|
|
|
+ //'status_delivery' => '',
|
|
|
+ //'deliverytime' => '',
|
|
|
+ 'cooks' => $cooksids,
|
|
|
+ 'remark' => $remark,
|
|
|
+ ];
|
|
|
+ $m_mo = new MealOrdersModel();
|
|
|
+ $moid = $m_mo->insertData($insertData);
|
|
|
+ if (empty($moid)) {
|
|
|
+ throw new \Exception("订单添加失败");
|
|
|
+ }
|
|
|
+ Db::commit();
|
|
|
+ return backarr(1, "订单添加成功", ['moid' => $moid]);
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ Db::rollback();
|
|
|
+ $msg = $e->getMessage();
|
|
|
+ return backarr(0, $msg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 根据id获取订单详情
|
|
|
+ *
|
|
|
+ * @return void
|
|
|
+ * @author wj
|
|
|
+ * @date 2022-12-02
|
|
|
+ */
|
|
|
+ public function getorderinfobyid()
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 获取订单列表 客户端查看
|
|
|
+ *
|
|
|
+ * @return void
|
|
|
+ * @author wj
|
|
|
+ * @date 2022-12-03
|
|
|
+ */
|
|
|
+ public function getorderlist($arr)
|
|
|
+ {
|
|
|
+ $wherefields = ['user_id', 'status'];
|
|
|
+ $where = [];
|
|
|
+ foreach ($wherefields as $key => $value) {
|
|
|
+ if ($arr[$value]) {
|
|
|
+ $where[$value] = $arr[$value];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $page = isset($arr['page']) && is_numeric($arr['page']) && !empty($arr['page']) && $arr['page'] > 0 ? $arr['page'] : 1;
|
|
|
+ $size = isset($arr['size']) && is_numeric($arr['size']) && !empty($arr['size']) && $arr['size'] > 0 ? $arr['size'] : 10;
|
|
|
+ $m_mo = new MealOrdersModel();
|
|
|
+ $m_m = new MealModel();
|
|
|
+ $m_ua = new UserAddressModel();
|
|
|
+ $count = $m_mo->getList($where, 'count');
|
|
|
+ if ($count <= 0) {
|
|
|
+ return backarr(0, "无数据");
|
|
|
+ }
|
|
|
+ $totalpage = ceil($count / $size);
|
|
|
+ $page > $totalpage && $page = $totalpage;
|
|
|
+ $mofield = ['id', 'orderno', 'meal_id', 'center_id', 'user_id', 'address_id', 'quantity', 'status', 'status_delivery'];
|
|
|
+ $list = $m_mo->getList($where, $mofield, $page, $size);
|
|
|
+ foreach ($list as $key => $value) {
|
|
|
+ $minfo = $m_m->getInfo(['id' => $value['meal_id']], ['name_meal', 'price']);
|
|
|
+ $uainfo = $m_ua->getInfo(['id' => $value['address_id']], "*");
|
|
|
+ $value['minfo'] = $minfo;
|
|
|
+ $value['uainfo'] = $uainfo;
|
|
|
+ $list[$key] = $value;
|
|
|
+ }
|
|
|
+ $data = [
|
|
|
+ 'page' => $page,
|
|
|
+ 'size' => $size,
|
|
|
+ 'count' => $count,
|
|
|
+ 'list' => $list,
|
|
|
+ ];
|
|
|
+ return backarr(1, "查询成功", $data);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 获取订单列表 配送员查看
|
|
|
+ *
|
|
|
+ * @return void
|
|
|
+ * @author wj
|
|
|
+ * @date 2022-12-03
|
|
|
+ */
|
|
|
+ public function getorderlistforcourier()
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+}
|