356 lines
11 KiB
PHP
356 lines
11 KiB
PHP
|
<?php
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | likeshop开源商城系统
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
|
|||
|
// | gitee下载:https://gitee.com/likeshop_gitee
|
|||
|
// | github下载:https://github.com/likeshop-github
|
|||
|
// | 访问官网:https://www.likeshop.cn
|
|||
|
// | 访问社区:https://home.likeshop.cn
|
|||
|
// | 访问手册:http://doc.likeshop.cn
|
|||
|
// | 微信公众号:likeshop技术社区
|
|||
|
// | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用,未经许可不能去除前后端官方版权标识
|
|||
|
// | likeshop系列产品收费版本务必购买商业授权,购买去版权授权后,方可去除前后端官方版权标识
|
|||
|
// | 禁止对系统程序代码以任何目的,任何形式的再发布
|
|||
|
// | likeshop团队版权所有并拥有最终解释权
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | author: likeshop.cn.team
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
namespace app\api\controller;
|
|||
|
|
|||
|
use app\api\logic\UserLogic;
|
|||
|
use think\Db;
|
|||
|
use app\common\server\UrlServer;
|
|||
|
use app\api\logic\SmsLogic;
|
|||
|
use app\common\logic\SmsLogic as CommonSmsLogic;
|
|||
|
|
|||
|
class User extends ApiBase{
|
|||
|
|
|||
|
/**
|
|||
|
* Notes:个人中心接口
|
|||
|
* @author: 2021/3/10 10:13
|
|||
|
*/
|
|||
|
public function center(){
|
|||
|
$info = UserLogic::center($this->user_id);
|
|||
|
$this->_success('获取成功',$info);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Notes:用户信息
|
|||
|
* @author: 2021/3/10 10:13
|
|||
|
*/
|
|||
|
public function info()
|
|||
|
{
|
|||
|
$this->_success('获取成功', UserLogic::getUserInfo($this->user_id));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Notes:设置用户手机号码
|
|||
|
* @author: 2021/3/10 10:13
|
|||
|
*/
|
|||
|
public function setInfo()
|
|||
|
{
|
|||
|
$data = $this->request->post();
|
|||
|
$check = $this->validate($data, 'app\api\validate\UpdateUser.set');
|
|||
|
if (true !== $check) {
|
|||
|
$this->_error($check);
|
|||
|
}
|
|||
|
UserLogic::setUserInfo($this->user_id, $data);
|
|||
|
$this->_success('操作成功');
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Notes:账户流水
|
|||
|
* @author: 2021/3/10 10:13
|
|||
|
*/
|
|||
|
public function accountLog(){
|
|||
|
$source = $this->request->get('source');
|
|||
|
$type = $this->request->get('type',0);
|
|||
|
$list = [];
|
|||
|
if($source){
|
|||
|
$list = UserLogic::accountLog($this->user_id, $source,$type, $this->page_no, $this->page_size);
|
|||
|
}
|
|||
|
$this->_success('获取成功',$list);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//更换手机号
|
|||
|
public function changeMobile()
|
|||
|
{
|
|||
|
$data = $this->request->post();
|
|||
|
//默认绑定手机号码
|
|||
|
$data['message_key'] = 'BDSJHM';
|
|||
|
$data['client'] = $this->client;
|
|||
|
$validate = 'app\api\validate\ChangeMobile.binding';
|
|||
|
//更换手机号码、替换短信key、验证规则
|
|||
|
if(isset($data['action']) && 'change' == $data['action']){
|
|||
|
$data['message_key'] = 'BGSJHM';
|
|||
|
$validate = 'app\api\validate\ChangeMobile';
|
|||
|
}
|
|||
|
$data['user_id'] = $this->user_id;
|
|||
|
$check = $this->validate($data, $validate);
|
|||
|
if (true !== $check) {
|
|||
|
$this->_error($check);
|
|||
|
}
|
|||
|
$res = UserLogic::changeMobile($this->user_id, $data);
|
|||
|
if($res){
|
|||
|
$this->_success('操作成功');
|
|||
|
}
|
|||
|
$this->_error('操作失败');
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//获取微信手机号
|
|||
|
public function getMobile()
|
|||
|
{
|
|||
|
$post = $this->request->post();
|
|||
|
$check = $this->validate($post, 'app\api\validate\WechatMobile');
|
|||
|
if (true !== $check) {
|
|||
|
$this->_error($check);
|
|||
|
}
|
|||
|
return UserLogic::getMobileByMnp($post);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//我的粉丝
|
|||
|
public function fans()
|
|||
|
{
|
|||
|
$get = $this->request->get();
|
|||
|
$page = $this->request->get('page_no', $this->page_no);
|
|||
|
$size = $this->request->get('page_size', $this->page_size);
|
|||
|
$this->_success('', UserLogic::fans($this->user_id, $get, $page, $size));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* note 我的钱包
|
|||
|
* create_time 2020/11/27 16:58
|
|||
|
*/
|
|||
|
public function myWallet(){
|
|||
|
$info = UserLogic::myWallet($this->user_id);
|
|||
|
$this->_success('获取成功',$info);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Notes: 我的拼团
|
|||
|
* @author 张无忌(2021/1/14 18:43)
|
|||
|
*/
|
|||
|
public function myTeam()
|
|||
|
{
|
|||
|
$page = $this->request->get('page_no', $this->page_no);
|
|||
|
$size = $this->request->get('page_size', $this->page_size);
|
|||
|
$status = $this->request->get('status', -1);
|
|||
|
$info = UserLogic::myTeam($this->user_id, $status, $page, $size);
|
|||
|
$this->_success('获取成功',$info);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Notes: 更新微信的用户信息
|
|||
|
* @author 段誉(2021/4/7 15:28)
|
|||
|
*/
|
|||
|
public function setWechatInfo()
|
|||
|
{
|
|||
|
$data = $this->request->post();
|
|||
|
$check = $this->validate($data, 'app\api\validate\SetWechatUser');
|
|||
|
if (true !== $check) {
|
|||
|
$this->_error($check);
|
|||
|
}
|
|||
|
$res = UserLogic::updateWechatInfo($this->user_id, $data);
|
|||
|
if (true === $res) {
|
|||
|
$this->_success('操作成功');
|
|||
|
}
|
|||
|
$this->_error('操作失败');
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 设置支付密码
|
|||
|
*/
|
|||
|
public function setPayPassword()
|
|||
|
{
|
|||
|
if($this->request->isPost()) {
|
|||
|
$data = $this->request->post();
|
|||
|
$result = $this->validate($data,'app\api\validate\User.setPayPassword');
|
|||
|
if(true !== $result){
|
|||
|
$this->_error($result);
|
|||
|
}
|
|||
|
$data['user_id'] = $this->user_id;
|
|||
|
$data['pay_password'] = md5(trim($data['pay_password']));
|
|||
|
$result = UserLogic::setPassword($data);
|
|||
|
if($result) {
|
|||
|
$this->_success('设置支付密码成功');
|
|||
|
}else{
|
|||
|
$this->_error('设置支付密码失败');
|
|||
|
}
|
|||
|
}else{
|
|||
|
$this->_error('请求类型错误');
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 会员转账
|
|||
|
*/
|
|||
|
public function transfer()
|
|||
|
{
|
|||
|
$data = $this->request->post();
|
|||
|
$result = $this->validate($data,'app\api\validate\User.transfer');
|
|||
|
if(true !== $result){
|
|||
|
$this->_error($result);
|
|||
|
}
|
|||
|
$data['user_id'] = $this->user_id;
|
|||
|
$result = UserLogic::transfer($data);
|
|||
|
if($result['code']) {
|
|||
|
$this->_success($result['msg']);
|
|||
|
}else{
|
|||
|
$this->_error($result['msg']);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 判断会员是否有设置支付密码
|
|||
|
*/
|
|||
|
public function hasPayPassword()
|
|||
|
{
|
|||
|
$payPassword = Db::name('user')->where('id', $this->user_id)->value('pay_password');
|
|||
|
if($payPassword) {
|
|||
|
$this->_success('已设置支付密码');
|
|||
|
}else{
|
|||
|
// 应前端要求,未设置密码show返回0
|
|||
|
$this->_error('未设置支付密码', [], 0, 0);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 转账记录
|
|||
|
*/
|
|||
|
public function transferRecord()
|
|||
|
{
|
|||
|
$get = $this->request->get();
|
|||
|
$get['page_no'] = $get['page_no'] ?? $this->page_no;
|
|||
|
$get['page_size'] = $get['page_size'] ?? $this->page_size;
|
|||
|
$get['user_id'] = $this->user_id;
|
|||
|
$get['type'] = $get['type'] ?? 'all';
|
|||
|
$result = UserLogic::transferRecord($get);
|
|||
|
$this->_success('', $result);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 最近转账(取最近3条)
|
|||
|
*/
|
|||
|
public function transferRecent()
|
|||
|
{
|
|||
|
$list = Db::name('user_transfer')->alias('ut')
|
|||
|
->distinct(true)
|
|||
|
->field('u.sn, u.nickname, u.avatar')
|
|||
|
->leftJoin('user u', 'u.id=ut.transfer_to_id')
|
|||
|
->where('ut.transfer_from_id', $this->user_id)
|
|||
|
->order('ut.create_time', 'desc')
|
|||
|
->limit(3)
|
|||
|
->select();
|
|||
|
foreach($list as &$item) {
|
|||
|
$item['avatar'] = UrlServer::getFileUrl($item['avatar']);
|
|||
|
}
|
|||
|
return $this->_success('', $list);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 收款会员信息
|
|||
|
*/
|
|||
|
public function transferToInfo()
|
|||
|
{
|
|||
|
$transferTo = $this->request->get('transferTo', '', 'trim');
|
|||
|
if(!$transferTo) {
|
|||
|
return $this->_error('收款会员信息不能为空');
|
|||
|
}
|
|||
|
$user = Db::name('user')->field('sn,nickname,avatar')->where('sn', $transferTo)->find();
|
|||
|
if(!$user) {
|
|||
|
$user = Db::name('user')->field('sn,nickname,avatar')->where('mobile', $transferTo)->find();
|
|||
|
if(!$user){
|
|||
|
return $this->_error('收款会员不存在');
|
|||
|
}
|
|||
|
}
|
|||
|
$user['avatar'] = UrlServer::getFileUrl($user['avatar']);
|
|||
|
return $this->_success('', $user);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 修改支付密码
|
|||
|
*/
|
|||
|
public function changePayPassword()
|
|||
|
{
|
|||
|
$post = $this->request->post();
|
|||
|
if(empty($post['origin_pay_password'])) {
|
|||
|
return $this->_error('原支付密码不能为空');
|
|||
|
}
|
|||
|
if(empty($post['new_pay_password'])) {
|
|||
|
return $this->_error('新支付密码不能为空');
|
|||
|
}
|
|||
|
$user = Db::name('user')->where('id', $this->user_id)->find();
|
|||
|
if(md5(trim($post['origin_pay_password'])) != $user['pay_password']) {
|
|||
|
return $this->_error('原支付密码错误');
|
|||
|
}
|
|||
|
$result = Db::name('user')->where('id', $this->user_id)->update([
|
|||
|
'pay_password' => md5(trim($post['new_pay_password'])),
|
|||
|
'update_time' => time()
|
|||
|
]);
|
|||
|
if($result) {
|
|||
|
return $this->_success('修改成功');
|
|||
|
}else{
|
|||
|
return $this->_error('修改失败');
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 找回密码获取验证码
|
|||
|
*/
|
|||
|
public function send(){
|
|||
|
$mobile = $this->request->post('mobile');
|
|||
|
$key = 'ZHZFMM'; // 找回支付密码
|
|||
|
$result = $this->validate(['mobile'=>$mobile,'key'=>$key],'app\api\validate\SmsSend');
|
|||
|
if($result !== true){
|
|||
|
$this->_error($result);
|
|||
|
}
|
|||
|
$send_result = SmsLogic::send($mobile,$key);
|
|||
|
if($send_result !== true){
|
|||
|
$this->_error($send_result);
|
|||
|
}
|
|||
|
$this->_success('发送成功');
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 找回支付密码
|
|||
|
*/
|
|||
|
public function retrievePayPassword()
|
|||
|
{
|
|||
|
$post = $this->request->post();
|
|||
|
if(empty($post['mobile'])) {
|
|||
|
return $this->_error('手机号码不能为空');
|
|||
|
}
|
|||
|
if(empty($post['code'])) {
|
|||
|
return $this->_error('验证码不能为空');
|
|||
|
}
|
|||
|
if(empty($post['new_pay_password'])) {
|
|||
|
return $this->_error('新支付密码不能为空');
|
|||
|
}
|
|||
|
|
|||
|
$sms_logic = new CommonSmsLogic('ZHZFMM',$post['mobile'],$post['code']);
|
|||
|
$check = $sms_logic->checkCode();
|
|||
|
//检查验证码是否正确
|
|||
|
if($check !== true){
|
|||
|
return $this->_error('验证码错误');
|
|||
|
}
|
|||
|
//标记验证码已验证
|
|||
|
$sms_logic->cancelCode();
|
|||
|
// 设置新的支付密码
|
|||
|
$result = Db::name('user')->where('id', $this->user_id)->update([
|
|||
|
'update_time' => time(),
|
|||
|
'pay_password' => md5(trim($post['new_pay_password']))
|
|||
|
]);
|
|||
|
if($result) {
|
|||
|
return $this->_success('设置成功');
|
|||
|
}else{
|
|||
|
return $this->_error('设置失败');
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|