Files
你的名字 0483b4b364 1
2025-07-14 10:22:40 +08:00

1163 lines
34 KiB
PHP
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
// +----------------------------------------------------------------------
// | ThinkAdmins
// +----------------------------------------------------------------------
// | 版权所有 2014~2019 广州楚才信息科技有限公司 [ http://www.cuci.cc ]
// +----------------------------------------------------------------------
// | 官方网站: http://demo.thinkadmin.top
// +----------------------------------------------------------------------
// | 开源协议 ( https://mit-license.org )
// +----------------------------------------------------------------------
// | gitee 代码仓库3https://gitee.com/zoujingli/ThinkAdmin
// | github 代码仓库3https://github.com/zoujingli/ThinkAdmin
// +----------------------------------------------------------------------
use library\File;
use think\Db;
use think\Request;
use think\facade\Session;
if (!function_exists('isLogin')) {
/**
* @description判断是否登录
* @date: 2020/5/13 0013
* @return bool
* @throws \think\Exception
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
* @throws \think\exception\PDOException
*/
function isLogin()
{
$uid = Session::get('uid');
if(!$uid) return false;
$user = Db::name('LcUser')->find($uid);
if(!$user||!$user['clock']) return false;
$data = ['logintime' => time(),'id'=>$uid];
Db::name('LcUser')->update($data);
return true;
}
}
/**
* @description手机号验证
* @date: 2020/5/14 0014
* @param $phone
* @return bool
*/
function isMobile($phone){
if(preg_match("/^1[3456789]{1}\d{9}$/",$phone)) return true;
return false;
}
function isAlphaNum($phone){
if(preg_match("/^[A-Za-z0-9]+$/",$phone)) return true;
return false;
}
/**
* @descriptionIP查询
* @date: 2020/5/14 0014
* @param string $ip
* @return array|bool|string
*/
function GetIpLookup($ip = ''){
if(empty($ip)){
return '';
}
$url="http://ip.taobao.com/service/getIpInfo.php?ip=".$ip;
$ip=json_decode(file_get_contents($url));
if((string)$ip->code=='1'){
return false;
}
$data = (array)$ip->data;
return $data;
}
/**
* @description添加流水
* @date: 2020/5/13 0013
* @param $uid
* @param $money
* @param $type
* @param $reason
* @return bool
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
function addFinance($uid,$money,$type,$reason){
$user = Db::name('LcUser')->find($uid);
if(!$user) return false;
if($user['money']<0) return false;
$data = array(
'uid' => $uid,
'money' => $money,
'type' => $type,
'reason' => $reason,
'before' => $user['money'],
'time' => date('Y-m-d H:i:s')
);
Db::name('LcFinance')->insert($data);
}
/**
* @description
* @date: 2020/5/14 0014
* @param $str
* @param $type
* @return bool
*/
function judge($str, $type)
{
$char = '';
if ($type == 'int') {
$char = '/^\\d*$/';
}
else if ($type == 'email') {
$char = '/([\\w\\-]+\\@[\\w\\-]+\\.[\\w\\-]+)/';
}
else if ($type == 'idcard') {
$char = '/[0-9]{17}([0-9]|X)/';
}
else if ($type == 'name') {
$char = '/^[\\x{4e00}-\\x{9fa5}]+[·•]?[\\x{4e00}-\\x{9fa5}]+$/u';
}
else if ($type == 'phone') {
$char = '/^1[3456789]{1}\\d{9}$/';
}
else if ($type == 'tel') {
$char = '/(^(\\d{3,4}-)?\\d{7,8})$/';
}
else if ($type == 'date') {
$char = '/^\\d{4}[\\-](0?[1-9]|1[012])[\\-](0?[1-9]|[12][0-9]|3[01])?$/';
}
else if ($type == 'time') {
$char = '/^\\d{4}[\\-](0?[1-9]|1[012])[\\-](0?[1-9]|[12][0-9]|3[01])(\\s+(0?[0-9]|1[0-9]|2[0-3])\\:(0?[0-9]|[1-5][0-9])\\:(0?[0-9]|[1-5][0-9]))?$/';
}
else if ($type == 'exist') {
}
else {
return false;
}
if (preg_match($char, $str)) {
return true;
}
return false;
}
/**
* @description设置
* @date: 2020/5/13 0013
* @param $database
* @param $field
* @param $value
* @param int $type
* @param string $where
* @return int|true
* @throws \think\Exception
*/
function setNumber($database, $field, $value, $type = 1, $where = '')
{
if ($type != 1) {
$re = Db::name($database)->where($where)->setDec($field, $value);
}
else {
$re = Db::name($database)->where($where)->setInc($field, $value);
}
return $re;
}
/**
* @description脱敏
* @date: 2020/5/14 0014
* @param $string
* @param int $start
* @param int $length
* @param string $re
* @return bool|string
*/
function dataDesensitization($string, $start = 0, $length = 0, $re = '*')
{
if (empty($string)) {
return false;
}
$strarr = array();
$mb_strlen = mb_strlen($string);
while ($mb_strlen) {
$strarr[] = mb_substr($string, 0, 1, 'utf8');
$string = mb_substr($string, 1, $mb_strlen, 'utf8');
$mb_strlen = mb_strlen($string);
}
$strlen = count($strarr);
$begin = $start >= 0 ? $start : ($strlen - abs($start));
$end = $last = $strlen - 1;
if ($length > 0) {
$end = $begin + $length - 1;
} elseif ($length < 0) {
$end -= abs($length);
}
for ($i = $begin; $i <= $end; $i++) {
$strarr[$i] = $re;
}
if ($begin >= $end || $begin >= $last || $end > $last) return false;
return implode('', $strarr);
}
/**
* @description投资状态
* @date: 2020/5/14 0014
* @param $id
* @return string
*/
function getInvestStatus($id)
{
$invest = Db::name('LcInvestList')->where("status = 0 AND iid = $id")->count();
if (0 < $invest) {
return '未完成';
}
return '已完成';
}
/**
* @description身份认证
* @date: 2020/5/14 0014
* @param $id_card
* @param $name
* @param $app_code
* @return array
*/
function idCardAuth($id_card,$name){
$host = 'http://idcard.market.alicloudapi.com';
$path = '/lianzhuo/idcard';
$method = 'GET';
$appcode = getInfo('linetoken');
$headers = array();
array_push($headers, 'Authorization:APPCODE ' . $appcode);
$querys = 'cardno=' . $id_card . '&name=' . $name;
$url = $host . $path . '?' . $querys;
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
if (1 == strpos('$' . $host, 'https://')) {
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
}
$re = curl_exec($curl);
$resp = json_decode($re, true);
if ($resp['resp']['code'] == '5') return ['code'=>0,'msg'=>'姓名和身份证号码不匹配'];
if ($resp['resp']['code'] == '14') return ['code'=>0,'msg'=>'无此身份证号码'];
if ($resp['resp']['code'] == '96') return ['code'=>0,'msg'=>'交易失败,请稍后重试'];
if ($resp['resp']['code'] != '0') return ['code'=>0,'msg'=>'网络繁忙,请稍后重试!'];
return ['code'=>1,'msg'=>'认证成功'];
}
/**
* @description银行卡认证
* @date: 2020/5/14 0014
* @param $name
* @param $account
* @param $id_card
* @return array
*/
function bankAuth($name,$account,$id_card){
$host = 'http://lundroid.market.alicloudapi.com';
$path = '/lianzhuo/verifi';
$method = 'GET';
$appcode = getInfo('banktoken');
$headers = array();
array_push($headers, 'Authorization:APPCODE ' . $appcode);
$querys = 'acct_name=' . $name . '&acct_pan=' . $account . '&cert_id=' . $id_card;
$url = $host . $path . '?' . $querys;
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
if (1 == strpos('$' . $host, 'https://')) {
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
}
header('Content-type:text/html; charset=utf-8');
$re = curl_exec($curl);
$res = json_decode($re, true);
if($res['resp']['code'] == 0 && $res['resp']['desc'] == 'OK') return ['code'=>1,'bank'=>$res['data']['bank_name']];
return ['code'=>0,'msg'=>'银行卡认证失败'];
}
/**
* Describe:会员等级
* DateTime: 2020/5/13 23:49
* @param $member
* @return mixed|string
*/
function getUserMember($member)
{
$member = Db::name('LcUserMember')->where("id = {$member}")->value('name');
return $member?$member:'普通会员';
}
/**
* @description获取支付方式
* @date: 2020/5/14 0014
* @param $pay
* @return string
*/
function getPayName($pay)
{
switch ($pay) {
case 'wechat':
return '微信扫码';
case 'alipay':
return '支付宝扫码';
case 'bank':
return '银行入款';
case 'gz_bank':
return '公账入款';
case 'alipay_bank':
return '支付宝转银行卡';
case 'wx_bank':
return '微信转银行卡';
case 'online_wechat':
return '微信在线支付';
case 'online_alipay':
return '支付宝在线支付';
case 'wechat_scan':
return '微信在线扫码支付';
default:
}
return '未知支付';
}
function gotoWechatPay($money){
$status = getInfo('qr_wechat_statustz');
$wxlianjie = getInfo('qr_wechattzlj');
if($status == 1){
$url = $wxlianjie;
}
else{
$url = "/index/User/scan?type=wechat&money=".$money;//扫码链接
}
header("Location:".$url);
}
function gotoAlipay($money){
$status = getInfo('qr_alipay_statustz');
$zfblianjie = getInfo('qr_alipaytzlj');
if($status == 1){
$url = $zfblianjie;
}
else{
$url = "/index/User/scan?type=alipay&money=".$money;//扫码链接
}
header("Location:".$url);
}
/**
* Describe: 理财开关
* DateTime: 2020/5/13 22:44
* @param $uid
* @return int
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
function getlcopen($uid = ''){
$lcopen =0;
if(!$uid){
$uid = Session::get('uid');
}
if (!empty($uid)){
$user = Db::name('LcUser')->where("id = $uid")->find();
if (getInfo('qdlcopen') == 0){
$lcopen = 1;
}else{
if ($user['qdnum'] >= getInfo('qdnum') || $user['top'] > 0) {
$lcopen = 1;
}else{
$lcopen = 0;
}
}
}
return $lcopen;
}
/**
* @description获取网站配置
* @date: 2020/5/14 0014
* @param $value
* @return mixed
*/
function getInfo($value){
return Db::name('LcInfo')->where('id',1)->value($value);
}
/**
* @description获取奖励配置
* @date: 2020/5/14 0014
* @param $value
* @return mixed
*/
function getReward($value){
return Db::name('LcReward')->where('id',1)->value($value);
}
/**
* @description项目进度
* @date: 2020/5/14 0014
* @param $id
* @return float|int|mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
function getProjectPercent($id){
$item = Db::name('LcItem')->find($id);
if($item['auto']>0){
$xc=diffBetweenTwoDays($item['time'],date('Y-m-d H:i:s'));
if($xc>$item['auto']){
$total=100;
}else{
$total= round($xc/$item['auto']*100);
}
}else{
$pid = $item['id'];
$percent = $item['percent'];
$investMoney = Db::name('LcInvest')->where('pid', $pid)->sum('money');
$actual = $investMoney / ($item['total'] * 10000) * 100;
$total = $actual + $percent;
}
if (100 < $total) return 100;
return $total;
}
function diffBetweenTwoDays ($day1, $day2)
{
$second1 = strtotime($day1);
$second2 = strtotime($day2);
if ($second1 < $second2) {
$tmp = $second2;
$second2 = $second1;
$second1 = $tmp;
}
return ($second1 - $second2) / 86400;
}
/**
* @description
* @date: 2020/5/14 0014
* @param $money
* @param $rate
* @param $day
* @return float
*/
function getFuliIncome($money, $rate, $day)
{
$sum = $money;
$i = 0;
while ($i < $day) {
$sum = $sum + $sum * $rate / 100;
++$i;
}
return round($sum - $money, 2);
}
/**
* @description
* @date: 2020/5/14 0014
* @param $pid
* @return float|int
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
function getProjectSurplus($pid)
{
$percent = getProjectPercent($pid);
$total = Db::name('LcItem')->where('id', $pid)->value('total');
$surplus = (100 - $percent) * $total * 100;
if ($surplus < 0) return 0;
return $surplus;
}
function getProfit($day_income,$cost){
return number_format($day_income-$cost, 8, '.', '');
}
function getMinerPercent($total,$stock){
return round(($total-$stock)/$total*100,2);
}
/**
* @description奖励设置
* @date: 2020/5/14 0014
* @param $uid
* @param $money
* @throws \think\Exception
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
function setInvestReward_old($uid, $money )
{
$reward = Db::name('LcReward')->find(1);
$top1 = round($reward['invest1'] * $money / 100, 2);
$top2 = round($reward['invest2'] * $money / 100, 2);
$top3 = round($reward['invest3'] * $money / 100, 2);
$t1 = Db::name('LcUser')->where(['id'=>$uid])->value('top') ?: 0;
$t2 = Db::name('LcUser')->where(['id'=>$t1])->value('top') ?: 0;
$t3 = Db::name('LcUser')->where(['id'=>$t2])->value('top') ?: 0;
if (0 < $top1 && !empty($t1)) {
addFinance($t1, $top1, 1, '推荐会员投资' . $money . '元奖励' . $top1 . '元!');
setNumber('LcUser', 'money', $top1, 1, "id = $t1");
setNumber('LcUser', 'income', $top1, 1, "id = $t1");
}
if (0 < $top2 && !empty($t2)) {
addFinance($t2, $top2, 1, '二级推荐会员投资' . $money . '元奖励' . $top2 . '元!');
setNumber('LcUser', 'money', $top2, 1, "id = $t2");
setNumber('LcUser', 'income', $top2, 1, "id = $t2");
}
if (0 < $top3 && !empty($t3)) {
addFinance($t3, $top3, 1, '三级推荐会员投资' . $money . '元奖励' . $top3 . '元!');
setNumber('LcUser', 'money', $top3, 1, "id = $t3");
setNumber('LcUser', 'income', $top3, 1, "id = $t3");
}
}
function setUserMember($uid, $value)
{
$member = Db::name('LcUserMember')->where("value <= '{$value}'")->order('value desc')->find();
if(empty($member)){
$mid = 0;
}else{
$mid = $member['id'];
}
Db::name('LcUser')->where("id = {$uid}")->update(array('member' => $mid));
return $mid;
}
function getUserField($uid, $field)
{
return Db::name('LcUser')->where(['id'=>$uid])->value($field);
}
function getUserPhone($uid)
{
return Db::name('LcUser')->where(['id'=>$uid])->value('phone');
}
/**
* @description
* @date: 2020/5/14 0014
* @param $uid
* @param $money
* @param $id
* @throws \think\Exception
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
function setInvestReward($uid, $money,$id)
{
$reward = Db::name("LcItem")->find($id);
$top1 = round($reward['invest1'] * $money / 100, 2);
$top2 = round($reward['invest2'] * $money / 100, 2);
$top3 = round($reward['invest3'] * $money / 100, 2);
/*$red1 = round($reward['red1'], 2);
$red2 = round($reward['red2'], 2);
$red3 = round($reward['red3'], 2);*/
$t1 = getUserField($uid, 'top') ?: 0;
$t2 = getUserField($t1, 'top') ?: 0;
$t3 = getUserField($t2, 'top') ?: 0;
if (0 < $top1 && !empty($t1)) {
addFinance($t1,$top1,1,'推荐会员(' . getUserPhone($uid) . ')投资' . $money . '元奖励' . $top1 . '元!');
setNumber('LcUser', 'money', $top1, 1, 'id=\'' . $t1 . '\'');
setNumber('LcUser', 'income', $top1, 1, 'id=\'' . $t1 . '\'');
}
if (0 < $top2 && !empty($t2)) {
addFinance($t2, $top2,1, '二级推荐会员(' . getUserPhone($uid) . ')投资' . $money . '元奖励' . $top2 . '元!');
setNumber('LcUser', 'money', $top2, 1, 'id=\'' . $t2 . '\'');
setNumber('LcUser', 'income', $top2, 1, 'id=\'' . $t2 . '\'');
}
if (0 < $top3 && !empty($t3)) {
addFinance($t3, $top3,1, '三级推荐会员(' . getUserPhone($uid) . ')投资' . $money . '元奖励' . $top3 . '元!');
setNumber('LcUser', 'money', $top3, 1, 'id=\'' . $t3 . '\'');
setNumber('LcUser', 'income', $top3, 1, 'id=\'' . $t3 . '\'');
}
//以下为红包奖励
/* if (0 < $red1 && !empty($t1)) {
addFinance($t1, $red1, 1, '推荐会员(' . getUserPhone($uid) . ')投资' . $money . '元奖励红包' . $red1 . '元!');
setNumber('user', 'money', $red1, 1, 'id=\'' . $t1 . '\'');
setNumber('user', 'income', $red1, 1, 'id=\'' . $t1 . '\'');
}
if (0 < $red2 && !empty($t2)) {
addFinance($t2, $red2, 1, '二级推荐会员(' . getUserPhone($uid) . ')投资' . $money . '元奖励红包' . $red2 . '元!');
setNumber('user', 'money', $red2, 1, 'id=\'' . $t2 . '\'');
setNumber('user', 'income', $red2, 1, 'id=\'' . $t2 . '\'');
}
if (0 < $red3 && !empty($t3)) {
addFinance($t3, $red3, 1, '三级推荐会员(' . getUserPhone($uid) . ')投资' . $money . '元奖励红包' . $red3 . '元!');
setNumber('user', 'money', $red3, 1, 'id=\'' . $t3 . '\'');
setNumber('user', 'income', $red3, 1, 'id=\'' . $t3 . '\'');
}*/
}
/**
* @description
* @date: 2020/5/14 0014
* @param $id
* @param $money
* @param $uid
* @return bool
* @throws \think\Exception
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
function getInvestList($id, $money, $uid)
{
$item = Db::name('LcItem')->where(['id'=>$id])->find();
$title = $item['title'];
$type = $item['type'];
$day = $item['day'];
$jfbl = $item['jfbl'];
$rate = $item['rate'];
$mid = Db::name('LcUser')->where(['id'=>$uid])->value('member');
$member = Db::name('LcUserMember')->where("id = $mid")->find();
if (!empty($member) && 0 < $member['rate']) {
$rate += $member['rate'] ?: 0;
}
/*if (date('Y-m-d H:i:s') <= $item['jiaxitime']) {
$rate += $item['jiaxi'] ?: 0;
}*/
//赠送抽奖次数
if ($item['prize'] == 1) {
$num = intval($money / $item['min']);
setNumber('LcUser', 'prize', $num, 1, "id = $uid");
}
//赠送积分
if ($item['integral'] == 1) {
setNumber('LcUser', 'integral', intval($money)*intval($jfbl), 1, "id = $uid");
}
$res=Db::name('LcInvest')->order("id desc")->find();
if($res['number']){
$number= date('ymd').sprintf("%05d", substr($res['number'],-5)+1);
}else{
$number= date('ymd').'01000';
}
$invest = array('uid' => $uid,'number'=>$number ,'pid' => $id, 'title' => $title, 'money' => $money, 'day' => $day, 'rate' => $rate, 'type1' => $type, 'type2' => getprojecttype($type), 'status' => 0, 'time' => date('Y-m-d H:i:s'),'time2'=>date('Y-m-d H:i:s', strtotime('+' . $item['day'] . ' day')));
setNumber('LcUser', 'value', $money, 1, "id = $uid");
setUserMember($uid, Db::name('LcUser')->where(['id'=>$uid])->value('value'));
setInvestReward($uid, $money,$id);
$iid = Db::name('LcInvest')->insertGetId($invest);
if (!empty($iid)) {
if ($type == 1) {
$base = 1;
}
else if ($type == 2) {
$base = 7;
}
else if ($type == 3) {
$base = 30;
}
else if ($type == 4) {
$base = 1;
}
else if ($type == 5) {
$base = $day;
}
elseif ($type == 6) {
$base = 1;
}else{
$base = 0;
}
$day2 = $day / $base;
$bool = false;
$money2 = $money;
$i = 1;
while($i <= $day2){
$time1 = $i * $base;
$data = array('uid' => $uid, 'iid' => $iid, 'num' => $i, 'title' => $title, 'money1' => round($money * $rate / 100 * $base, 2), 'money2' => 0, 'time1' => $type == 6?$item['fixedtime']:date('Y-m-d H:i:s', strtotime('+' . $time1 . ' day')), 'time2' => '0000-00-00 00:00:00', 'pay1' => $money * $rate / 100 * $base, 'pay2' => 0, 'status' => 0);
if($type == 4){
$data['money1'] = $money2 - $money + round($money2 * $rate / 100 * $base, 2);
$data['money2'] = $money;
$data['pay1'] = 0;
$money2 += round($money2 * $rate / 100 * $base, 2);
}
if($i == $day2){
$data['pay1'] += $money;
$data['money2'] += $money;
}
if($i == $day2 && $type == 4) {
$data['pay1'] = $money + $data['money1'];
$data['money2'] = $money;
}
if(Db::name('LcInvestList')->insertGetId($data)){
$bool = true;
}
++$i;
}
return $bool;
}
return false;
}
function getMallInvestList($id, $money, $uid,$tran_type)
{
$item = Db::name('LcMall')->where(['id'=>$id])->find();
$title = $item['title'];
$day = $item['day'];
$profit = $item['day_income']-$item['cost'];
$res=Db::name('LcMallInvest')->order("id desc")->find();
if($res['number']){
$number= date('ymd').sprintf("%05d", substr($res['number'],-5)+1);
}else{
$number= date('ymd').'01000';
}
$invest = array(
'uid' => $uid,
'pid' => $id,
'number' => $number,
'title' => $title,
'money' => $money,
'num' => $money/$item['min'],
'day' => $day,
'day_income' => $item['day_income'],
'cost' => $item['cost'],
'profit' => $profit,
'type' => $tran_type,
'status' => 0,
'time' => date('Y-m-d H:i:s'),
'time2'=> date('Y-m-d H:i:s', strtotime('+' . $item['day'] . ' day')),
);
$iid = Db::name('LcMallInvest')->insertGetId($invest);
if (!empty($iid)) {
$base = 1;
$day2 = $day / $base;
$bool = false;
$i = 1;
while($i <= $day2){
$time1 = $i * $base;
$data = array(
'uid' => $uid,
'iid' => $iid,
'num' => $i,
'title' => $title,
'money1' => $profit,
'money2' => 0,
'time1' => date('Y-m-d H:i:s', strtotime('+' . $time1 . ' day')),
'time2' => '0000-00-00 00:00:00',
'pay1' => $profit,
'pay2' => 0,
'tran_type' => $tran_type,
'status' => 0
);
if($i == $day2){
$data['money2'] += $money;
}
if(Db::name('LcMallInvestList')->insertGetId($data)){
$bool = true;
}
++$i;
}
return $bool;
}
return false;
}
/**
* @description获取项目类型
* @date: 2020/5/14 0014
* @param $pid
* @return string
*/
function getProjectType($pid)
{
$str = '到期还本还息';
switch ($pid) {
case 1:
$str = '按日付收益,保证金到期全额返还';
break;
case 2:
$str = '每周返息,到期还本';
break;
case 3:
$str = '每月返息,到期还本';
break;
case 4:
$str = '每日复利,保本保息';
break;
case 5:
$str = '到期还本还息';
break;
case 6:
$str = '当天投资,当天还本付息';
break;
}
return $str;
}
function getItemField($id, $field)
{
return Db::name('LcItem')->where(['id'=>$id])->value($field);
}
function getMallItemField($id, $field)
{
return Db::name('LcMall')->where(['id'=>$id])->value($field);
}
function getInvestMoney($id)
{
return Db::name('LcInvestList')->where("iid = '$id' AND pay1 <> 0")->sum('money1');
}
/**
* @description通用跳转
* @date: 2020/5/14 0014
* @param $msg
* @param int $time
* @param string $url
*/
function msg($msg, $time = 2, $url = '')
{
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>跳转提示</title>
<meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no,target-densitydpi = medium-dpi">
<style type="text/css">
*{ padding: 0; margin: 0; }
body{ background: #fff; font-family: "微软雅黑"; color: #333; font-size: 16px; }
</style>
</head>
<body>
<div style="width: 100%;height: 1000px;position: fixed;top: 0;left: 0;background-color: rgba(0,0,0,0.35);">
<div style="width: 320px;height: 180px;border-radius:3px;overflow:hidden;margin: auto;position: fixed;top: 0;left: 0;right: 0;bottom: 0;background-color: #fff;box-shadow: 0 0 15px #999;">
<div style="width: 100%;height:50px;line-height: 50px;background-color: #cfcfcf;">
<label style="margin-left:10px;color:#666;">温馨提示</label>
<label style="font-size: 12px;color:#888;float:right;display: block;margin-right: 10px;"><b id="wait">' . $time . '</b>秒后跳转</label>
<div style="clear:both;"></div>
</div>
<div style="padding: 25px 10px;line-height: 30px;">
<p style="background: url(\'/static/theme/index/img/success.png\') no-repeat 0 -2px;;height: 32px;padding-left: 40px;">' . $msg . '</p>
<p style="text-align: right;margin-top: 20px;font-size: 12px;">
<a id="href" href="' . $url . '" style="display: inline-block;width: 80px;height: 30px;background-color: #888;color:#fff;text-align: center;text-decoration: none;">确定</a>
</p>
</div>
</div>
</div>
<script type="text/javascript">
(function(){
var wait = document.getElementById("wait"),href = document.getElementById("href").href;
var interval = setInterval(function(){
var time = --wait.innerHTML;
if(time <= 0) {
location.href = href;
clearInterval(interval);
};
}, 1000);
})();
</script>
</body>
</html>';
exit();
}
//短信开关
function smsStatus($code)
{
return Db::name('LcSms')->where(['code' => $code])->value('status');
}
/**
* @description短信接口
* @date: 2020/9/3 0003
* @param $phone
* @param $code
* @param $msg
* @return array
* @throws \think\Exception
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
* @throws \think\exception\PDOException
*/
function sendSms($phone, $code, $msg)
{
if (smsStatus($code) == 0) {
return reSmsCode('001');
}
$sms = Db::name('LcSms')->where(['code' => $code])->find();
if (empty($sms)) {
return reSmsCode('002');
}
$sms_code = $msg;
$sign = "" . sysconf('yunpian_sign') . "";
$msg = str_replace('【', '[', $msg);
$msg = str_replace('】', ']', $msg);
$smsMsg = str_replace('###', $msg, $sign . $sms['msg']);
$sms_type = sysconf("sms_api_type");
if ($sms_type == 1) $recode = yunpian($phone, $code, $smsMsg);
elseif ($sms_type == 2) $recode = wangJian($phone, $smsMsg);
else $recode = smsbao($phone, $smsMsg);
$data = array('phone' => $phone, 'msg' => $smsMsg, 'code' => $recode . '#' . reSmsCode($recode)['msg'], 'time' => date('Y-m-d H:i:s'), 'ip' => $sms_code);
Db::name('LcSmsList')->insert($data);
return reSmsCode($recode);
}
/**
* @description云片短信接口
* @date: 2020/9/3 0003
* @param $phone
* @param $code
* @param $smsMsg
* @return string
* @throws \think\Exception
* @throws \think\exception\PDOException
*/
function yunpian($phone, $code, $smsMsg)
{
if ($code == '18001' || $code == '18004') {
$apikey = sysconf('yunpian_key');//注册、找回密码
} else {
$apikey = sysconf('yunpian_tkey');//通知
}
$url = 'https://sms.yunpian.com/v2/sms/single_send.json';
$encoded_text = urlencode($smsMsg);
$mobile = urlencode($phone);
$post_string = 'apikey=' . $apikey . '&text=' . $encoded_text . '&mobile=' . $mobile;
$msg = vpost($url, $post_string);
$msg = json_decode($msg, true);
if ($msg['code'] == '0') {
$recode = '000';
} else if (0 < $msg['code']) {
$recode = '004';
} else {
if ($msg['code'] < 0 && -50 < $msg['code']) {
$recode = '005';
} else if ($msg['code'] == -50) {
$recode = '006';
} else {
$recode = '009';
}
}
return $recode;
}
/**
* @description网建通短信接口
* @date: 2020/9/3 0003
* @param $phone
* @param $smsMsg
* @return string
* @throws \think\Exception
* @throws \think\exception\PDOException
*/
function wangJian($phone, $smsMsg)
{
$smsapi = "http://utf8.api.smschinese.cn/";
$user = sysconf('wj_user');
$key = sysconf('wj_key');
$sendurl = $smsapi . "?Uid=" . $user . "&Key=" . $key . "&smsMob=" . $phone . "&smsText=" . $smsMsg;
$result = file_get_contents($sendurl);
if ($result > 0) return '000';
return '009';
}
/**
* @description短信宝
* @date: 2020/9/3 0003
* @param $phone
* @param $content
* @return string
* @throws \think\Exception
* @throws \think\exception\PDOException
*/
function smsBao($phone, $content)
{
$smsapi = "http://api.smsbao.com/";
$user = sysconf('smsbao_user');
$pass = sysconf('smsbao_pass');
$pass = md5("$pass");
$sendurl = $smsapi . "sms?u=" . $user . "&p=" . $pass . "&m=" . $phone . "&c=" . urlencode($content);
$result = file_get_contents($sendurl);
if ($result == '0') return '000';
return '009';
}
/**
* @description
* @date: 2020/9/3 0003
* @param $url
* @param $data
* @return mixed
*/
function vpost($url, $data)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$tmpInfo = curl_exec($curl);
if (curl_errno($curl)) {
echo 'Errno' . curl_error($curl);
}
curl_close($curl);
return $tmpInfo;
}
function reSmsCode($code)
{
$data = array('code' => $code, 'msg' => '未知');
switch ($code) {
case '000':
$data['msg'] = '发送成功';
break;
case '001':
$data['msg'] = '平台未启用短信通知';
break;
case '002':
$data['msg'] = '平台未设置该模板';
break;
case '003':
$data['msg'] = '平台未设置签名';
break;
case '004':
$data['msg'] = '操作过于频繁';
break;
case '005':
$data['msg'] = '短信权限不足';
break;
case '006':
$data['msg'] = '短信接口调用失败';
break;
case '007':
$data['msg'] = '管理员已关闭短信通知';
break;
case '008':
$data['msg'] = '操作过于频繁,请一小时后再试';
break;
default:
$data['code'] = '009';
$data['msg'] = '未知错误';
}
return $data;
}
function ChickIsOpen($id){
$pro = Db::name('LcProduct')->where('id',$id)->find();
$otime_arr = [];
$otime_arr[] = $pro['opentime_1'];
$otime_arr[] = $pro['opentime_2'];
$otime_arr[] = $pro['opentime_3'];
$otime_arr[] = $pro['opentime_4'];
$otime_arr[] = $pro['opentime_5'];
$otime_arr[] = $pro['opentime_6'];
$otime_arr[] = $pro['opentime_7'];
//此时时间
$_time = time();
$_zhou = (int)date("w");
if($_zhou == 0){
$_zhou = 7;
}
$_shi = (int)date("H");
$_fen = (int)date("i");
$isopen = 1;
foreach ($otime_arr as $k => $v) {
if($k == $_zhou-1){
$_check = explode('|',$v);
if(!$_check){
continue;
}
foreach ($_check as $key => $value) {
$_check_shi = explode('~',$value);
if(count($_check_shi) != 2){
continue;
}
$_check_shi_1 = explode(':',$_check_shi[0]);
$_check_shi_2 = explode(':',$_check_shi[1]);
//开市时间在1与2之间
if($isopen == 1){
continue;
}
if( ($_check_shi_1[0] == $_shi && $_check_shi_1[1] < $_fen) ||
($_check_shi_1[0] < $_shi && $_check_shi_2[0] > $_shi) ||
($_check_shi_2[0] == $_shi && $_check_shi_2[1] > $_fen)
){
$isopen = 1;
}else{
$isopen = 0;
}
}
}
}
if ($pro['isopen']) {
return $isopen;
}else{
return 0;
}
}
//计算小数点后位数
function getFloatLength($num) {
$count = 0;
$temp = explode ( '.', $num );
if (sizeof ( $temp ) > 1) {
$decimal = end ( $temp );
$count = strlen ( $decimal );
}
return $count;
}
/**
* 自定义返回提示信息
* @author lukui 2017-07-14
* @param [type] $data [description]
* @param [type] $type [description]
*/
function WPreturn($data,$type,$url=null)
{
$res = array('data'=>$data,'type'=>$type);
if($url){
$res['url'] = $url;
}
return $res;
}