123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- <?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 = ['gcj_lat', 'gcj_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['gcj_lat'];
- $long = $arr['gcj_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(['gcj_lat' => $lat, 'gcj_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', 'gcj_lat', 'gcj_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'],
- 'gcj_lat' => $arr['gcj_lat'],
- 'gcj_long' => $arr['gcj_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()
- {
- }
- }
|