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.
zhishifufei_php/application/admin/model/user/MemberCard.php

194 lines
7.4 KiB

10 months ago
<?php
// +----------------------------------------------------------------------
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权
// +----------------------------------------------------------------------
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397
// +----------------------------------------------------------------------
namespace app\admin\model\user;
use service\UtilService;
use think\Db;
use traits\ModelTrait;
use basic\ModelBasic;
use app\admin\model\user\User;
use app\admin\model\user\UserBill;
use app\admin\model\user\MemberCardBatch;
use service\PhpSpreadsheetService;
/**
* 会员卡批次 model
* Class MemberCard
* @package app\admin\model\user
*/
class MemberCard extends ModelBasic
{
use ModelTrait;
public static function getCardOne(array $where)
{
if (empty($where)) {
return false;
}
return self::where($where)->find();
}
/**根据批次id和数量生成卡
* @param int $batch_id
* @param int $total_num
* @return bool
*/
public static function addCard(int $batch_id, int $total_num)
{
if (!$batch_id || $batch_id == 0 || !$total_num || $total_num == 0) {
return false;
}
try {
$inster_card = array();
for ($i = 0; $i < $total_num; $i++) {
$inster_card['card_number'] = UtilService::makeRandomNumber("CR", 5, $batch_id);
$inster_card['card_password'] = UtilService::makeRandomNumber('', 5);
$inster_card['card_batch_id'] = $batch_id;
$inster_card['create_time'] = time();
$res[] = $inster_card;
}
//数据切片批量插入,提高性能
$chunk_inster_card = array_chunk($res, 100, true);
foreach ($chunk_inster_card as $v) {
self::insertAll($v);
}
return true;
} catch (\Exception $e) {
echo $e->getMessage();
}
}
public function getCreateTimeAttr($time)
{
return $time;//返回create_time原始数据,不进行时间戳转换。
}
public static function setCardWhere($where)
{
$model = new self();
if (isset($where['card_batch_id']) && $where['card_batch_id']) {
$model = $model->where('card_batch_id', $where['card_batch_id']);
}
if (isset($where['card_number']) && $where['card_number']) {
$model = $model->where('card_number', 'like', "%$where[card_number]%");
}
if (isset($where['is_status']) && $where['is_status'] != "") {
$model = $model->where('status', $where['is_status']);
}
if (isset($where['is_use']) && $where['is_use'] != "") {
if ($where['is_use'] == 1) {
$model = $model->where('use_uid', '>=', 1);
} else {
$model = $model->where('use_uid', 0);
}
}
if (isset($where['phone']) && $where['phone']) {
$uid = User::where(['phone' => $where['phone']])->value('uid');
$model = $model->where('use_uid', $uid);
}
return $model->order('use_uid desc,id desc');
}
public static function getCardList(array $where)
{
if (!is_array($where)) {
return false;
}
$model = self::setCardWhere($where);
if (isset($where['excel']) && $where['excel'] == 1) {
$data = ($data = $model->select()) && count($data) ? $data->toArray() : [];
self::SaveExcel($data);
} else {
$data = ($data = $model->page((int)$where['page'], (int)$where['limit'])->select()) && count($data) ? $data->toArray() : [];
if (!empty($data)) {
foreach ($data as $k => $v) {
$data[$k]['use_time'] = ($v['use_time'] != 0 || $v['use_time']) ? date('Y-m-d H:i:s', $v['use_time']) : "";
if ($v['use_uid'] && $v['use_uid'] > 0) {
$user_info = User::where(['uid' => $v['use_uid']])->field("account, nickname, phone")->find();
if ($user_info) {
$data[$k]['username'] = (isset($user_info['nickname']) && $user_info['nickname']) ? $user_info['nickname'] : $user_info['account'];
$data[$k]['user_phone'] = (isset($user_info['phone']) && $user_info['phone']) ? $user_info['phone'] : "";
} else {
$data[$k]['username'] = "用户已被删除";
$data[$k]['user_phone'] = "无";
}
} else {
$data[$k]['username'] = "";
$data[$k]['user_phone'] = "";
}
}
}
$count = self::setCardWhere($where)->count();
return compact('data', 'count');
}
}
/*
* 保存并下载excel
* $list array
* return
*/
public static function SaveExcel($list)
{
$export = [];
foreach ($list as $index => $item) {
$batch = MemberCardBatch::where('id', $item['card_batch_id'])->value('title');
$use_time = ($item['use_time'] != 0 || $item['use_time']) ? date('Y-m-d H:i:s', $item['use_time']) : "";
if ($item['use_uid'] && $item['use_uid'] > 0) {
$user_info = User::where(['uid' => $item['use_uid']])->field("account, nickname, phone")->find();
if ($user_info) {
$username = (isset($user_info['nickname']) && $user_info['nickname']) ? $user_info['nickname'] : $user_info['account'];
$user_phone = (isset($user_info['phone']) && $user_info['phone']) ? $user_info['phone'] : "";
} else {
$username = "用户已被删除";
$user_phone = "无";
}
} else {
$username = "";
$user_phone = "";
}
$export[] = [
$item['card_batch_id'],
$batch,
$item['card_number'],
$item['card_password'],
$item['status'] == 1 ? '激活' : '冻结',
$item['use_uid'] > 0 ? '使用' : '未使用',
$username,
$user_phone,
$use_time
];
}
$filename = '会员卡导出' . time() . '.xlsx';
$head = ['批次编号', '批次名称', '卡号', '密码', '是否激活', '是否使用', '领取人', '领取人电话', '领取时间'];
PhpSpreadsheetService::outdata($filename, $export, $head);
}
/**
* @param $code
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public static function cateDays($code)
{
$cate = self::where('card_number', $code)->find();
$use_day = MemberCardBatch::where('id', $cate['card_batch_id'])->value('use_day');
return $use_day;
}
}