1002 lines
36 KiB
PHP
1002 lines
36 KiB
PHP
<?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,
|
||
]);
|
||
}
|
||
}
|