123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- <?php
-
- namespace app\controller\store\project;
-
- use app\common\logic\DataLogic;
- use app\model\user\User;
- use app\services\store\logic\LogsLogic;
- use app\model\store\logs\ApplyLogsModel;
- use app\model\store\logs\ProjectWriteOffModel;
- use app\model\store\project\MemberProjectModel;
- use app\model\store\project\MemberSnapUpModel;
- use app\controller\store\AuthController;
- use think\facade\Db;
-
- class SnapupOrder extends AuthController
- {
-
- protected $name = '抢购订单';
-
- public function index()
- {
- $today = date('Y-m-d', $this->request->time());
- $member_snap_up_id = $this->request->param('member_snap_up_id/d', 0);
- $mobile = $this->request->param('mobile');
- $status = $this->request->param('status/d', 1);
- $where = [
- ];
- if (!empty($member_snap_up_id)) $where[] = ['member_snap_up_id', '=', $member_snap_up_id];
- if (!empty($mobile)) {
- //连表查询
- $user = new User();
- $member_ids = $user->where('phone', $mobile)->column('uid') ?? [];
- // $member_ids = User::where([
- // ['store_id', '=', ],
- // ['mobile', '=', $mobile]
- // ])->column('member_id') ?? [];
- $where[] = ['member_id', 'in', $member_ids];
- }
- if (!in_array($status, [1, 2, 3])) $where[] = ['status', '=', -1];
- if ($status == 1) $where[] = ['status', '=', 1];
- if ($status == 1) $where[] = ['valid_end_time', '>=', $today];
- if ($status == 2) $where[] = ['status', '=', 8];
- if ($status == 3) $where[] = ['status', '=', 1];
- if ($status == 3) $where[] = ['valid_end_time', '<', $today];
- $member_snap_up_model = new MemberSnapUpModel();
- $member_snap_up_model = $member_snap_up_model->with(['member']);
- $order = ['add_time' => 'desc'];
- $field = '*';
- $append = ['add_time_format', 'status_means'];
- $return = DataLogic::getDataList($member_snap_up_model, $where, $order, $field, $append);
- return $this->success($return);
- }
-
- public function getMemberSnapUpList()//在哪用的
- {
- $member_id = $this->request->param('member_id/d', 0);
- $where = [
- ['member_id', '=', $member_id]
- ];
-
- $member_snap_up_model = new MemberSnapUpModel();
- $order = ['add_time' => 'desc'];
- $field = '*';
- $append = ['add_time_format', 'status_another'];
- $return = DataLogic::getDataList($member_snap_up_model, $where, $order, $field, $append);
- return $this->success($return);
- }
-
- public function detail()
- {
- $member_snap_up_id = $this->request->param('member_snap_up_id/d', 0);
- if ($member_snap_up_id == 0) return $this->fail($this->name . '不存在');
- if (null === $member_snap_up = MemberSnapUpModel::find($member_snap_up_id)) return $this->fail($this->name . '不存在');
-
- if (null === $member = User::find($member_snap_up->member_id)) return $this->fail($this->name . '不存在');
-
- $detail = [
- 'member_snap_up_id' => $member_snap_up_id,
- 'add_time_format' => $member_snap_up->add_time_format,
- 'valid_end_time' => $member_snap_up->valid_end_time,
- 'status' => $member_snap_up->status,
- 'status_means' => $member_snap_up->status_means,
- 'status_another' => $member_snap_up->status_another,
- 'need_pay' => $member_snap_up->need_pay,
- 'pay_type_mean' => $member_snap_up->pay_type_mean,
- 'pay_time_format' => $member_snap_up->pay_time_format,
- 'total_price' => $member_snap_up->total_price,
- 'coupon_money' => $member_snap_up->coupon_money,
- 'integral_balance' => $member_snap_up->integral_balance,
- 'member_name' => $member->nickname,
- 'member_mobile' => $member->phone,
- 'cover_img' => $member_snap_up->cover_img,
- 'abbreviation' => $member_snap_up->abbreviation,
- 'market_price' => $member_snap_up->market_price,
- 'price' => $member_snap_up->price,
- 'total_num' => $member_snap_up->total_num,
- 'remain_num' => $member_snap_up->remain_num,
- ];
-
- return $this->success(['detail' => $detail]);
- }
-
- public function writeOff()
- {
- $today = date('Y-m-d', $this->request->time());
- $member_snap_up_id = $this->request->param('member_snap_up_id/d', 0);
- $num = $this->request->param('num/d', 0);
- $remark = $this->request->param('remark');
-
- if ($num <= 0) return $this->fail('核销次数不能小于0');
-
- if ($member_snap_up_id == 0) return $this->fail($this->name . '不存在');
- if (null === $member_snap_up = MemberSnapUpModel::find($member_snap_up_id)) return $this->fail($this->name . '不存在');
- if ($member_snap_up->status != 1) return $this->fail($this->name . '的状态不在待消费');
- if ($member_snap_up->valid_end_time < $today) return $this->fail($this->name . '已过期');
-
- if (null === $member_project = MemberProjectModel::where([
- ['member_id', '=', $member_snap_up->member_id],
- ['source', '=', 'snap_up'],
- ['project_id', '=', $member_snap_up->project_id],
- ['member_snap_up_id', '=', $member_snap_up_id],
- ['total_num', '=', $member_snap_up->total_num],
- ['remain_num', '=', $member_snap_up->remain_num]
- ])->find()) {
- return $this->fail($this->name . '不存在');
- }
-
- if (null === $member = User::find($member_snap_up->member_id)) return $this->fail($this->name . '不存在');
-
- $remain_num = $member_snap_up->remain_num - $num;
- if ($remain_num < 0) return $this->fail($this->name . '的剩余数量不够这次核销');
- Db::startTrans();
- try {
- //处理我的抢购
- $member_snap_up->remain_num = $remain_num;
- if ($remain_num == 0) $member_snap_up->status = 8;
- $member_snap_up->save();
- //处理我的项目
- $member_project->remain_num = $remain_num;
- $member_project->save();
-
- //添加核销记录
- $res = LogsLogic::project($member->uid, 'snap_up', $member_snap_up_id, $num, $remain_num, $remark, 2, $this->adminId);
- if (!$res) {
- Db::rollback();
- return $this->fail('核销失败');
- }
-
- //打印机
- // $printer_logic =new PrinterLogic( $this->storeId);
- // $printer_logic->print('snapUpOrderWriteOff',$res);
-
- Db::commit();
- return $this->success('核销成功');
- } catch (\Exception $e) {
- Db::rollback();
- return $this->fail($e->getMessage());
- }
- }
-
- public function getMemberSnapUpLogs()
- {
- $member_id = $this->request->param('member_id/d', 0);
- $type = $this->request->param('type/d', 1);
- if (!in_array($type, [1, 2])) $type = 1;
- switch ($type) {
- case 1:
- $return = $this->getWriteOffLogs($member_id);
- break;
- case 2:
- $return = $this->getApplyLogs($member_id);
- break;
- }
-
- return $this->success($return);
- }
-
- protected function getWriteOffLogs($member_id)
- {
- $where = [
- ['member_id', '=', $member_id],
- ['source', '=', 'snap_up'],
- ];
- $project_write_off_model = new ProjectWriteOffModel();
- $order = ['add_time' => 'desc'];
- $field = '*';
- $append = ['add_time_format'];
- $return = DataLogic::getDataList($project_write_off_model, $where, $order, $field, $append);
- return $return;
- }
-
- protected function getApplyLogs($member_id)
- {
- $where = [
- ['member_id', '=', $member_id],
- ['source', '=', 'snap_up'],
- ];
- $apply_logs_model = new ApplyLogsModel();
- $order = ['add_time' => 'desc'];
- $field = '*';
- $append = ['add_time_format'];
- $return = DataLogic::getDataList($apply_logs_model, $where, $order, $field, $append);
- return $return;
- }
-
- }
|