where(['status' => 3, 'issell' => 2, 'create_time' => $yestday])->select(); foreach ($list as $v) { $appointcnt = db('trade')->where(['goodsid' => $v['goodsid'], 'isout' => 0, 'status' => 0])->count(); $goods = db('goods')->where(['id' => $v['goodsid']])->find(); if ($goods['on_sale'] == 1 && $appointcnt == 0) { db('goods')->where(['id' => $v['goodsid']])->update(['istrade' => 0]); db('trade')->where(['id' => $v['id']])->update(['status' => 4]); } elseif ($goods['on_sale'] == 1 && $appointcnt > 0) { db('trade')->where(['id' => $v['id']])->update(['status' => 4]); } elseif ($goods['on_sale'] != 1) { db('trade')->where(['id' => $v['id']])->update(['status' => 4]); } else { continue; } } $list1 = db('goods')->where(['isnew' => 1, 'on_sale' => 0, 'create_user' => 1, 'utime' => [['gt', $yestday], ['lt', strtotime('today')]]])->select(); foreach ($list1 as $v) { db('goods')->where(['id' => $v['id']])->update(['create_user' => 0, 'on_sale' => 1, 'istrade' => 0]); } $this->success('请求成功'); } /** * 转售产品每日释放 * @throws \think\exception\DbException * @throws db\exception\DataNotFoundException * @throws db\exception\ModelNotFoundException */ public function release() { $key = input('key', ''); if ($key != md5('hua')) { $this->error('非法请求'); } if (date('H:i') >= '07:00') { $this->error('不在释放处理时间段内'); } // 计算获取奖池和已释放总额 $awards = Trade::getAwardTotal(); $releaseUsdtTotal = Trade::where(['status' => 3, 'on_resale' => 1])->sum('release_usdt'); $awardTotal = isset($awards['total_usdt']) ? $awards['total_usdt'] : 0; // 奖池是否还有钱,若已释放完 if ($awardTotal <= $releaseUsdtTotal) { $this->error('抱歉,奖池金额已释放完'); } // 处理转售释放 $tradeConfig = \app\common\model\Config::getConfigByGroup('trade'); $config['release_rate'] = isset($tradeConfig['release_rate']) ? $tradeConfig['release_rate']['value'] : 0; if ($config['release_rate'] <= 0) { $this->error('释放参数错误,请先配置'); } $coinRate = CoinRate::getRate('CNY', 'USD'); if ($coinRate <= 0) { $this->error('汇率参数错误,请稍后重试'); } // 待释放产品 $tradeList = \app\common\model\Trade::where(['on_resale' => 1]) ->whereIn('status', [3, 4]) ->whereRaw('release_usdt < release_total_usdt') ->where('release_time', '<', strtotime(date('Y-m-d'))) ->field('id,orderNo,goodsid,userid,relevant_userid,status,endnums,pre_price,release_total,release_usdt,release_total_usdt,release_time') ->order('ctime', 'asc') ->limit(1000) ->select(); if (empty($tradeList)) { $this->error('暂时没有可释放的转售产品'); } $success = 0; $fail = 0; foreach ($tradeList as $k => $item) { $tradeUserId = isset($item['relevant_userid']) ? $item['relevant_userid'] : 0; $releaseTotalUsdt = isset($item['release_total_usdt']) ? $item['release_total_usdt'] : 0; $speedData = Trade::getSpeedTotalByUser($tradeUserId); // 加速值 $speedUsdt = isset($speedData['speed_usdt']) ? $speedData['speed_usdt'] : 0; $speedTotal = isset($speedData['speed_total']) ? $speedData['speed_total'] : 0; // 计算释放额度 $amount = isset($item['pre_price']) ? $item['pre_price'] : 0; $releaseUsdt = isset($item['release_usdt']) ? $item['release_usdt'] : 0; $releaseAmount = $amount ? round($amount * $config['release_rate'] / 100 + $speedTotal, 2) : 0; $releaseAmount = ($amount - $releaseAmount) < $releaseAmount ? max(0,$amount - $releaseAmount) : $releaseAmount; $totalUsdt = $releaseTotalUsdt ? $releaseTotalUsdt : round(CoinRate::transfer($amount, 'CNY', 'USD'), 2); $usdt = $totalUsdt>0? round($totalUsdt * $config['release_rate'] / 100 + $speedUsdt, 2) : 0; $usdt = ($totalUsdt - $releaseUsdt) < $usdt ? ($totalUsdt - $releaseUsdt) : $usdt; $releaseTotal = isset($item['release_total']) ? $item['release_total'] : 0; if ($tradeUserId <= 0 || $amount <= 0 || $usdt <= 0 || $totalUsdt <= $releaseUsdt) { $fail++; continue; } // 用户信息 $user = \app\common\model\User::where(['id' => $tradeUserId, 'status' => 1]) ->field('id,usdt,nickname,username') ->find(); if (empty($user)) { $fail++; continue; } // 释放到余额 Db::startTrans(); $balance = $user->usdt; $user->usdt = $balance + $usdt; $user->updatetime = time(); if (!$user->save()) { $fail++; Db::rollback(); continue; } // 流水明细 $changedata = [ 'userid' => $tradeUserId, 'type' => 17, 'money' => $usdt, 'balance' => $balance, 'relevant_userid' => $tradeUserId, 'status' => 1, 'create_time' => time(), 'remark' => '转售产品给平台释放USDT到账', 'user_name' => $user->username ? $user->username : '系统', 'relevant_name' => $user->username ? $user->username : '系统', ]; if (!Db::name('detailed_usdt')->insertGetId($changedata)) { $fail++; Db::rollback(); continue; } // 释放明细 $data = [ 'userid' => $tradeUserId, 'type' => 1, 'money' => $releaseAmount, 'usdt_num' => $usdt, 'speed_usdt' => $speedUsdt, 'speed_total' => $speedTotal, 'balance' => $user->usdt, 'orderid' => $item['id'], 'status' => 1, 'create_time' => time(), 'update_time' => time(), 'remark' => '转售产品每日释放到账', ]; if (!ReleaseLog::insertGetId($data)) { $fail++; Db::rollback(); continue; } // 更新释放交易商品数据 $tradeData = ['release_total' => $releaseTotal + $releaseAmount, 'release_usdt' => $releaseUsdt + $usdt, 'release_time' => time()]; if ($releaseTotalUsdt <= 0) { $tradeUserId['release_total_usdt'] = $totalUsdt; } if ($releaseUsdt + $usdt >= $amount) { $tradeData['status'] = 4; } if (!Trade::where(['id' => $item['id']])->update($tradeData)) { $fail++; Db::rollback(); continue; } $success++; Db::commit(); } $this->success('请求处理成功', ['success' => $success, 'fail' => $fail,'total'=>count($tradeList)]); } /*预约上架*/ function checkappoint() { $gids = db('trade')->where(['status' => 0])->group('goodsid')->column('goodsid'); foreach ($gids as $vl) { $tradelist = db('trade')->where(['goodsid' => $vl, 'status' => 0])->select(); if (count($tradelist) == 1) { continue; } else { $cnt = 0; foreach ($tradelist as $vs) { $cnt++; if ($cnt == 1) { continue; } else { #取消 db('trade')->where(['id' => $vs['id']])->update(['status' => -2, 'iscancel' => 1, 'confirm_time' => time()]); } } } } $list = db('goods_cats')->where(['status' => 1])->select(); foreach ($list as $v) { if (time() >= strtotime(date("Y-m-d {$v['start']}")) && time() <= strtotime(date("Y-m-d {$v['end']}"))) { db('trade')->where(['catid' => $v['id'], 'appoint_time' => ['lt', strtotime('today')], 'status' => 0])->update(['status' => 1, 'ctime' => time(), 'create_time' => strtotime('today')]); } } $this->success('操作完成'); } function getnowtime() { $id = input('id', 0); $time = date('Y年m月d日H:i:s', time()); $studio = db('studio')->where(['id' => $id])->find(); $startTime = isset($studio['start']) ? $studio['start'] : 0; $endTime = isset($studio['end']) ? $studio['end'] : 0; $startTime = $startTime ? strtotime(date('Y-m-d') . ' ' . $startTime) : 0; $endTime = $endTime ? strtotime(date('Y-m-d') . ' ' . $endTime) : 0; $expired = $startTime > time() ? $startTime - time() : 0; if ($endTime <= time()) { $startTime = strtotime(date('Y-m-d', strtotime(date('Y-m-d')) + 86400) . ' ' . $startTime); $expired = $startTime > time() ? $startTime - time() : 0; } if (date('week') == 1) { $weeks = '一'; } elseif (date('week') == 2) { $weeks = '二'; } elseif (date('week') == 3) { $weeks = '三'; } elseif (date('week') == 4) { $weeks = '四'; } elseif (date('week') == 5) { $weeks = '五'; } elseif (date('week') == 6) { $weeks = '六'; } else { $weeks = '七'; } $this->success($time . ' 星期' . $weeks, ['time' => $endTime, 'expired' => $expired]); } function getusername() { $names = input('username'); if (empty($names)) { $this->error('请输入账户'); } $user = db('user')->where(['username|mobile' => $names, 'status' => 1])->find(); if ($user) { $this->success('', ['name' => $user['nickname']]); } else { $this->error('用户不存在' . $names); } } /*匹配*/ function checktrade() { $bcf = db('bonus_config')->where('id', 4)->find(); $list = db('trade')->where(['status' => ['in', '1,2']])->select(); foreach ($list as $v) { if ($v['status'] == 2) { $JC = time() - ($v['pay_time'] + 60 * (int)$bcf['cap']); if ($JC > 0) {//自动确认 db('trade')->where(['id' => $v['id']])->update(['status' => -1]); } } if ($v['status'] == 1) { $JC1 = time() - ($v['ctime'] + 60 * $bcf['value']); if ($JC1 > 0) {//超时未支付 db()->startTrans(); $res1 = db('trade')->where(['id' => $v['id']])->update(['status' => -2, 'iscancel' => 1, 'confirm_time' => time()]); $res2 = db('goods')->where(['id' => $v['goodsid']])->update(['istrade' => 0]); if ($res1 && $res2) { db()->commit(); } else { db()->rollback(); } } } } echo 'success'; } function getnoticelist() { $map['status'] = 1; $map['catid'] = 1; $p = $this->request->request('p'); if (empty($p)) { $this->error('缺少参数页码'); } $pagesize = 10; $total = db('article')->where($map)->count(); $totalPage = ceil($total / $pagesize); if ($p > $totalPage && $total > 0) { $this->error('页码有误'); } $list = db('article')->where($map)->page($p, $pagesize)->order('id desc')->select(); foreach ($list as &$v) { $v['ctime'] = date('Y-m-d H:i:s', $v['ctime']); $v['abs'] = mbsubstr($v['content'], 0, 30); $v['prc'] = empty($v['prc']) ? 'http://' . $_SERVER['HTTP_HOST'] . '/assets/shop/img/gg.png' : $v['prc']; } if (empty($list)) { $data['list'] = []; } else { $data['list'] = $list; } $data['total'] = $totalPage; $this->success('', $data); } function fdbonus() { db()->execute('call CashBonus()'); $this->success('执行完毕'); } /*发送留言 */ function tosendmsg() { $uid = input('uid'); $content = input('content'); if (empty($content)) { $this->error(__("请输入留言")); } $param['content'] = $content; $param['from_uid'] = 0; $param['to_uid'] = $uid; $param['ctime'] = time(); $param['userid'] = $uid; $ids = db('user_message')->insertGetId($param); if ($ids) { goeasy_sms($content); $this->success(__("留言成功")); } else { $this->error(__("留言失败")); } } function checkuserappoint() { $name = $this->request->request('name'); $sid = $this->request->request('sid'); $user = db('user')->where(['username|mobile' => $name])->find(); if ($user) { $isappoint = db('studio_user')->where(['userid' => $user['id'], 'sid' => $sid])->find(); if ($isappoint) { $this->success('', ['id' => $user['id'], 'username' => $user['username'], 'isclose' => 0]); } else { $this->success('', ['id' => $user['id'], 'username' => $user['username'], 'isclose' => 1]); } } else { $this->error('您输入的会员不存在'); } } function setuserappoint() { $userid = $this->request->request('userid'); $sid = $this->request->request('sid'); $isappoint = $this->request->request('isappoint'); $info = db('studio_user')->where(['userid' => $userid, 'sid' => $sid])->find(); if ($info) { if ($isappoint == 1) { db('studio_user')->where(['id' => $info['id']])->delete(); $this->success('设置成功'); } else { $this->error('您并未做任何修改'); } } else { if ($isappoint == 1) { $this->error('您并未做任何修改'); } else { db('studio_user')->insertGetId(['userid' => $userid, 'sid' => $sid, 'ctime' => time(), 'status' => 1]); $this->success('设置成功'); } } } /* 获取节点 */ function getClass() { $rootid = input('rootid'); $uid = input('uid'); $where['refereeid'] = $uid; if ($uid == 0) { $myself = db('user')->where(['id' => $rootid])->find(); $value['uid'] = $myself['id']; $value['status'] = $myself['status']; $value['usernumber'] = $myself['username'] . "[姓名:" . $myself['nickname'] . "]"; $count = db('user')->where('refereeid', $value['uid'])->count(); $value['count'] = $count; if ($count != 0) { $value['isParent'] = true; } else { $value['isParent'] = false; } $list[] = $value; } else { $info = db('user')->where($where)->select(); foreach ($info as $value) { $count = db('user')->where('refereeid', $value['id'])->count(); $value['count'] = $count; if ($count != 0) { $value['isParent'] = true; } else { $value['isParent'] = false; } $value['uid'] = $value['id']; $value['usernumber'] = $value['username'] . "[姓名:" . $value['nickname'] . "]"; $list[] = $value; } } return $list; } /* 奖金设置 */ function bonus_set() { $param = $this->request->get(); $data_arr = explode('-', $param['id']); $column = $data_arr['0']; $key = $data_arr['1']; //模型 if (count($data_arr) < 3) { $data_model = "bonus_config"; } else { $data_model = $data_arr['2']; } $data[$column] = $param['val']; $info = db($data_model)->where('id', $key)->find(); $res = db($data_model)->where('id', $key)->update($data); if ($res) { $this->success("修改完成"); } else { $this->error("修改完成"); } } /*切换用户名 */ function switchname() { $randStr = str_shuffle('1234567890'); $randZm = str_shuffle('abcdefghijklmnopqrstuvwxyz'); $username = substr($randZm, 0, 2) . substr($randStr, 0, 6);//账号为7位随机数 $this->success($username); } function getuserid() { $param = $this->request->get(); $info = db('user')->where(['username|mobile' => $param['username']])->find(); if ($info) { $this->success($info['id']); } else { $this->error('用户不存在'); } } function getstuid() { $param = $this->request->get(); $info = db('studio')->where(['title' => $param['title']])->find(); if ($info) { $this->success($info['id']); } else { $this->error('商家不存在'); } } /* 检测用户名 */ function checkusername() { $param = $this->request->get(); $info = db('user')->where('username', $param['username'])->find(); if ($info) { $this->error("用户名已注册,请更换"); } else { $this->success("用户名可以使用"); } } /* 获取昵称 */ function getnickname() { $param = $this->request->get(); $info = db('user')->where(['username|mobile' => $param['username']])->find(); if ($info) { $this->success($info['nickname']); } else { $this->error('用户不存在'); } } /* 获取位置节点pos */ function getpos() { $param = $this->request->get(); $info = db('user')->where(['username' => $param['username'], 'status' => 1])->find(); if (!$info) { $this->error("会员不存在或不可用"); } $str = ""; $pos = config('pos'); $list = db('user_parent')->where('pid', $info['id'])->select(); if ($list) { $pos_arr = []; foreach ($list as $k => $v) { $pos_arr[$v['position']] = $v; } foreach ($pos as $key => $v) { if (empty($pos_arr[$key]['userid'])) { $str .= "'; } else { $str .= "'; } } } else { foreach ($pos as $key => $v) { $str .= "'; } } $this->success($str); } }