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/ump/SpecialExchange.php

209 lines
8.3 KiB

<?php
// +----------------------------------------------------------------------
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权
// +----------------------------------------------------------------------
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397
// +----------------------------------------------------------------------
namespace app\admin\model\ump;
use service\SystemConfigService;
use think\Db;
use traits\ModelTrait;
use basic\ModelBasic;
use service\UtilService;
use app\admin\model\user\User;
use app\admin\model\special\Special;
use service\PhpSpreadsheetService;
/**
* 活动批次 model
* Class SpecialExchange
* @package app\admin\model\ump
*/
class SpecialExchange extends ModelBasic
{
use ModelTrait;
const fileLocation = 'public/qrcode/';
/**
* 生成会员卡批次二维码
*/
public static function qrcodes_url($special_id, $size = 5)
{
vendor('phpqrcode.phpqrcode');
$urls = SystemConfigService::get('site_url');
$url = $urls . '/h5#/pages/pages/special/exchange/special_id/' . $special_id;
$value = $url; //二维码内容
$errorCorrectionLevel = 'H'; //容错级别
$matrixPointSize = $size; //生成图片大小
//生成二维码图片
$filename = self::fileLocation . rand(10000000, 99999999) . '.png';
\QRcode::png($value, $filename, $errorCorrectionLevel, $matrixPointSize, 2);
return $urls . $filename;
}
/**获取单条批次信息
* @param $id
* @return array|bool|false|\PDOStatement|string|\think\Model
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public static function getBatchOne($id)
{
if (!$id) {
return false;
}
return self::where(['id' => $id])->find();
}
public function getCreateTimeAttr($time)
{
return $time;//返回create_time原始数据,不进行时间戳转换。
}
/**根据批次id和数量生成卡
* @param int $batch_id
* @param int $total_num
* @return bool
*/
public static function addCard($batch_id, $total_num, $special_id)
{
if (!$batch_id || $batch_id == 0 || !$special_id || $special_id == 0 || !$total_num || $total_num == 0) {
return false;
}
try {
$inster_card = array();
for ($i = 0; $i < $total_num; $i++) {
$inster_card['special_id'] = $special_id;
$inster_card['exchange_code'] = UtilService::makeRandomNumber('', 6);
$inster_card['card_batch_id'] = $batch_id;
$inster_card['add_time'] = time();
$res[] = $inster_card;
}
//数据切片批量插入,提高性能
$chunk_inster_card = array_chunk($res, 100, true);
foreach ($chunk_inster_card as $v) {
SpecialExchange::insertAll($v);
}
return true;
} catch (\Exception $e) {
echo $e->getMessage();
}
}
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['exchange_code']) && $where['exchange_code']) {
$model = $model->where('exchange_code', 'like', "%$where[exchange_code]%");
}
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);
}
$time['data'] = '';
if ($where['start_time'] != '' && $where['end_time'] != '') {
$time['data'] = $where['start_time'] . ' - ' . $where['end_time'];
}
$model = self::getModelTime($time, $model, 'use_time');
return $model->order('use_time desc,use_uid desc,id desc');
}
public static function getCardList($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 = SpecialBatch::where('id', $item['card_batch_id'])->value('title');
$special_title = Special::where('id', $item['special_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,
$special_title,
$item['exchange_code'],
$item['status'] == 1 ? '激活' : '冻结',
$item['use_uid'] > 0 ? '使用' : '未使用',
$username,
$user_phone,
$use_time
];
}
$filename = '兑换码导出' . time() . '.xlsx';
$head = ['活动编号', '活动名称', '专题名称', '兑换码', '是否激活', '是否使用', '兑换人', '兑换人电话', '兑换时间'];
PhpSpreadsheetService::outdata($filename, $export, $head);
}
}