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.
 

345 lines
15 KiB

<?php
/**
* [Laike System] Copyright (c) 2017-2020 laiketui.com
* Laike is not a free software, it under the license terms, visited http://www.laiketui.com/ for more details.
*/
require_once(MO_WEBAPP_DIR . "/plugins/PluginAction.class.php");
/**
* 作者:Ketter
* 插件签到类
* 请求路径构造
* http://localhost/open/app/LKT/index.php?module=api&action=pi&p=sign&c=Home&m=index
*/
class HomeAction extends PluginAction
{
// 点击签到
public function index()
{
$db = DBAction::getInstance();
$request = $this->getContext()->getRequest();
$openid = addslashes(trim($request->getParameter('openid'))); // 微信id
$appConfig = $this->getAppInfo();
$img = $appConfig['imageRootUrl'];
$imgurl = ''; // 签到图片
$min_score = ''; // 最少领取积分
$max_score = ''; // 最大领取积分
$continuity_three = ''; // 连续签到7天
$continuity_twenty = ''; // 连续签到20天
$activity_overdue = ''; // 连续签到30天
// 查询签到参数
$sql = "select * from lkt_sign_config where id = 1";
$r = $db->select($sql);
if ($r) {
$imgurl = $img . $r[0]->imgurl; // 签到图片
$min_score = $r[0]->min_score; // 最少领取积分
$max_score = $r[0]->max_score; // 最大领取积分
$continuity_three = $r[0]->continuity_three; // 连续签到7天
$continuity_twenty = $r[0]->continuity_twenty; // 连续签到20天
$activity_overdue = $r[0]->activity_overdue; // 连续签到30天
}
$num = 0;
if (!$openid || $openid == 'undefined') {
echo json_encode(array('status' => 2, 'err' => '请登录'));
exit;
}
// 根据微信id,查询用户id,用户积分
$sql = "select user_id from lkt_user where wx_id = '$openid'";
$rr = $db->select($sql);
if ($rr) {
$user_id = $rr[0]->user_id;
// 查询正在进行的签到活动
$sql = "select * from lkt_sign_activity where status = 1";
$rrr = $db->select($sql);
if ($rrr) {
$starttime = date("Ymd", strtotime($rrr[0]->starttime)); // 开始时间
$endtime = date("Ymd", strtotime($rrr[0]->endtime)); // 结束时间
$day = $endtime - $starttime; // 活动天数
$start_1 = date("Y-m-d 00:00:00", strtotime("-1 day")); // 昨天开始时间
$end_1 = date("Y-m-d 23:59:59", strtotime("-1 day")); // 昨天结束时间
// 根据用户id, 查询昨天签到记录
$sql = "select * from lkt_sign_record where user_id = '$user_id' and sign_time > '$start_1' and sign_time < '$end_1' and type = 0";
$rrrr = $db->select($sql);
if ($rrrr) { // 有数据,就循环查询连续签到几天
for ($i = 1; $i <= $day; $i++) {
$start = date("Y-m-d 00:00:00", strtotime("-$i day"));
$end = date("Y-m-d 23:59:59", strtotime("-$i day"));
$sql = "select * from lkt_sign_record where user_id = '$user_id' and sign_time > '$start' and sign_time < '$end' and type = 0";
$r_num = $db->select($sql);
if (empty($r_num)) {
$num = $i;
break;
}
}
} else { // 没数据,连续签到就为1
$num = 1;
}
}
if ($continuity_three != 0 && $num == 7) { // 当设置了连续7天奖励 并且 连续签到7天
$sign_score = $continuity_three;
} else if ($continuity_twenty != 0 && $num == 20) { // 当设置了连续20天奖励 并且 连续签到20天
$sign_score = $continuity_twenty;
} else if ($activity_overdue != 0 && $num == 30) { // 当设置了连续30天奖励 并且 连续签到30天
$sign_score = $activity_overdue;
} else {
$sign_score = rand($min_score, $max_score);
}
$record = "会员" . $user_id . "签到领取" . $sign_score . "积分";
$sql = "insert into lkt_sign_record (user_id,sign_score,record,sign_time,type) value ('$user_id','$sign_score','$record',CURRENT_TIMESTAMP,0)";
$r_0 = $db->insert($sql);
if ($r_0 > 0) {
$sql = "select score from lkt_user where user_id = '$user_id'";
$r_1 = $db->select($sql);
$score = $r_1[0]->score + $sign_score;
$sql = "update lkt_user set score = score + '$sign_score' where user_id = '$user_id'";
$db->update($sql);
$sign_time = [];
$sql = "select sign_time from lkt_sign_record where user_id = '$user_id' and type = 0";
$r_2 = $db->select($sql);
if ($r_2) {
foreach ($r_2 as $k => $v) {
$y = date("Y", strtotime($v->sign_time));
$m = date("m", strtotime($v->sign_time));
$d = date("d", strtotime($v->sign_time));
if ($m < 10) {
$m = str_replace("0", "", $m);
}
if ($d < 10) {
$d = str_replace("0", "", $d);
}
$sign_time[$k] = $y . $m . $d;
}
}
echo json_encode(array('status' => 1, 'sign_score' => $sign_score, 'score' => $score, 'sign_time' => $sign_time, 'imgurl' => $imgurl, 'num' => $num));
exit;
} else {
echo json_encode(array('status' => 0, 'err' => '系统繁忙!'));
exit;
}
} else {
echo json_encode(array('status' => 0, 'err' => '系统繁忙!'));
exit;
}
}
// 进入签到页面
public function sign()
{
$db = DBAction::getInstance();
$request = $this->getContext()->getRequest();
$openid = addslashes(trim($request->getParameter('openid'))); // 微信id
$year = addslashes(trim($request->getParameter('year'))); // 年
$month = addslashes(trim($request->getParameter('month'))); // 月
$appConfig = $this->getAppInfo();
$img = $appConfig['imageRootUrl'];
// 查询签到参数
$sql = "select * from lkt_sign_config where id = 1";
$r = $db->select($sql);
if ($r) {
$imgurl = $img . $r[0]->imgurl; // 签到图片
} else {
$imgurl = $img; // 签到图片
}
if (!$openid || $openid == 'undefined') {
echo json_encode(array('status' => 2, 'err' => '请登录!'));
exit;
}
// 根据微信id,查询用户id,用户积分
$sql = "select user_id from lkt_user where wx_id = '$openid'";
$rr = $db->select($sql);
if ($rr) {
$user_id = $rr[0]->user_id;
$time_start = date("Y-m-d H:i:s", mktime(0, 0, 0, date('m'), date('d'), date('Y'))); // 当前时间
// 根据用户id、签到时间大于当天开始时间,查询签到记录
$sql = "select * from lkt_sign_record where user_id = '$user_id' and sign_time >= '$time_start' and type = 0";
$r_sign = $db->select($sql);
$sign_status = 1;
if ($r_sign) {
$sign_status = 0; // 有数据,代表当天签名了,不用弹出签名框
}
// 查询正在进行的签到活动
$sql = "select * from lkt_sign_activity where status = 1";
$rrr = $db->select($sql);
if ($rrr) {
$starttime = date("Ymd", strtotime($rrr[0]->starttime)); // 开始时间
$endtime = date("Ymd", strtotime($rrr[0]->endtime)); // 结束时间
$details = $rrr[0]->detail;
$day = $endtime - $starttime; // 活动天数
//------------------
$start_1 = date("Y-m-d 00:00:00", strtotime("-1 day")); // 昨天开始时间
$end_1 = date("Y-m-d 23:59:59", strtotime("-1 day")); // 昨天结束时间
$num = 0;
// 根据用户id, 查询昨天签到记录
$sql = "select * from lkt_sign_record where user_id = '$user_id' and sign_time > '$start_1' and sign_time < '$end_1' and type = 0";
$rrrr = $db->select($sql);
if ($rrrr) { // 有数据,就循环查询连续签到几天
for ($i = 1; $i <= $day; $i++) {
$start = date("Y-m-d 00:00:00", strtotime("-$i day"));
$end = date("Y-m-d 23:59:59", strtotime("-$i day"));
$sql = "select * from lkt_sign_record where user_id = '$user_id' and sign_time > '$start' and sign_time < '$end' and type = 0";
$r_num = $db->select($sql);
if (empty($r_num)) {
$num = $i - 1;
break;
}
}
}
$y_time = date('Y', strtotime(date("Y-m-d"))); // 本年年份
$m_time = date('m', strtotime(date("Y-m-d"))); // 本月月份
if ($m_time < 10) {
$m_time = str_replace("0", "", $m_time);
}
if ($year > $y_time || $month > $m_time) {
echo json_encode(array('status' => 1, 'sign_time' => '', 'imgurl' => $imgurl, 'num' => $num, 'details' => $details));
exit;
}
$time1 = date('Y-m', time());
$sign_time = [];
$sql = "select sign_time from lkt_sign_record where user_id = '$user_id' and sign_time like '$time1%' and type = 0";
$r_2 = $db->select($sql);
if ($r_2) {
foreach ($r_2 as $k => $v) {
$y = date("Y", strtotime($v->sign_time));
$m = date("m", strtotime($v->sign_time));
$d = date("d", strtotime($v->sign_time));
if ($m < 10) {
$m = str_replace("0", "", $m);
}
if ($d < 10) {
$d = str_replace("0", "", $d);
}
$sign_time[$k] = $y . $m . $d;
}
echo json_encode(array('status' => 1, 'sign_status' => $sign_status, 'sign_time' => $sign_time, 'imgurl' => $imgurl, 'num' => $num, 'details' => $details));
exit;
} else {
echo json_encode(array('status' => 0, 'sign_status' => $sign_status, 'sign_time' => $sign_time, 'err' => '暂无签到记录!', 'num' => 0, 'details' => $details));
exit;
}
} else {
echo json_encode(array('status' => 2, 'err' => '活动已结束!'));
exit;
}
} else {
echo json_encode(array('status' => 0, 'err' => '系统繁忙!'));
exit;
}
}
// 进入积分页面
public function integral()
{
$db = DBAction::getInstance();
$request = $this->getContext()->getRequest();
$openid = addslashes(trim($request->getParameter('openid'))); // 微信id
$appConfig = $this->getAppInfo();
$img = $appConfig['imageRootUrl'];
$logo = $img . $appConfig['logo'];
// 根据微信id,查询用户id、积分
$sql = "select user_id,score from lkt_user where wx_id = '$openid'";
$r_2 = $db->select($sql);
if ($r_2) {
$user_id = $r_2[0]->user_id; // 用户id
$score = $r_2[0]->score; // 用户积分
$sql01 = "select sign_score,sign_time,type from lkt_sign_record where user_id = '$user_id' order by sign_time desc";
$list_1 = $db->select($sql01);
$r_3 = [];
if ($list_1) {
foreach ($list_1 as $k => $v) {
if ($v->type == 0 || $v->type == 2 || $v->type == 4 || $v->type == 6 || $v->type == 7) {
$v->sign_time = date("Y-m-d", strtotime($v->sign_time));
$r_3[] = $v;
}
}
}
$r_4 = [];
if ($list_1) {
foreach ($list_1 as $k => $v) {
if ($v->type == 1 || $v->type == 3 || $v->type == 5) {
$v->sign_time = date("Y-m-d", strtotime($v->sign_time));
$r_4[] = $v;
}
}
}
$sql01 = "select switch from lkt_software_jifen where id = 1 ";
$r01 = $db->select($sql01);
$switch = $r01[0]->switch;
$sql = "select * from lkt_software_jifen where id = 1";
$rules = $db->select($sql);
$rule = $rules[0]->rule;
echo json_encode(array('status' => 1, 'logo' => $logo, 'rule' => $rule, 'score' => $score, 'sign' => $r_3, 'consumption' => $r_4, 'switch' => $switch));
exit;
} else {
echo json_encode(array('status' => 0, 'err' => '系统繁忙!'));
exit;
}
}
public function transfer_jifen()
{
$db = DBAction::getInstance();
$user_id = addslashes($_POST['user_id']);
$openid = addslashes($_POST['openid']);
$jifen = addslashes($_POST['jifen']);
$date_time = date('Y-m-d H:i:s', time());
if ($jifen <= 0 || $jifen == '') {
echo json_encode(array('status' => 1, 'err' => '正确填写转账金额'));
exit();
} else {
$sql001 = "select user_id,money from lkt_user where wx_id = '$openid'";
$r001 = $db->select($sql001);//本人
if ($r001) {
$user_id001 = $r001[0]->user_id;
$sql01 = "update lkt_user set score = score - '$jifen' where wx_id = '$openid'";
$r01 = $db->update($sql01);//本人
$sql02 = "update lkt_user set score = score + '$jifen' where user_id = '$user_id'";
$r02 = $db->update($sql02);//好友
$sql0001 = "insert into lkt_sign_record (user_id,sign_score,record,sign_time,type) values ('$user_id001','$jifen','转积分给好友','$date_time','3')"; //本人
$db->insert($sql0001);
$sql0002 = "insert into lkt_sign_record (user_id,sign_score,record,sign_time,type) values ('$user_id','$jifen','好友转积分','$date_time','4')";//好友
$db->insert($sql0002);
if ($r01 > 0 && $r02 > 0) {
echo json_encode(array('status' => 1, 'err' => '转账成功!'));
exit();
} else {
echo json_encode(array('status' => 0, 'err' => '转账失败!'));
exit();
}
} else {
echo json_encode(array('status' => 0, 'err' => '系统繁忙!'));
exit;
}
}
}
}
?>