MealLogic.php 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. <?php
  2. namespace app\api\logic;
  3. use app\common\model\MealcenterModel;
  4. use app\common\model\MealcookModel;
  5. use app\common\model\MealModel;
  6. use app\common\model\MealOrdersModel;
  7. use app\common\model\UserAddressModel;
  8. use think\Db;
  9. class MealLogic
  10. {
  11. /**
  12. * 获取套餐配送中心列表
  13. *
  14. * @return void
  15. * @author wj
  16. * @date 2022-12-01
  17. */
  18. public function getcenterlist($arr)
  19. {
  20. $fillfields = ['gcj_lat', 'gcj_long'];
  21. foreach ($fillfields as $key => $value) {
  22. if (!isset($arr[$value]) || empty($arr[$value])) {
  23. return backarr(0, "参数缺少");
  24. }
  25. }
  26. $page = isset($arr['page']) && is_numeric($arr['page']) && !empty($arr['page']) && $arr['page'] > 0 ? $arr['page'] : 1;
  27. $size = isset($arr['size']) && is_numeric($arr['size']) && !empty($arr['size']) && $arr['size'] > 0 ? $arr['size'] : 10;
  28. $lat = $arr['gcj_lat'];
  29. $long = $arr['gcj_long'];
  30. $where = ['is_active' => 1];
  31. $m_m = new MealcenterModel();
  32. $count = $m_m->getList($where, 'count');
  33. if ($count <= 0) {
  34. return backarr(0, "无数据");
  35. }
  36. $totalpage = ceil($count / $size);
  37. $page > $totalpage && $page = $totalpage;
  38. $list = $m_m->getlistbycoord(['gcj_lat' => $lat, 'gcj_long' => $long], $page, $size);
  39. $data = [
  40. 'page' => $page,
  41. 'size' => $size,
  42. 'count' => $count,
  43. 'list' => $list,
  44. ];
  45. return backarr(1, "查询成功", $data);
  46. }
  47. /**
  48. * 获取套餐
  49. *
  50. * @return void
  51. * @author wj
  52. * @date 2022-12-01
  53. */
  54. public function getmeals($arr)
  55. {
  56. $fillfields = ['center_id'];
  57. foreach ($fillfields as $key => $value) {
  58. if (!isset($arr[$value]) || empty($arr[$value])) {
  59. return backarr(0, "参数缺少");
  60. }
  61. }
  62. $center_id = $arr['center_id'];
  63. $m_m = new MealModel();
  64. $where = [
  65. 'center_id' => $center_id,
  66. 'is_active' => 1,
  67. ];
  68. $mlist = $m_m->getList($where);
  69. if (empty($mlist)) {
  70. return backarr(0, "无数据");
  71. }
  72. $m_mc = new MealcookModel();
  73. foreach ($mlist as $key => $value) {
  74. $value['cooks'] = $m_mc->getcooks($center_id, $value['id']);
  75. $mlist[$key] = $value;
  76. }
  77. return backarr(1, "查询成功", $mlist);
  78. }
  79. /**
  80. * 创建订单 待改
  81. *
  82. * @return void
  83. * @author wj
  84. * @date 2022-12-01
  85. */
  86. public function createOrder($arr)
  87. {
  88. $fillfields = ['center_id', 'meal_id', 'quantity', 'user_id'];
  89. foreach ($fillfields as $key => $value) {
  90. if (!isset($arr[$value]) || empty($arr[$value])) {
  91. return backarr(0, "参数缺少");
  92. }
  93. }
  94. $center_id = $arr['center_id'];
  95. $meal_id = $arr['meal_id'];
  96. $quantity = $arr['quantity'];
  97. $userid = $arr['user_id'];
  98. $m_mc = new MealcenterModel();
  99. $mcinfo = $m_mc->getInfo(['id' => $center_id, 'is_active' => 1]);
  100. if (empty($mcinfo)) {
  101. return backarr(0, "配餐中心不存在");
  102. }
  103. $m_m = new MealModel();
  104. $minfo = $m_m->getInfo(['id' => $meal_id, 'is_active' => 1]);
  105. if (empty($minfo)) {
  106. return backarr(0, "套餐信息不存在");
  107. }
  108. Db::startTrans();
  109. try {
  110. $m_ua = new UserAddressModel();
  111. if (!isset($arr['address_id']) || empty($arr['address_id'])) {
  112. $fillfields = ['receiver_address', 'address', 'receiver_name', 'receiver_telno', 'gcj_lat', 'gcj_long'];
  113. foreach ($fillfields as $key => $value) {
  114. if (!isset($arr[$value]) || empty($arr[$value])) {
  115. throw new \Exception("参数缺少");
  116. }
  117. }
  118. $insertData = [
  119. 'receiver_address' => $arr['receiver_address'],
  120. 'address' => $arr['address'],
  121. 'receiver_name' => $arr['receiver_name'],
  122. 'receiver_telno' => $arr['receiver_telno'],
  123. 'gcj_lat' => $arr['gcj_lat'],
  124. 'gcj_long' => $arr['gcj_long'],
  125. 'user_id' => $userid,
  126. ];
  127. $uaid = $m_ua->insertData($insertData);
  128. if (empty($uaid)) {
  129. throw new \Exception("地址保存失败");
  130. }
  131. } else {
  132. $uaid = $arr['address_id'];
  133. $uinfo = $m_ua->getInfo(['id' => $uaid]);
  134. if (empty($uinfo)) {
  135. throw new \Exception("无地址信息");
  136. }
  137. }
  138. $many = bcmul($quantity, $minfo['price'], 2);
  139. //$m_c = new CookbookModel();
  140. $m_mc = new MealcookModel();
  141. $cooks = $m_mc->getcooks($center_id, $meal_id);
  142. $cooksids = implode(',', array_column($cooks, 'id'));
  143. $orderno = date('ymdhis') . $center_id . $meal_id . $userid;
  144. $remark = isset($arr['remark']) ? $arr['remark'] : '';
  145. $insertData = [
  146. 'center_id' => $center_id,
  147. 'meal_id' => $meal_id,
  148. 'orderno' => $orderno,
  149. 'user_id' => $userid,
  150. 'address_id' => $uaid,
  151. 'quantity' => $quantity,
  152. 'money' => $many,
  153. 'status' => 0,
  154. 'createtime' => date('Y-m-d H:i:s'),
  155. //'status_delivery' => '',
  156. //'deliverytime' => '',
  157. 'cooks' => $cooksids,
  158. 'remark' => $remark,
  159. ];
  160. $m_mo = new MealOrdersModel();
  161. $moid = $m_mo->insertData($insertData);
  162. if (empty($moid)) {
  163. throw new \Exception("订单添加失败");
  164. }
  165. Db::commit();
  166. return backarr(1, "订单添加成功", ['moid' => $moid]);
  167. } catch (\Exception $e) {
  168. Db::rollback();
  169. $msg = $e->getMessage();
  170. return backarr(0, $msg);
  171. }
  172. }
  173. /**
  174. * 根据id获取订单详情
  175. *
  176. * @return void
  177. * @author wj
  178. * @date 2022-12-02
  179. */
  180. public function getorderinfobyid()
  181. {
  182. }
  183. /**
  184. * 获取订单列表 客户端查看
  185. *
  186. * @return void
  187. * @author wj
  188. * @date 2022-12-03
  189. */
  190. public function getorderlist($arr)
  191. {
  192. $wherefields = ['user_id', 'status'];
  193. $where = [];
  194. foreach ($wherefields as $key => $value) {
  195. if ($arr[$value]) {
  196. $where[$value] = $arr[$value];
  197. }
  198. }
  199. $page = isset($arr['page']) && is_numeric($arr['page']) && !empty($arr['page']) && $arr['page'] > 0 ? $arr['page'] : 1;
  200. $size = isset($arr['size']) && is_numeric($arr['size']) && !empty($arr['size']) && $arr['size'] > 0 ? $arr['size'] : 10;
  201. $m_mo = new MealOrdersModel();
  202. $m_m = new MealModel();
  203. $m_ua = new UserAddressModel();
  204. $count = $m_mo->getList($where, 'count');
  205. if ($count <= 0) {
  206. return backarr(0, "无数据");
  207. }
  208. $totalpage = ceil($count / $size);
  209. $page > $totalpage && $page = $totalpage;
  210. $mofield = ['id', 'orderno', 'meal_id', 'center_id', 'user_id', 'address_id', 'quantity', 'status', 'status_delivery'];
  211. $list = $m_mo->getList($where, $mofield, $page, $size);
  212. foreach ($list as $key => $value) {
  213. $minfo = $m_m->getInfo(['id' => $value['meal_id']], ['name_meal', 'price']);
  214. $uainfo = $m_ua->getInfo(['id' => $value['address_id']], "*");
  215. $value['minfo'] = $minfo;
  216. $value['uainfo'] = $uainfo;
  217. $list[$key] = $value;
  218. }
  219. $data = [
  220. 'page' => $page,
  221. 'size' => $size,
  222. 'count' => $count,
  223. 'list' => $list,
  224. ];
  225. return backarr(1, "查询成功", $data);
  226. }
  227. /**
  228. * 获取订单列表 配送员查看
  229. *
  230. * @return void
  231. * @author wj
  232. * @date 2022-12-03
  233. */
  234. public function getorderlistforcourier()
  235. {
  236. }
  237. }