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.

SnapupOrder.php 8.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. <?php
  2. namespace app\controller\store\project;
  3. use app\common\logic\DataLogic;
  4. use app\model\user\User;
  5. use app\services\store\logic\LogsLogic;
  6. use app\model\store\logs\ApplyLogsModel;
  7. use app\model\store\logs\ProjectWriteOffModel;
  8. use app\model\store\project\MemberProjectModel;
  9. use app\model\store\project\MemberSnapUpModel;
  10. use app\controller\store\AuthController;
  11. use think\facade\Db;
  12. class SnapupOrder extends AuthController
  13. {
  14. protected $name = '抢购订单';
  15. public function index()
  16. {
  17. $today = date('Y-m-d', $this->request->time());
  18. $member_snap_up_id = $this->request->param('member_snap_up_id/d', 0);
  19. $mobile = $this->request->param('mobile');
  20. $status = $this->request->param('status/d', 1);
  21. $where = [
  22. ];
  23. if (!empty($member_snap_up_id)) $where[] = ['member_snap_up_id', '=', $member_snap_up_id];
  24. if (!empty($mobile)) {
  25. //连表查询
  26. $user = new User();
  27. $member_ids = $user->where('phone', $mobile)->column('uid') ?? [];
  28. // $member_ids = User::where([
  29. // ['store_id', '=', ],
  30. // ['mobile', '=', $mobile]
  31. // ])->column('member_id') ?? [];
  32. $where[] = ['member_id', 'in', $member_ids];
  33. }
  34. if (!in_array($status, [1, 2, 3])) $where[] = ['status', '=', -1];
  35. if ($status == 1) $where[] = ['status', '=', 1];
  36. if ($status == 1) $where[] = ['valid_end_time', '>=', $today];
  37. if ($status == 2) $where[] = ['status', '=', 8];
  38. if ($status == 3) $where[] = ['status', '=', 1];
  39. if ($status == 3) $where[] = ['valid_end_time', '<', $today];
  40. $member_snap_up_model = new MemberSnapUpModel();
  41. $member_snap_up_model = $member_snap_up_model->with(['member']);
  42. $order = ['add_time' => 'desc'];
  43. $field = '*';
  44. $append = ['add_time_format', 'status_means'];
  45. $return = DataLogic::getDataList($member_snap_up_model, $where, $order, $field, $append);
  46. return $this->success($return);
  47. }
  48. public function getMemberSnapUpList()//在哪用的
  49. {
  50. $member_id = $this->request->param('member_id/d', 0);
  51. $where = [
  52. ['member_id', '=', $member_id]
  53. ];
  54. $member_snap_up_model = new MemberSnapUpModel();
  55. $order = ['add_time' => 'desc'];
  56. $field = '*';
  57. $append = ['add_time_format', 'status_another'];
  58. $return = DataLogic::getDataList($member_snap_up_model, $where, $order, $field, $append);
  59. return $this->success($return);
  60. }
  61. public function detail()
  62. {
  63. $member_snap_up_id = $this->request->param('member_snap_up_id/d', 0);
  64. if ($member_snap_up_id == 0) return $this->fail($this->name . '不存在');
  65. if (null === $member_snap_up = MemberSnapUpModel::find($member_snap_up_id)) return $this->fail($this->name . '不存在');
  66. if (null === $member = User::find($member_snap_up->member_id)) return $this->fail($this->name . '不存在');
  67. $detail = [
  68. 'member_snap_up_id' => $member_snap_up_id,
  69. 'add_time_format' => $member_snap_up->add_time_format,
  70. 'valid_end_time' => $member_snap_up->valid_end_time,
  71. 'status' => $member_snap_up->status,
  72. 'status_means' => $member_snap_up->status_means,
  73. 'status_another' => $member_snap_up->status_another,
  74. 'need_pay' => $member_snap_up->need_pay,
  75. 'pay_type_mean' => $member_snap_up->pay_type_mean,
  76. 'pay_time_format' => $member_snap_up->pay_time_format,
  77. 'total_price' => $member_snap_up->total_price,
  78. 'coupon_money' => $member_snap_up->coupon_money,
  79. 'integral_balance' => $member_snap_up->integral_balance,
  80. 'member_name' => $member->nickname,
  81. 'member_mobile' => $member->phone,
  82. 'cover_img' => $member_snap_up->cover_img,
  83. 'abbreviation' => $member_snap_up->abbreviation,
  84. 'market_price' => $member_snap_up->market_price,
  85. 'price' => $member_snap_up->price,
  86. 'total_num' => $member_snap_up->total_num,
  87. 'remain_num' => $member_snap_up->remain_num,
  88. ];
  89. return $this->success(['detail' => $detail]);
  90. }
  91. public function writeOff()
  92. {
  93. $today = date('Y-m-d', $this->request->time());
  94. $member_snap_up_id = $this->request->param('member_snap_up_id/d', 0);
  95. $num = $this->request->param('num/d', 0);
  96. $remark = $this->request->param('remark');
  97. if ($num <= 0) return $this->fail('核销次数不能小于0');
  98. if ($member_snap_up_id == 0) return $this->fail($this->name . '不存在');
  99. if (null === $member_snap_up = MemberSnapUpModel::find($member_snap_up_id)) return $this->fail($this->name . '不存在');
  100. if ($member_snap_up->status != 1) return $this->fail($this->name . '的状态不在待消费');
  101. if ($member_snap_up->valid_end_time < $today) return $this->fail($this->name . '已过期');
  102. if (null === $member_project = MemberProjectModel::where([
  103. ['member_id', '=', $member_snap_up->member_id],
  104. ['source', '=', 'snap_up'],
  105. ['project_id', '=', $member_snap_up->project_id],
  106. ['member_snap_up_id', '=', $member_snap_up_id],
  107. ['total_num', '=', $member_snap_up->total_num],
  108. ['remain_num', '=', $member_snap_up->remain_num]
  109. ])->find()) {
  110. return $this->fail($this->name . '不存在');
  111. }
  112. if (null === $member = User::find($member_snap_up->member_id)) return $this->fail($this->name . '不存在');
  113. $remain_num = $member_snap_up->remain_num - $num;
  114. if ($remain_num < 0) return $this->fail($this->name . '的剩余数量不够这次核销');
  115. Db::startTrans();
  116. try {
  117. //处理我的抢购
  118. $member_snap_up->remain_num = $remain_num;
  119. if ($remain_num == 0) $member_snap_up->status = 8;
  120. $member_snap_up->save();
  121. //处理我的项目
  122. $member_project->remain_num = $remain_num;
  123. $member_project->save();
  124. //添加核销记录
  125. $res = LogsLogic::project($member->uid, 'snap_up', $member_snap_up_id, $num, $remain_num, $remark, 2, $this->adminId);
  126. if (!$res) {
  127. Db::rollback();
  128. return $this->fail('核销失败');
  129. }
  130. //打印机
  131. // $printer_logic =new PrinterLogic( $this->storeId);
  132. // $printer_logic->print('snapUpOrderWriteOff',$res);
  133. Db::commit();
  134. return $this->success('核销成功');
  135. } catch (\Exception $e) {
  136. Db::rollback();
  137. return $this->fail($e->getMessage());
  138. }
  139. }
  140. public function getMemberSnapUpLogs()
  141. {
  142. $member_id = $this->request->param('member_id/d', 0);
  143. $type = $this->request->param('type/d', 1);
  144. if (!in_array($type, [1, 2])) $type = 1;
  145. switch ($type) {
  146. case 1:
  147. $return = $this->getWriteOffLogs($member_id);
  148. break;
  149. case 2:
  150. $return = $this->getApplyLogs($member_id);
  151. break;
  152. }
  153. return $this->success($return);
  154. }
  155. protected function getWriteOffLogs($member_id)
  156. {
  157. $where = [
  158. ['member_id', '=', $member_id],
  159. ['source', '=', 'snap_up'],
  160. ];
  161. $project_write_off_model = new ProjectWriteOffModel();
  162. $order = ['add_time' => 'desc'];
  163. $field = '*';
  164. $append = ['add_time_format'];
  165. $return = DataLogic::getDataList($project_write_off_model, $where, $order, $field, $append);
  166. return $return;
  167. }
  168. protected function getApplyLogs($member_id)
  169. {
  170. $where = [
  171. ['member_id', '=', $member_id],
  172. ['source', '=', 'snap_up'],
  173. ];
  174. $apply_logs_model = new ApplyLogsModel();
  175. $order = ['add_time' => 'desc'];
  176. $field = '*';
  177. $append = ['add_time_format'];
  178. $return = DataLogic::getDataList($apply_logs_model, $where, $order, $field, $append);
  179. return $return;
  180. }
  181. }