123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- <?php
-
- namespace app\controller\store\project;
-
- use app\common\logic\DataLogic;
- use app\controller\store\AuthController;
- use app\model\store\logs\ApplyLogsModel;
- use app\model\store\logs\ProjectWriteOffModel;
- use app\model\store\project\MemberOnceCardItemModel;
- use app\model\store\project\MemberOnceCardModel;
- use app\model\store\project\MemberProjectModel;
- use app\model\user\User;
- use app\services\store\logic\LogsLogic;
- use think\facade\Db;
-
- class OncecardOrder extends AuthController
- {
-
- protected $name = '次卡订单';
-
- public function index()
- {
- $today = date('Y-m-d');
- $member_once_card_id = $this->request->param('member_once_card_id/d', 0);
- $mobile = $this->request->param('mobile');
- $status = $this->request->param('status/d', 1);
- $where = [
- ];
- if (!empty($member_once_card_id)) $where[] = ['member_once_card_id', '=', $member_once_card_id];
-
- if (!empty($mobile)) {
- //连表查询
- $user = new User();
- $member_ids = $user->where('phone', $mobile)->column('uid') ?? [];
- // $member_ids = User::where([
- //
- // ['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_once_card_model = new MemberOnceCardModel();
- $member_once_card_model = $member_once_card_model->with(['member']);
- $order = ['add_time' => 'desc'];
- $field = '*';
- $append = ['add_time_format', 'status_means'];
- $return = DataLogic::getDataList($member_once_card_model, $where, $order, $field, $append);
- return $this->success($return);
- }
-
- public function getMemberOnceCardList()//???在哪用的
- {
- $member_id = $this->request->param('member_id/d', 0);
- $where = [
- ['member_id', '=', $member_id],
- ];
-
- $member_once_card_model = new MemberOnceCardModel();
- $member_once_card_model = $member_once_card_model->with(['items']);
- $order = ['add_time' => 'desc'];
- $field = '*';
- $append = ['add_time_format', 'status_means', 'pay_type_mean', 'pay_time_format', 'status_another'];
- $return = DataLogic::getDataList($member_once_card_model, $where, $order, $field, $append);
- return ($this->success($return));
- }
-
- public function detail()
- {
- $member_once_card_id = $this->request->param('member_once_card_id/d', 0);
- if ($member_once_card_id == 0) return ($this->fail($this->name . '不存在'));
- if (null === $member_once_card = MemberOnceCardModel::find($member_once_card_id)) return ($this->fail($this->name . '不存在'));
-
- $user = new User();
- $member = $user->where('uid', $member_once_card->member_id)->field('nickname,phone,status')->find();
- if (null === $member) return ($this->fail($this->name . '不存在'));
- if ($member->status == 0) {
- return $this->fail('用户被锁定');
- }
- $member->nick_name = $member->nickname;
- $member->mobile = $member->phone;
- $items = MemberOnceCardItemModel::where([
- ['member_id', '=', $member_once_card->member_id],
- ['member_once_card_id', '=', $member_once_card_id],
- ])->select()->toArray();
- if (empty($items)) return ($this->fail('次卡错误'));
-
- $detail = [
- 'member_once_card_id' => $member_once_card_id,
- 'name' => $member_once_card->name,
- 'add_time_format' => $member_once_card->add_time_format,
- 'valid_end_time' => $member_once_card->valid_end_time,
- 'status' => $member_once_card->status,
- 'status_another' => $member_once_card->status_another,
- 'status_means' => $member_once_card->status_means,
- 'need_pay' => $member_once_card->need_pay,
- 'pay_type_mean' => $member_once_card->pay_type_mean,
- 'pay_time_format' => $member_once_card->pay_time_format,
- 'total_price' => $member_once_card->total_price,
- 'coupon_money' => $member_once_card->coupon_money,
- 'integral_balance' => $member_once_card->integral_balance,
- 'member_name' => $member->nick_name,
- 'member_mobile' => $member->mobile,
- 'items' => $items
- ];
-
- return ($this->success(['detail' => $detail]));
- }
-
- public function writeOff()
- {
- $today = date('Y-m-d');
- $member_once_card_item_id = $this->request->param('member_once_card_item_id/d', 0);
- $num = $this->request->param('num/d', 0);
- $remark = $this->request->param('remark');
-
- if ($num <= 0) return ($this->fail('核销次数不能小于0'));
-
- if ($member_once_card_item_id == 0) return ($this->fail($this->name . '不存在'));
- if (null === $member_once_card_item = MemberOnceCardItemModel::find($member_once_card_item_id)) return ($this->fail($this->name . '不存在'));
- if (null === $member_once_card = MemberOnceCardModel::find($member_once_card_item->member_once_card_id)) return ($this->fail($this->name . '不存在'));
- if ($member_once_card->status != 1) return ($this->fail($this->name . '的状态不在待消费'));
- if ($member_once_card->valid_end_time < $today) return ($this->fail($this->name . '已过期'));
- //???
- if (null === $member_project = MemberProjectModel::where([
- ['member_id', '=', $member_once_card_item->member_id],
- ['source', '=', 'once_card'],
- ['project_id', '=', $member_once_card_item->project_id],
- ['member_once_card_item_id', '=', $member_once_card_item_id],
- ['total_num', '=', $member_once_card_item->total_num],
- ['remain_num', '=', $member_once_card_item->remain_num]
- ])->find()) {
- return ($this->fail($this->name . '不存在'));
- }
-
- $user = new User();
- $member = $user->where('uid', $member_once_card->member_id)->find();
- if (null === $member) return ($this->fail($this->name . '不存在'));
- if ($member->status == 0) {
- return $this->fail('用户被锁定');
- }
-
- $remain_num = $member_once_card_item->remain_num - $num;
- if ($remain_num < 0) return ($this->fail($this->name . '的剩余数量不够这次核销'));
- Db::startTrans();
- try {
- //处理我的次卡项目
- $member_once_card_item->remain_num = $remain_num;
- $member_once_card_item->save();
-
- //处理次卡状态
- if (null === MemberOnceCardItemModel::where([
- ['member_id', '=', $member_once_card->member_id],
- ['member_once_card_id', '=', $member_once_card->member_once_card_id],
- ['remain_num', '>', 0]
- ])->find()) {
- $member_once_card->status = 8;
- $member_once_card->save();
- }
- //处理我的项目
- $member_project->remain_num = $remain_num;
- $member_project->save();
-
- //添加核销记录
- $res = LogsLogic::project($member_once_card->member_id, 'once_card', $member_once_card_item_id, $num, $remain_num, $remark, 2, $this->adminId);
- if (!$res) {
- Db::rollback();
- return ($this->fail('核销失败'));
- }
-
- //打印机
- // $printer_logic = new PrinterLogic($);
- // $printer_logic->print('onceCardOrderWriteOff', $res);
- Db::commit();
- return ($this->success('核销成功'));
- } catch (\Exception $e) {
- Db::rollback();
- return ($this->fail($e->getMessage()));
- }
- }
-
- public function getMemberOnceCardLogs()
- {
- $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', '=', 'once_card'],
- ];
- $project_write_off_model = new ProjectWriteOffModel();
- $project_write_off_model = $project_write_off_model->with(['once_card' => function ($query) {
- $query->field('member_once_card_id,name');
- }]);
- $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', '=', 'once_card'],
- ];
- $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;
- }
-
- }
|