ywtc_api/application/api/controller/Member.php

1002 lines
36 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace app\api\controller;
use think\Db;
use \think\Loader;
use think\helper\Hash;
use EasyWeChat\Factory;
use EasyWeChat\MiniProgram;
use think\facade\Config;
use app\member\model\Member as MemberModel;
use app\member\model\MemberMessages as MemberMessagesModel;
use app\member\model\MemberService as MemberServiceModel;
use app\member\model\MemberServiceDetail as MemberServiceDetailModel;
use app\member\model\MemberBalanceLogs as MemberBalanceLogsModel;
use app\member\model\BalanceWithdraw as BalanceWithdrawModel;
use app\member\model\MemberServiceOrder as MemberServiceOrderModel;
use app\other\model\Citys as CitysModel;
use app\other\model\ProductCategory as ProductCategoryModel;
use app\member\model\MemberFeedback as MemberFeedbackModel;
use app\admin\model\Attachment as AttachmentModel;
use app\other\model\Advert as AdvertModel;
use app\member\model\MemberRecharge as MemberRechargeModel;
use app\member\model\MemberVip as MemberVipModel;
use app\member\model\MemberWithdraw as MemberWithdrawModel;
use app\activity\model\MoneyTree as MoneyTreeModel;
use app\activity\model\MoneyTreeLogs as MoneyTreeLogsModel;
use app\activity\model\AwardWinnings as AwardWinningsModel;
use app\activity\model\Award as AwardModel;
use app\activity\model\AwardMessage as AwardMessageModel;
use app\activity\model\DriftBottle as DriftBottleModel;
/**
* 用户接口
* @package app\api\controller
*/
class Member extends Api
{
//初始化
public function initialize(){
parent::initialize();
}
/**
* 授权后更新用户信息
* @param int $headimg 头像
* @param int $nickname 昵称
* @param int $invitation_uid 邀请注册用户
* @author loomis<2477365162@qq.com>
*/
public function setUserInfo()
{
//传参数据
$data_list = $this->params;
$insert_data = [];
if(isset($data_list['headimg'])){
$insert_data['headimg'] = intval($data_list['headimg']);
}
if(isset($data_list['nickname'])){
$insert_data['nickname'] = trim($data_list['nickname']);
}
if(isset($data_list['realname'])){
$insert_data['realname'] = trim($data_list['realname']);
}
if(isset($data_list['realphone'])){
$insert_data['realphone'] = trim($data_list['realphone']);
}
if(isset($data_list['wxskqrcode'])){
$insert_data['wxskqrcode'] = intval($data_list['wxskqrcode']);
}
//被邀请注册
if (isset($data_list['invitation_uid']) && !empty($data_list['invitation_uid'])) {
if(intval($data_list['invitation_uid']) != $this->user_id){
$insert_data['invitation_uid'] = intval($data_list['invitation_uid']);
//进行积分发送
MemberModel::where('id',$insert_data['invitation_uid'])->setInc('balance',intval(config('login_integral')));
//插入积分记录、
MemberBalanceLogsModel::addGetLog($insert_data['invitation_uid'],1,intval(config('login_integral')),'','邀请用户注册');
}
}
$res = MemberModel::where(['id' => $this->user_id])->update($insert_data);
if ($res) {
apiReturn('200', '用户信息更新成功');
} else {
apiReturn('500', '用户信息更新失败');
}
}
/**
* 意见反馈
* @param int $phone 联系电话
* @param int $message 反馈内容
* @author loomis<2477365162@qq.com>
*/
public function addfeedback(){
//传参数据
$data_list = $this->params;
if (!isset($data_list['phone']) || empty($data_list['phone'])) {
return json(['code' => 500, 'msg' => '联系电话不能为空']);
}
if (!isset($data_list['message']) || empty($data_list['message'])) {
return json(['code' => 500, 'msg' => '反馈内容不能为空']);
}
$phone = trim($data_list['phone']);
$message = trim($data_list['message']);
if($this->illegalcharacters($phone) || $this->illegalcharacters($message)){
apiReturn('500', '非法参数');
}
$data_list['uid'] = $this->user_id;
$res = MemberFeedbackModel::create($data_list);
if ($res) {
apiReturn('200', '意见反馈提交成功,等待平台查看联系');
} else {
apiReturn('500', '意见反馈提交失败');
}
}
/**
* 我的
* @author loomis<2477365162@qq.com>
*/
public function usercenter(){
$userinfo = MemberModel::where('id',$this->user_id)->find();
//生成小程序码
if(empty($userinfo['share_qrcode'])){
$app = Factory::miniProgram([
'app_id' => config('smallprogram_appid'),
'secret' => config('smallprogram_appsecret'),
]);
$response = $app->app_code->get('pages/index/index?invitation_uid='.$this->user_id, []);
//二维码
$filename=time().'_wx.jpg';
$qr_path = $_SERVER['DOCUMENT_ROOT'] .'/uploads/qrcode';
// 保存小程序码到文件
if ($response instanceof \EasyWeChat\Kernel\Http\StreamResponse){
$resfilename = $response->saveAs($qr_path,$filename);
}
// 保存成功后 获取信息
$data['uid'] = 0;
$data['path'] = trim('uploads/qrcode/'.$resfilename,'.');
$data["md5"] = md5($data['path']);
$data["sha1"] = sha1($data['path']);
$data['name'] = $resfilename;
$data['ext'] = 'jpg';
$data['create_time'] = time();
$id = AttachmentModel::create($data);
//更新小程序邀请二维码
$userinfo->share_qrcode = $id['id'];
$userinfo->save();
$invitation_qrcode = $this->getFileUrl($id['id']);
}else{
$invitation_qrcode = $this->getFileUrl($userinfo['share_qrcode']);
}
//海报背景图
$haibao_advert = AdvertModel::where(['type'=>3])->order('sort asc,create_time desc')->find();
apiReturn('200', '查询成功',[
'id'=>$userinfo['id'],
'invitation_uid'=>$userinfo['invitation_uid'],
'headimg'=>$this->getFileUrl($userinfo['headimg']),
'headimg_id'=>$userinfo['headimg'],
'nickname'=>$userinfo['nickname'],
'balance'=>$userinfo['balance'],
'poster_img'=>$this->getFileUrl($haibao_advert['thumb']),
'invitation_qrcode'=>$invitation_qrcode,
'realname'=>$userinfo['realname'],
'realphone'=>$userinfo['realphone'],
'wxskqrcode'=>$this->getFileUrl($userinfo['wxskqrcode']),
'wxskqrcode_id'=>$userinfo['wxskqrcode'],
'vip_title'=>$userinfo['vip_title'],
]);
}
/**
* 我的积分
* @param int $page 页数默认为1每页显示20条数据
* @param int $type 1积分明细 2兑换明细
* @author loomis<2477365162@qq.com>
*/
public function myintegral(){
//传参数据
$data_list = $this->params;
if(!isset($data_list['type']) || empty($data_list['type'])){
apiReturn('500', 'type不能为空');
}
$type = intval($data_list['type']);
//页数
$page = 1;
if(isset($data_list['page'])){
$page = intval($data_list['page']);
}
$page = ($page-1);
$page=$page*20;
$limit=$page.',20';
$resdata = [];
if($type==1){//积分明细
$list = MemberBalanceLogsModel::where('uid',$this->user_id)->order('id desc')->limit($limit)->select()->toArray();
if(!empty($list)){
foreach ($list as $k=>$v){
$resdata[$k] = [
'category'=>$v['category'],
'value'=>$v['value'],
'mark'=>$v['mark'],
'create_time'=>date('Y-m-d H:i:s',$v['create_time']),
];
}
}
}else{//兑换明细
$list = BalanceWithdrawModel::where('uid',$this->user_id)->order('id desc')->limit($limit)->select()->toArray();
if(!empty($list)){
foreach ($list as $k=>$v){
$resdata[$k] = [
'value'=>$v['price'],
'status'=>$v['status'],
'create_time'=>date('Y-m-d H:i:s',$v['create_time']),
];
}
}
}
$userinfo = MemberModel::where('id',$this->user_id)->find();
apiReturn('200', '查询成功',[
'integral'=>$userinfo['balance'],
'withdraw_price'=>BalanceWithdrawModel::where(['uid'=>$this->user_id,'status'=>2])->sum('price'),
'list'=>$list,
]);
}
//获取积分提现比例
public function getproportion(){
apiReturn('200', '查询成功',[
'proportion'=>config('integral_price_bili'),
'minprice'=>config('integral_minprice')
]);
}
/**
* 积分提现
* @param int $integral_num
* @author loomis<2477365162@qq.com>
*/
public function addwithdraw(){
//传参数据
$data_list = $this->params;
if(!isset($data_list['withdrawid']) || empty($data_list['withdrawid'])){
apiReturn('500', '提现id不能为空');
}
$withdrawid = intval($data_list['withdrawid']);
$withdrawinfo = MemberWithdrawModel::where('id',$withdrawid)->find();
if(empty($withdrawinfo)){
apiReturn('500', '未查询到提现信息');
}
$userinfo = MemberModel::where('id',$this->user_id)->find();
if(empty($userinfo['wxskqrcode'])){
apiReturn('500', '请先完善收款信息');
}
$integral_num = $withdrawinfo['points_num'];
if($userinfo['vip_id']!=0){
$integral_num = $withdrawinfo['vip_points_num'];
}
if($userinfo['balance']<$integral_num){
apiReturn('500', '提现失败,积分不足');
}
$res = BalanceWithdrawModel::create([
'uid'=>$this->user_id,
'price'=>$withdrawinfo['price'],
'integral_num'=>$integral_num
]);
if($res){
//插入积分记录、
MemberBalanceLogsModel::addGetLog($this->user_id,2,$integral_num,$res['id'],'积分提现');
//扣除积分
$userinfo->balance = $userinfo->balance - $integral_num;
$userinfo->save();
apiReturn('200', '提现申请已提交,等待平台审核打款');
}else{
apiReturn('500', '服务器繁忙,请稍后再试');
}
}
/**
* 推广团队
* @param int $page 页数默认为1每页显示20条数据
* @param int $type 1一级 2二级
* @author loomis<2477365162@qq.com>
*/
public function promotionteam(){
//传参数据
$data_list = $this->params;
if(!isset($data_list['type']) || empty($data_list['type'])){
apiReturn('500', 'type不能为空');
}
$type = intval($data_list['type']);
//页数
$page = 1;
if(isset($data_list['page'])){
$page = intval($data_list['page']);
}
$page = ($page-1);
$page=$page*20;
$limit=$page.',20';
if($type==1){//一级
$list = MemberModel::where('invitation_uid',$this->user_id)
->field('id,headimg,nickname')
->order('id desc')
->limit($limit)
->select()->toArray();
if(!empty($list)){
foreach ($list as $k=>$v){
$list[$k]['headimg'] = $this->getFileUrl($v['headimg']);
//用户消费金额
$list[$k]['useprice'] = MemberServiceOrderModel::where(['type'=>1,'uid'=>$v['id'],'status'=>2])->sum('totalprice');
//用户给我产生的积分
$list[$k]['pointsnum'] = MemberBalanceLogsModel::where(['uid'=>$this->user_id,'to_uid'=>$v['id']])->sum('value');
}
}
}else{//二级
$ids = MemberModel::where('invitation_uid',$this->user_id)->column('id');
if(!empty($ids)){
$ids = implode(',',$ids);
$where = [];
$where[] = ['invitation_uid','in',$ids];
$list = MemberModel::where($where)
->field('id,headimg,nickname')
->order('id desc')
->limit($limit)
->select()->toArray();
if(!empty($list)){
foreach ($list as $k=>$v){
$list[$k]['headimg'] = $this->getFileUrl($v['headimg']);
//用户消费金额
$list[$k]['useprice'] = MemberServiceOrderModel::where(['type'=>1,'uid'=>$v['id'],'status'=>2])->sum('totalprice');
//用户给我产生的积分
$list[$k]['pointsnum'] = MemberBalanceLogsModel::where(['uid'=>$this->user_id,'to_uid'=>$v['id']])->sum('value');
}
}
}else{
$list = [];
}
}
apiReturn('200', '查询成功',$list);
}
/**
* 资源订单
* @param int $page 页数默认为1每页显示20条数据
* @param int $status 1待支付 2已支付
* @author loomis<2477365162@qq.com>
*/
public function serviceorder(){
//传参数据
$data_list = $this->params;
$status = 1;
if(isset($data_list['status']) && !empty($data_list['status'])){
$status = intval($data_list['status']);
}
//页数
$page = 1;
if(isset($data_list['page'])){
$page = intval($data_list['page']);
}
$page = ($page-1);
$page=$page*20;
$limit=$page.',20';
$where = [];
$where[] = ['uid','eq',$this->user_id];
$where[] = ['status','eq',$status];
$list = MemberServiceOrderModel::where($where)
->field('id,service_id,ordernum,service_title,service_summary,service_thumb,totalprice,create_time')
->order('id desc')
->limit($limit)
->select()->toArray();
if(!empty($list)){
foreach ($list as $k=>$v){
$list[$k]['service_thumb'] = $this->getFileUrl($v['service_thumb']);
$list[$k]['create_time'] = date('Y-m-d H:i:s',$v['create_time']);
$list[$k]['groupid'] = $v['service_id'];
unset($list[$k]['service_id']);
}
}
apiReturn('200', '查询成功',$list);
}
/**
* 我的扩列墙
* @param $int $type 1男生通道 2女生通道
* @param int $page 页数默认为1每页显示20条数据
* @author loomis<2477365162@qq.com>
*/
public function messageboard(){
//传参数据
$data_list = $this->params;
//页数
$page = 1;
if(isset($data_list['page'])){
$page = intval($data_list['page']);
}
$page = ($page-1);
$page=$page*20;
$limit=$page.',20';
//留言板数据
$where = [];
$where[] = ['uid','eq',$this->user_id];
$where[] = ['status','eq',1];
$type=1;
if(isset($data_list['type']) && !empty($data_list['type'])){
$type = intval($data_list['type']);
}
$where[] = ['type','eq',$type];
$list = MemberMessagesModel::where($where)->order('create_time desc')->field('id,uid,message,thumbs,create_time')->limit($limit)->select()->toArray();
if(!empty($list)){
foreach ($list as $k=>$v){
$thumbs = explode(',',$v['thumbs']);
foreach ($thumbs as $key=>$val){
$thumbs[$key] = $this->getFileUrl($val);
}
$list[$k]['thumbs'] = $thumbs;
//用户信息
$userinfo = MemberModel::where('id',$v['uid'])->find();
$list[$k]['headimg'] = $this->getFileUrl($userinfo['headimg']);
$list[$k]['nickname'] = $userinfo['nickname'];
$list[$k]['create_time'] = date('Y-m-d H:i:s',$v['create_time']);
}
}
apiReturn('200', '查询成功',$list);
}
//获取充值数据
public function getrecharge(){
$list = MemberRechargeModel::field('id,points_num,price')->order('sort asc')->select()->toArray();
apiReturn('200', '查询成功',$list);
}
//充值
public function addrecharge(){
//传参数据
$data_list = $this->params;
if(!isset($data_list['rechargeid']) || empty($data_list['rechargeid'])){
apiReturn('500', '充值id不能为空');
}
$rechargeid = intval($data_list['rechargeid']);
$info = MemberRechargeModel::where('id',$rechargeid)->find();
if(empty($info)){
apiReturn('500', '未查询到充值数据');
}
//生成订单号
$numRes = true;
do{
$ordernum = 'O'.date('ymd').$this->user_id.rand(100,999);
$count = MemberServiceOrderModel::where(['ordernum'=>$ordernum])->count();
if(empty($count)) {
$numRes=false;
}
}while($numRes);
$totalprice = $info['price'];
$res = MemberServiceOrderModel::create([
'type'=>2,
'uid'=>$this->user_id,
'ordernum'=>$ordernum,
'totalprice'=>$totalprice,
'status'=>1,
'create_time'=>time(),
'timeout_time'=>time()+600,
'service_title'=>$info['points_num'],
]);
if($res){
//微信小程序支付回调地址
$notify_url = 'https://' . $_SERVER['HTTP_HOST'] . url('api/wxpaynotify/index');
$config = [
// 必要配置
'app_id' => config('smallprogram_appid'),
'mch_id' => config('wxpay_mchid'),
'key' => config('wxpay_paykey'), // API v2 密钥 (注意: 是v2密钥 是v2密钥 是v2密钥)
// 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书)
'cert_path' => get_file_path(config('wxpay_appclient_cert')), // XXX: 绝对路径!!!!
'key_path' => get_file_path(config('wxpay_appclient_key')), // XXX: 绝对路径!!!!
'notify_url' => $notify_url, // 你也可以在下单时单独设置来覆盖它
];
$total_fee = $totalprice * 100;
$app = Factory::payment($config);
$jssdk = $app->jssdk;
if(empty($total_fee)){
$total_fee = 1;
}
//下单
$result = $app->order->unify([
'body' => 'DAZIQUN',
'out_trade_no' => $ordernum,
'total_fee' => $total_fee,
'spbill_create_ip' => '', // 可选如不传该参数SDK 将会自动获取相应 IP 地址
'notify_url' => $notify_url, // 支付结果通知网址,如果不设置则会使用配置里的默认地址
'trade_type' => 'JSAPI', // 请对应换成你的支付方式对应的值类型
'openid' => MemberModel::where(['id' => $this->user_id])->value('openid'),
]);
//组合参数
$pay = $jssdk->bridgeConfig($result['prepay_id'], false); // 返回数组
return json(['code' => 200, 'msg' => '微信支付信息','result'=>$pay]);
}else{
return json(['code' => 500, 'msg' => '服务器繁忙,请稍后再试']);
}
}
//VIP权益说明
public function getvipequity(){
$info = MemberVipModel::where('id',1)->find();
$strs = 'https://'.$_SERVER['HTTP_HOST'].'/uploads/';
$message = str_replace("/uploads/", $strs, $info['title']);
apiReturn('200', '查询成功',['message'=>$message]);
}
//获取VIP数据
public function getvip(){
$list = MemberVipModel::where('type',1)->field('id,title,price')->order('sort asc')->select()->toArray();
apiReturn('200', '查询成功',$list);
}
//用户购买vip
public function buyvip(){
//传参数据
$data_list = $this->params;
if(!isset($data_list['vipid']) || empty($data_list['vipid'])){
apiReturn('500', 'VIP id不能为空');
}
$vipid = intval($data_list['vipid']);
$info = MemberVipModel::where('id',$vipid)->find();
if(empty($info)){
apiReturn('500', '未查询到VIP数据');
}
//生成订单号
$numRes = true;
do{
$ordernum = 'O'.date('ymd').$this->user_id.rand(100,999);
$count = MemberServiceOrderModel::where(['ordernum'=>$ordernum])->count();
if(empty($count)) {
$numRes=false;
}
}while($numRes);
$totalprice = $info['price'];
$res = MemberServiceOrderModel::create([
'type'=>3,
'uid'=>$this->user_id,
'ordernum'=>$ordernum,
'totalprice'=>$totalprice,
'status'=>1,
'create_time'=>time(),
'timeout_time'=>time()+600,
'service_title'=>$info['title'],
'service_thumb'=>$info['id'],
]);
if($res){
//微信小程序支付回调地址
$notify_url = 'https://' . $_SERVER['HTTP_HOST'] . url('api/wxpaynotify/index');
$config = [
// 必要配置
'app_id' => config('smallprogram_appid'),
'mch_id' => config('wxpay_mchid'),
'key' => config('wxpay_paykey'), // API v2 密钥 (注意: 是v2密钥 是v2密钥 是v2密钥)
// 如需使用敏感接口(如退款、发送红包等)需要配置 API 证书路径(登录商户平台下载 API 证书)
'cert_path' => get_file_path(config('wxpay_appclient_cert')), // XXX: 绝对路径!!!!
'key_path' => get_file_path(config('wxpay_appclient_key')), // XXX: 绝对路径!!!!
'notify_url' => $notify_url, // 你也可以在下单时单独设置来覆盖它
];
$total_fee = $totalprice * 100;
$app = Factory::payment($config);
$jssdk = $app->jssdk;
if(empty($total_fee)){
$total_fee = 1;
}
//下单
$result = $app->order->unify([
'body' => 'DAZIQUN',
'out_trade_no' => $ordernum,
'total_fee' => $total_fee,
'spbill_create_ip' => '', // 可选如不传该参数SDK 将会自动获取相应 IP 地址
'notify_url' => $notify_url, // 支付结果通知网址,如果不设置则会使用配置里的默认地址
'trade_type' => 'JSAPI', // 请对应换成你的支付方式对应的值类型
'openid' => MemberModel::where(['id' => $this->user_id])->value('openid'),
]);
//组合参数
$pay = $jssdk->bridgeConfig($result['prepay_id'], false); // 返回数组
return json(['code' => 200, 'msg' => '微信支付信息','result'=>$pay]);
}else{
return json(['code' => 500, 'msg' => '服务器繁忙,请稍后再试']);
}
}
//获取提现数据
public function getwithdraw(){
$list = MemberWithdrawModel::field('id,points_num,vip_points_num,price')->order('sort asc')->select()->toArray();
apiReturn('200', '查询成功',$list);
}
//摇钱树
public function moneytree(){
//摇钱树等级
$treegrade = MoneyTreeModel::field('thumb,tree_grade,integral_num,share_num')->order('tree_grade asc')->select()->toArray();
if(!empty($treegrade)){
foreach ($treegrade as $k=>$v){
$treegrade[$k]['thumb'] = $this->getFileUrl($v['thumb']);
}
}
//摇钱树说明
$strs = 'https://'.$_SERVER['HTTP_HOST'].'/uploads/';
$message = MoneyTreeLogsModel::where('id',1)->value('message');
$message = str_replace("/uploads/", $strs, $message);
//用户金币信息
$goldcoin = MoneyTreeLogsModel::where(['uid'=>$this->user_id,'status'=>1])->find();
if(!empty($goldcoin)){
$goldcoin = ['id'=>$goldcoin['id'],'goldcoin_num'=>$goldcoin['integral_num']];
}else{
$goldcoin = [];
}
$invitation_num = MemberModel::where(['invitation_uid'=>$this->user_id,'is_delete'=>0])->count();
//根据用户分享人数,获得摇钱树等级
$tree_grade = MoneyTreeModel::gettreegrade($invitation_num);
apiReturn('200', '查询成功',[
'treegrade'=>$treegrade,
'goldcoin'=>$goldcoin,
'message'=>$message,
'tree_grade'=>$tree_grade,
'goldcoin_num' => MemberModel::where('id',$this->user_id)->value('moneytree_num'),
]);
}
//摇钱树 - 领取金币
public function addgoldcoin(){
//传参数据
$data_list = $this->params;
if(!isset($data_list['id']) || empty($data_list['id'])){
apiReturn('500', '金币id不能为空');
}
$id = intval($data_list['id']);
$goldcoin = MoneyTreeLogsModel::where(['id'=>$id,'uid'=>$this->user_id,'status'=>1])->find();
if(empty($goldcoin)){
apiReturn('500', '金币已领取或不存在');
}
$userinfo = MemberModel::where('id',$this->user_id)->find();
$moneytree_num = $userinfo['moneytree_num'] + $goldcoin['integral_num'];
$res = MemberModel::where('id',$this->user_id)->update(['moneytree_num'=>$moneytree_num]);
if($res){
$goldcoin->status = 2;
$goldcoin->save();
apiReturn('200', '领取成功');
}else{
apiReturn('500', '服务器繁忙,请稍后再试');
}
}
//小程序打开次数
public function addopennum(){
$userinfo = MemberModel::where('id',$this->user_id)->find();
$userinfo->xcxopen_num = $userinfo->xcxopen_num + 1;
$userinfo->save();
apiReturn('200', '操作成功');
}
//抽奖活动
public function raffle(){
//用户当前的剩余金币
$goldcoin_num = MemberModel::where('id',$this->user_id)->value('moneytree_num');
//奖品信息
$where = [];
$where[] = ['id','neq',9];
$award = AwardModel::where($where)->field('id,title,thumb')->order('sort asc')->select()->toArray();
if(!empty($award)){
foreach ($award as $k=>$v){
$award[$k]['thumb'] = $this->getFileUrl($v['thumb']);
}
}
//中奖信息
$awardmessage = AwardMessageModel::field('title')->order('create_time desc')->select()->toArray();
apiReturn('200', '查询成功',[
'goldcoin_num'=>$goldcoin_num,
'award'=>$award,
'awardmessage'=>$awardmessage
]);
}
//抽奖活动 - 立即抽奖
public function prizedraw(){
//用户当前的剩余金币
$userinfo = MemberModel::where('id',$this->user_id)->find();
$cjjb_num = AwardModel::where('id',9)->value('jp_number');
if($userinfo['moneytree_num']<$cjjb_num){
apiReturn('500', '抽奖失败,剩余金币不足');
}
//扣除用户金币
$userinfo->moneytree_num = $userinfo->moneytree_num - $cjjb_num;
$userinfo->save();
//给 5 6 7 8号奖品增加一次按钮点击累计次数
$where = [];
$where[] = ['id','in','5,6,7,8'];
AwardModel::where($where)->setInc('yj_number',1);
//按逻辑进行抽奖
$prizedraw_id = 1;
//奖品5
$jp5 = AwardModel::where('id',5)->find();
if($jp5['yj_number']>=$jp5['jp_number']){
$prizedraw_id = 5;
$jp5->yj_number = 0;
$jp5->save();
}
//奖品6
$jp6 = AwardModel::where('id',6)->find();
if($jp6['yj_number']>=$jp6['jp_number']){
$prizedraw_id = 6;
$jp6->yj_number = 0;
$jp6->save();
}
//奖品7
$jp7 = AwardModel::where('id',7)->find();
if($jp7['yj_number']>=$jp7['jp_number']){
$prizedraw_id = 7;
$jp7->yj_number = 0;
$jp7->save();
}
//奖品8
$jp8 = AwardModel::where('id',8)->find();
if($jp8['yj_number']>=$jp8['jp_number']){
$prizedraw_id = 8;
$jp8->yj_number = 0;
$jp8->save();
}
if($prizedraw_id==1){
$jp1 = AwardModel::where('id',1)->find();
$jp1_yj_number = $jp1->yj_number + 1;
if(($jp1['yj_number']+1)>=$jp1['jp_number']){
$jp1_yj_number = 0;
$prizedraw_array = [2,3,4];
shuffle($prizedraw_array);
$prizedraw_id = $prizedraw_array[0];
}
$jp1->yj_number = $jp1_yj_number;
$jp1->save();
}
//插入抽奖记录
$prizedraw_info = AwardModel::where('id',$prizedraw_id)->find();
$res = AwardWinningsModel::create([
'uid'=>$this->user_id,
'award_id'=>$prizedraw_id,
'award_title'=>$prizedraw_info['title'],
'award_thumb'=>$prizedraw_info['thumb'],
'usegoldcoin'=>$cjjb_num,
'create_time'=>time(),
'update_time'=>time(),
]);
if($res){
$prizedraw_info->open_num = $prizedraw_info->open_num+1;
$prizedraw_info->save();
apiReturn('200', '抽奖成功',['prizedraw_id'=>$prizedraw_id]);
}else{
apiReturn('500', '服务器繁忙,请稍后再试');
}
}
//抽奖活动 - 我的包
public function prizedrawlogs(){
$where = [];
$where[] = ['uid','eq',$this->user_id];
$where[] = ['award_id','neq',1];
$where[] = ['address','eq',null];
$list = AwardWinningsModel::where([$where])->field('id,award_title,award_thumb,create_time')->order('create_time asc')->select()->toArray();
if(!empty($list)){
foreach ($list as $k=>$v){
$list[$k]['award_thumb'] = $this->getFileUrl($v['award_thumb']);
$list[$k]['create_time'] = date('Y-m-d H:i',$v['create_time']);
}
}
apiReturn('200', '查询成功',$list);
}
//提交邮寄地址
public function addmailingaddress(){
//传参数据
$data_list = $this->params;
if (!isset($data_list['id']) || empty($data_list['id'])) {
return json(['code' => 500, 'msg' => 'id不能为空']);
}
if (!isset($data_list['name']) || empty($data_list['name'])) {
return json(['code' => 500, 'msg' => '姓名不能为空']);
}
if (!isset($data_list['phone']) || empty($data_list['phone'])) {
return json(['code' => 500, 'msg' => '联系电话不能为空']);
}
if (!isset($data_list['address']) || empty($data_list['address'])) {
return json(['code' => 500, 'msg' => '邮寄地址不能为空']);
}
$id = intval($data_list['id']);
$name = trim($data_list['name']);
$phone = trim($data_list['phone']);
$address = trim($data_list['address']);
if($this->illegalcharacters($phone) || $this->illegalcharacters($name) || $this->illegalcharacters($address)){
apiReturn('500', '非法参数');
}
$res = AwardWinningsModel::where(['id'=>$id,'uid'=>$this->user_id])->update([
'name'=>$name,
'phone'=>$phone,
'address'=>$address
]);
if ($res) {
apiReturn('200', '提交成功');
} else {
apiReturn('500', '服务器繁忙,请稍后再试');
}
}
//漂流瓶 - 捡一个
public function pickupdriftbottle(){
$driftbottle = Db::name('member_driftbottle')->orderRaw('rand()')->find();
if(!empty($driftbottle)){
$userinfo = MemberModel::where('id',$driftbottle['uid'])->find();
apiReturn('200', '捡到漂流瓶',[
'nickname'=>$userinfo['nickname'],
'headimg'=>$this->getFileUrl($userinfo['headimg']),
'message'=>$driftbottle['message'],
'create_time'=>date('Y-m-d H:i:s',$driftbottle['create_time']),
]);
}else{
apiReturn('500', '你的运气不好,没有捡到任何漂流瓶');
}
}
//漂流瓶 - 扔一个
public function throwdriftbottle(){
//传参数据
$data_list = $this->params;
if (!isset($data_list['message']) || empty($data_list['message'])) {
return json(['code' => 500, 'msg' => '漂流瓶内容不能为空']);
}
$message = trim($data_list['message']);
if($this->illegalcharacters($message)){
apiReturn('500', '非法参数');
}
$res = DriftBottleModel::create([
'uid'=>$this->user_id,
'message'=>$message,
'create_time'=>time(),
]);
if ($res) {
apiReturn('200', '提交成功');
} else {
apiReturn('500', '服务器繁忙,请稍后再试');
}
}
/**
* 写真
* @param $groupid 群id
* @author loomis<2477365162@qq.com>
*/
public function portraitphotography(){
$info = MemberServiceModel::where(['id'=>12])->find();
if(empty($info)){
apiReturn('500', '未查询到相关写真信息');
}
$type=1;
$box_url = '';
$box_psw = '';
if(!empty(MemberServiceOrderModel::where(['service_id'=>12,'uid'=>$this->user_id,'status'=>2])->count())){
$type = 2;
$box_url = $info['box_url'];
$box_psw = $info['box_psw'];
}
$strs = 'https://'.$_SERVER['HTTP_HOST'].'/uploads/';
$message = str_replace("/uploads/", $strs, $info['message']);
$info->browse = $info->browse+1;
$info->save();
apiReturn('200', '查询成功',[
'id'=>12,
'type'=>$type,
'box_url'=>$box_url,
'box_psw'=>$box_psw,
'title'=>$info['title'],
'thumb'=>$this->getFileUrl($info['thumb']),
'create_time'=>date('Y-m-d H:i:s',$info['create_time']),
'summary'=>$info['summary'],
'message'=>$message,
]);
}
}