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.
812 lines
29 KiB
812 lines
29 KiB
<?php
|
|
|
|
// +----------------------------------------------------------------------
|
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
|
// +----------------------------------------------------------------------
|
|
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
|
|
// +----------------------------------------------------------------------
|
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
|
// +----------------------------------------------------------------------
|
|
// | Author: CRMEB Team <admin@crmeb.com>
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
|
namespace app\controller\api\user;
|
|
|
|
|
|
use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\AddShortUrlResponseBody\data;
|
|
use app\common\repositories\store\IntegralRepository;
|
|
use app\common\repositories\store\service\StoreServiceRepository;
|
|
use app\common\repositories\system\CacheRepository;
|
|
use app\common\repositories\user\MemberinterestsRepository;
|
|
use app\common\repositories\user\UserBillRepository;
|
|
use app\common\repositories\user\UserBrokerageRepository;
|
|
use app\common\model\user\ValueContributionLog;
|
|
use app\common\model\user\UserPre;
|
|
use app\common\model\store\product\Product;
|
|
use app\common\model\user\CashLog;
|
|
use app\common\repositories\user\UserRepository;
|
|
use app\common\repositories\user\UserVisitRepository;
|
|
use app\validate\api\UserBaseInfoValidate;
|
|
use crmeb\basic\BaseController;
|
|
use app\common\model\user\User as userModel;
|
|
use crmeb\services\MiniProgramService;
|
|
use crmeb\services\SmsService;
|
|
use think\App;
|
|
use think\db\exception\DataNotFoundException;
|
|
use think\db\exception\DbException;
|
|
use think\db\exception\ModelNotFoundException;
|
|
|
|
class User extends BaseController
|
|
{
|
|
protected $repository;
|
|
protected $user;
|
|
public $brand_integral;
|
|
|
|
public function __construct(App $app, UserRepository $repository)
|
|
{
|
|
$this->brand_integral = 100;
|
|
|
|
parent::__construct($app);
|
|
$this->repository = $repository;
|
|
$this->user = $this->request->userInfo();
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
* @author xaboy
|
|
* @day 2020/6/22
|
|
*/
|
|
public function spread_image()
|
|
{
|
|
$type = $this->request->param('type');
|
|
$res = $type == 'routine'
|
|
? $this->repository->routineSpreadImage($this->user)
|
|
: $this->repository->wxSpreadImage($this->user);
|
|
return app('json')->success($res);
|
|
}
|
|
|
|
public function spread_image_v2()
|
|
{
|
|
$type = $this->request->param('type');
|
|
$user = $this->user;
|
|
$siteName = systemConfig('site_name');
|
|
$qrcode = $type == 'routine'
|
|
? $this->repository->mpQrcode($user)
|
|
: $this->repository->wxQrcode($user);
|
|
$poster = systemGroupData('spread_banner');
|
|
$nickname = $user['nickname'];
|
|
$mark = '邀请您加入' . $siteName;
|
|
return app('json')->success(compact('qrcode', 'poster', 'nickname', 'mark'));
|
|
}
|
|
|
|
public function spread_info()
|
|
{
|
|
$user = $this->user;
|
|
$make = app()->make(UserBrokerageRepository::class);
|
|
$user->append(['one_level_count', 'lock_brokerage', 'two_level_count', 'spread_total', 'yesterday_brokerage', 'total_extract', 'total_brokerage', 'total_brokerage_price']);
|
|
$show_brokerage = (bool)$make->search(['type' => 0])->count();
|
|
$data = [
|
|
'total_brokerage_price' => $user->total_brokerage_price,
|
|
'lock_brokerage' => $user->lock_brokerage,
|
|
'one_level_count' => $user->one_level_count,
|
|
'two_level_count' => $user->two_level_count,
|
|
'spread_total' => $user->spread_total,
|
|
'yesterday_brokerage' => $user->yesterday_brokerage,
|
|
'total_extract' => $user->total_extract,
|
|
'total_brokerage' => $user->total_brokerage,
|
|
'brokerage_price' => $user->brokerage_price,
|
|
'show_brokerage' => $show_brokerage,
|
|
'brokerage' => $show_brokerage ? ($user->brokerage ?: ['brokerage_level' => 0, 'brokerage_name' => '普通分销员']) : null,
|
|
'now_money' => $user->now_money,
|
|
'broken_day' => (int)systemConfig('lock_brokerage_timer'),
|
|
'user_extract_min' => (int)systemConfig('user_extract_min'),
|
|
];
|
|
return app('json')->success($data);
|
|
}
|
|
|
|
public function brokerage_all()
|
|
{
|
|
return app('json')->success(app()->make(UserBrokerageRepository::class)->all(0));
|
|
}
|
|
|
|
public function brokerage_info()
|
|
{
|
|
$make = app()->make(UserBrokerageRepository::class);
|
|
|
|
$user = $this->user;
|
|
$brokerage = $user->brokerage;
|
|
$next_brokerage = $make->getNextLevel($user->brokerage_level) ?: $brokerage;
|
|
$brokerage_rate = null;
|
|
if ($next_brokerage || $brokerage) {
|
|
$brokerage_rate = $make->getLevelRate($user, $next_brokerage);
|
|
}
|
|
$down_brokerage = null;
|
|
if ($next_brokerage) {
|
|
$down_brokerage = $make->getNextLevel($next_brokerage->brokerage_level);
|
|
}
|
|
$brokerage = $brokerage ?: ['brokerage_level' => 0, 'brokerage_name' => '普通分销员'];
|
|
return app('json')->success(compact('brokerage', 'next_brokerage', 'brokerage_rate', 'down_brokerage'));
|
|
}
|
|
|
|
public function brokerage_notice()
|
|
{
|
|
$user = $this->user;
|
|
if (!$user->brokerage_level) {
|
|
return app('json')->fail('无需通知');
|
|
}
|
|
$make = app()->make(CacheRepository::class);
|
|
$key = 'notice_' . $user->uid . '_' . $user->brokerage_level;
|
|
if ($make->getResult($key)) {
|
|
return app('json')->fail('已通知');
|
|
}
|
|
$make->create(['key' => $key, 'result' => 1, 'expire_time' => 0]);
|
|
$userBrokerageRepository = app()->make(UserBrokerageRepository::class);
|
|
return app('json')->success(['type' => $userBrokerageRepository->getNextLevel($user->brokerage_level) ? 'level' : 'top']);
|
|
}
|
|
|
|
/**
|
|
* @param UserBillRepository $billRepository
|
|
* @return mixed
|
|
* @author xaboy
|
|
* @day 2020/6/22
|
|
*/
|
|
public function bill(UserBillRepository $billRepository)
|
|
{
|
|
[$page, $limit] = $this->getPage();
|
|
return app('json')->success($billRepository->userList([
|
|
'now_money' => $this->request->param('type', 0),
|
|
'status' => 1,
|
|
], $this->request->uid(), $page, $limit));
|
|
}
|
|
|
|
/**
|
|
* @param UserBillRepository $billRepository
|
|
* @return mixed
|
|
* @author xaboy
|
|
* @day 2020/6/22
|
|
*/
|
|
public function brokerage_list(UserBillRepository $billRepository)
|
|
{
|
|
[$page, $limit] = $this->getPage();
|
|
return app('json')->success($billRepository->userList([
|
|
'category' => 'brokerage',
|
|
], $this->request->uid(), $page, $limit));
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
* @throws DataNotFoundException
|
|
* @throws DbException
|
|
* @throws ModelNotFoundException
|
|
* @author xaboy
|
|
* @day 2020/6/22
|
|
*/
|
|
public function spread_order()
|
|
{
|
|
[$page, $limit] = $this->getPage();
|
|
return app('json')->success($this->repository->subOrder($this->request->uid(), $page, $limit));
|
|
}
|
|
|
|
/**
|
|
* TODO
|
|
* @return mixed
|
|
* @author Qinii
|
|
* @day 2020-06-18
|
|
*/
|
|
public function binding()
|
|
{
|
|
$data = $this->request->params(['phone', 'sms_code']);
|
|
$sms_code = app()->make(SmsService::class)->checkSmsCode($data['phone'], $data['sms_code'], 'binding');
|
|
if (!$data['sms_code'] || !$sms_code)
|
|
return app('json')->fail('验证码不正确');
|
|
$user = $this->repository->accountByUser($data['phone']);
|
|
if ($user) {
|
|
if (systemConfig('is_phone_login') === '1') {
|
|
return app('json')->fail('手机号已被绑定');
|
|
}
|
|
$data = ['phone' => $data['phone']];
|
|
} else {
|
|
$data = ['account' => $data['phone'], 'phone' => $data['phone']];
|
|
}
|
|
$this->repository->update($this->request->uid(), $data);
|
|
return app('json')->success('绑定成功');
|
|
}
|
|
|
|
/**
|
|
* TODO 小程序获取手机号绑定
|
|
* @author Qinii
|
|
* @day 10/11/21
|
|
*/
|
|
public function mpPhone()
|
|
{
|
|
$code = $this->request->param('code');
|
|
$iv = $this->request->param('iv');
|
|
$encryptedData = $this->request->param('encryptedData');
|
|
$miniProgramService = MiniProgramService::create();
|
|
$userInfoCong = $miniProgramService->getUserInfo($code);
|
|
$session_key = $userInfoCong['session_key'];
|
|
|
|
$data = $miniProgramService->encryptor($session_key, $iv, $encryptedData);
|
|
|
|
$user = $this->repository->accountByUser($data['purePhoneNumber']);
|
|
if ($user) {
|
|
$data = ['phone' => $data['purePhoneNumber']];
|
|
} else {
|
|
$data = ['account' => $data['purePhoneNumber'], 'phone' => $data['purePhoneNumber']];
|
|
}
|
|
$this->repository->update($this->request->uid(), $data);
|
|
return app('json')->success('绑定成功');
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
* @throws DataNotFoundException
|
|
* @throws DbException
|
|
* @throws ModelNotFoundException
|
|
* @author xaboy
|
|
* @day 2020/6/22
|
|
*/
|
|
public function spread_list()
|
|
{
|
|
[$level, $sort, $nickname] = $this->request->params(['level', 'sort', 'keyword'], true);
|
|
$uid = $this->request->uid();
|
|
[$page, $limit] = $this->getPage();
|
|
return app('json')->success($level == 2
|
|
? $this->repository->getTwoLevelList($uid, $nickname, $sort, $page, $limit)
|
|
: $this->repository->getOneLevelList($uid, $nickname, $sort, $page, $limit));
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
* @author xaboy
|
|
* @day 2020/6/22
|
|
*/
|
|
public function spread_top()
|
|
{
|
|
[$page, $limit] = $this->getPage();
|
|
$type = $this->request->param('type', 0);
|
|
$func = $type == 1 ? 'spreadMonthTop' : 'spreadWeekTop';
|
|
$data = $this->repository->{$func}($page, $limit);
|
|
return app('json')->success($data);
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
* @author xaboy
|
|
* @day 2020/6/22
|
|
*/
|
|
public function brokerage_top()
|
|
{
|
|
[$page, $limit] = $this->getPage();
|
|
$type = $this->request->param('type', 'week');
|
|
$uid = $this->request->uid();
|
|
$func = $type == 'month' ? 'brokerageMonthTop' : 'brokerageWeekTop';
|
|
$data = $this->repository->{$func}($uid, $page, $limit);
|
|
return app('json')->success($data);
|
|
}
|
|
|
|
public function history(UserVisitRepository $repository)
|
|
{
|
|
$uid = $this->request->uid();
|
|
[$page, $limit] = $this->getPage();
|
|
return app('json')->success($repository->getHistory($uid, $page, $limit));
|
|
}
|
|
|
|
public function deleteHistory($id, UserVisitRepository $repository)
|
|
{
|
|
$uid = $this->request->uid();
|
|
|
|
if (!$repository->getWhereCount(['user_visit_id' => $id, 'uid' => $uid]))
|
|
return app('json')->fail('数据不存在');
|
|
$repository->delete($id);
|
|
return app('json')->success('删除成功');
|
|
}
|
|
|
|
public function deleteHistoryBatch(UserVisitRepository $repository)
|
|
{
|
|
$uid = $this->request->uid();
|
|
$data = $this->request->param('ids');
|
|
if (!empty($data) && is_array($data)) {
|
|
foreach ($data as $id) {
|
|
if (!$repository->getWhereCount(['user_visit_id' => $id, 'uid' => $uid]))
|
|
return app('json')->fail('数据不存在');
|
|
}
|
|
$repository->batchDelete($data, null);
|
|
}
|
|
if ($data == 1)
|
|
$repository->batchDelete(null, $uid);
|
|
|
|
return app('json')->success('删除成功');
|
|
}
|
|
|
|
public function account()
|
|
{
|
|
|
|
$user = $this->user;
|
|
if (!$user->phone) return app('json')->fail('请绑定手机号');
|
|
|
|
return app('json')->success($this->repository->selfUserList($user->phone));
|
|
}
|
|
|
|
public function getCheck()
|
|
{
|
|
|
|
$user = $this->user;
|
|
$data['card'] = $user->card ?? '';
|
|
$data['age'] = $user->age ?? '';
|
|
$data['spread_uid'] = $user->spread_uid ?? '';
|
|
$data['real_name'] = $user->real_name ?? '';
|
|
$data['spread_uid2'] = $user->spread_uid2 ?? '';
|
|
|
|
$b = '';
|
|
if(!empty($data['spread_uid'])){
|
|
$a = userModel::getDB()->where('uid',$data['spread_uid'])->find();
|
|
$b = $a->phone;
|
|
}
|
|
$data['spread_phone'] = $b ?? '';
|
|
if(!empty($data['spread_uid2'])){
|
|
$c = userModel::getDB()->where('uid',$data['spread_uid2'])->find();
|
|
$d = $c->phone;
|
|
}
|
|
$data['spread_phone2'] = $d ?? '';
|
|
|
|
return app('json')->success($data);
|
|
}
|
|
|
|
public function update()
|
|
{
|
|
$age = $this->request->param('age') ?? '';
|
|
$card = $this->request->param('card') ?? '';
|
|
$spread_phone = $this->request->param('spread_phone') ?? '';
|
|
$real_name = $this->request->param('real_name') ?? '';
|
|
$spread_phone2 = $this->request->param('spread_phone2') ?? '';
|
|
|
|
$user = userModel::getDB()->where('uid',$this->user->uid)->find();
|
|
if(!empty($age)){
|
|
$user->age = $age;
|
|
}
|
|
|
|
if(!empty($card)){
|
|
$user->card = $card;
|
|
}
|
|
|
|
if(!empty($real_name)){
|
|
$user->real_name = $real_name;
|
|
}
|
|
|
|
|
|
if(!empty($spread_phone)){
|
|
$a = userModel::getDB()->where('phone',$spread_phone)->find();
|
|
if(!$a){
|
|
return app('json')->fail('查无此辅导员');
|
|
}
|
|
if($this->user->uid == $a->uid){
|
|
return app('json')->fail('辅导员不能是自己');
|
|
}
|
|
$user->spread_uid = $a->uid;
|
|
}
|
|
if(!empty($spread_phone2)){
|
|
$b = userModel::getDB()->where('phone',$spread_phone2)->find();
|
|
if(!$b){
|
|
return app('json')->fail('查无此推荐人');
|
|
}
|
|
if($this->user->uid == $b->uid){
|
|
return app('json')->fail('推荐人不能是自己');
|
|
}
|
|
$user->spread_uid2 = $b->uid;
|
|
}
|
|
|
|
$user->save();
|
|
return app('json')->success('更新成功');
|
|
}
|
|
|
|
//wmc
|
|
//分享视频/推文增加品宣积分
|
|
public function brand()
|
|
{
|
|
$type = $this->request->param('type');
|
|
$shareId = $this->request->param('shareId') ?? 0;
|
|
$start = date('Y-m-d') . ' 00:00:00';
|
|
$end = date('Y-m-d') . ' 23:59:59';
|
|
|
|
if($shareId > 0) {
|
|
//加100分
|
|
$userModel = userModel::getDB()->where('uid',$shareId)->find();
|
|
if ($userModel) {
|
|
$userModel->brand_integral += $this->brand_integral;
|
|
$userModel->save();
|
|
if ($type == 2) {
|
|
$memo = '分享视频获得' . $this->brand_integral . '品宣积分';
|
|
}
|
|
if ($type == 3) {
|
|
$memo = '分享推文获得' . $this->brand_integral . '品宣积分';
|
|
}
|
|
//加到log日志
|
|
ValueContributionLog::getDB()->insert([
|
|
'type' => $type,
|
|
'types_of' => 1,
|
|
'num' => $this->brand_integral,
|
|
'ctime' => date('Y-m-d H:i:s'),
|
|
'memo' => $memo ?? 0,
|
|
'user_id' => $shareId,
|
|
]);
|
|
}
|
|
} else {
|
|
//用户每天同type只能邀请10个人 多了就不加了
|
|
$count = ValueContributionLog::getDB()
|
|
->where('type', $type)
|
|
->where('user_id', $this->user->uid)
|
|
->where('ctime', '>=', $start)
|
|
->where('ctime', '<=', $end)
|
|
->count();
|
|
|
|
if (!empty($count) && $count > 10) {
|
|
return app('json')->fail('达到上限');
|
|
}
|
|
}
|
|
|
|
|
|
return app('json')->success('分享成功');
|
|
}
|
|
|
|
public function preSuply()
|
|
{
|
|
$produceid = $this->request->param('id');
|
|
$num = $this->request->param('num');
|
|
$merid = Product::getDB()->where('product_id', $produceid)->find()->mer_id;
|
|
|
|
UserPre::getDB()->insert([
|
|
'uid' => $this->user->uid,
|
|
'num' => $num,
|
|
'mer_id' => $merid,
|
|
'ctime' => date('Y-m-d H:i:s'),
|
|
]);
|
|
return app('json')->success('成功');
|
|
}
|
|
|
|
//获取用户积分/贡献值明细变动
|
|
public function getBrandList()
|
|
{
|
|
$type = $this->request->param('type');
|
|
|
|
$query = ValueContributionLog::getDB()
|
|
->where('user_id', $this->user->uid);
|
|
if (!empty($type)) {
|
|
$query->where('type', $type);
|
|
}
|
|
|
|
$list = $query->page((int)$this->request->param('page'), $this->request->param('limit'))->select()->toArray();
|
|
|
|
$user = userModel::getDB()->where('uid', $this->user->uid)->find();
|
|
|
|
$list['user']['hp_value'] = $user->hp_value;
|
|
$list['user']['all_value'] = $user->all_value;
|
|
$list['user']['brokerage_price'] = $user->brokerage_price;
|
|
$all = systemConfig('all_award');
|
|
//当前平台增值积分总个数
|
|
$allBrandValue = userModel::getDB()->where('status', 1)->sum('brokerage_price') ?? 1;
|
|
|
|
//增值积分实时价格=当前平台奖池总奖金/当前平台增值积分总个数
|
|
if(!empty($all) && !empty($allBrandValue)){
|
|
$shishi = bcdiv($all,$allBrandValue,2);
|
|
}else{
|
|
$shishi = 0;
|
|
}
|
|
|
|
//平台增值积分实时价格
|
|
$list['user']['proportion'] = $shishi;
|
|
|
|
|
|
return app('json')->success($list);
|
|
|
|
|
|
}
|
|
|
|
//获取付款配置
|
|
public function getPayConfig()
|
|
{
|
|
$data['pay_type'] = systemConfig('pay_type');
|
|
$data['pay_image'] = systemConfig('pay_image');
|
|
return app('json')->success($data);
|
|
|
|
}
|
|
|
|
//提现申请
|
|
public function cashWithdrawal()
|
|
{
|
|
$price = (float)$this->request->param('price');
|
|
|
|
//判断用户有无这么多贡献值
|
|
$user = userModel::getDB()
|
|
->where('uid', $this->user->uid)
|
|
->find();
|
|
|
|
if (bccomp($user->all_value, $price) == -1) {
|
|
return app('json')->fail('余额不够提现');
|
|
}
|
|
//扣钱
|
|
$user->all_value -= $price;
|
|
$user->save();
|
|
|
|
//加到log日志
|
|
CashLog::getDB()->insert([
|
|
'status' => 0,
|
|
'image' => $this->request->param('image'),
|
|
'price' => $price,
|
|
'ctime' => date('Y-m-d H:i:s'),
|
|
'memo' => '发起提现申请' . $price . '贡献值',
|
|
'user_id' => $this->user->uid,
|
|
]);
|
|
|
|
return app('json')->success('申请成功');
|
|
}
|
|
|
|
|
|
//获取提现记录
|
|
public function cashLog()
|
|
{
|
|
$list = CashLog::getDB()
|
|
->where('user_id', $this->user->uid)
|
|
->page((int)$this->request->param('page'), $this->request->param('limit'))->select();
|
|
return app('json')->success($list);
|
|
|
|
}
|
|
|
|
//获取提现记录
|
|
public function getAreaList()
|
|
{
|
|
$type = ',' . $this->request->param('type') . ',';
|
|
|
|
$info = Product::getDB()->alias('a')
|
|
->leftJoin('StoreSpu b', 'a.product_id = b.product_id')
|
|
->field('a.*,b.mer_labels')
|
|
->where('b.is_del', 0)
|
|
->where('a.is_del', 0)
|
|
->where('a.is_show', 1)
|
|
->where('a.status', 1)
|
|
->where('a.is_used', 1)
|
|
->where('b.mer_labels', $type);
|
|
|
|
if (!empty($this->request->param('priceSort'))) {
|
|
if ($this->request->param('priceSort') == 1) {
|
|
$info->order('a.price asc');
|
|
}
|
|
|
|
if ($this->request->param('priceSort') == 2) {
|
|
$info->order('a.price desc');
|
|
}
|
|
}
|
|
|
|
if (!empty($this->request->param('timeSort'))) {
|
|
if ($this->request->param('timeSort') == 1) {
|
|
$info->order('a.create_time asc');
|
|
}
|
|
|
|
if ($this->request->param('timeSort') == 2) {
|
|
$info->order('a.create_time desc');
|
|
}
|
|
}
|
|
|
|
if (!empty($this->request->param('keyword'))) {
|
|
$info->whereLike('a.store_name', "%{$this->request->param('keyword')}%");
|
|
}
|
|
|
|
$product_list = $info->page((int)$this->request->param('page'), $this->request->param('limit'))->select()->toArray();
|
|
|
|
return app('json')->success($product_list);
|
|
|
|
}
|
|
|
|
public function switchUser()
|
|
{
|
|
$uid = (int)$this->request->param('uid');
|
|
if (!$uid) return app('json')->fail('用户不存在');
|
|
$userInfo = $this->user;
|
|
if (!$userInfo->phone) return app('json')->fail('请绑定手机号');
|
|
$user = $this->repository->switchUser($userInfo, $uid);
|
|
$tokenInfo = $this->repository->createToken($user);
|
|
$this->repository->loginAfter($user);
|
|
return app('json')->success($this->repository->returnToken($user, $tokenInfo));
|
|
}
|
|
|
|
public function edit()
|
|
{
|
|
$data = $this->request->params(['avatar', 'nickname']);
|
|
$uid = (int)$this->request->param('uid');
|
|
if (!$uid) return app('json')->fail('用户不存在');
|
|
|
|
if (empty($data['avatar'])) unset($data['avatar']);
|
|
if (empty($data['nickname'])) unset($data['nickname']);
|
|
if (empty($data)) return app('json')->fail('参数丢失');
|
|
$this->repository->update($this->request->uid(), $data);
|
|
|
|
return app('json')->success('修改成功');
|
|
}
|
|
|
|
public function changePassword()
|
|
{
|
|
$data = $this->request->params(['repassword', 'password', 'sms_code']);
|
|
|
|
if (!$this->user->phone)
|
|
return app('json')->fail('请先绑定手机号');
|
|
if (empty($data['repassword']) || empty($data['password']))
|
|
return app('json')->fail('请输入密码');
|
|
if ($data['repassword'] !== $data['password'])
|
|
return app('json')->fail('两次密码不一致');
|
|
|
|
$sms_code = app()->make(SmsService::class)->checkSmsCode($this->user->phone, $data['sms_code'], 'change_pwd');
|
|
if (!$data['sms_code'] || !$sms_code)
|
|
return app('json')->fail('验证码不正确');
|
|
|
|
$password = $this->repository->encodePassword($data['password']);
|
|
$this->repository->update($this->request->uid(), ['pwd' => $password]);
|
|
return app('json')->success('绑定成功');
|
|
}
|
|
|
|
public function changePhone()
|
|
{
|
|
$data = $this->request->params(['phone', 'sms_code']);
|
|
$sms_code = app()->make(SmsService::class)->checkSmsCode($data['phone'], $data['sms_code'], 'change_phone');
|
|
if (!$data['sms_code'] || !$sms_code)
|
|
return app('json')->fail('验证码不正确');
|
|
$user = $this->repository->accountByUser($data['phone']);
|
|
$data['main_uid'] = 0;
|
|
if ($user) {
|
|
if ($this->request->userInfo()->account !== $data['phone']) {
|
|
$data['account'] = $this->request->userInfo()->account . '_' . $this->request->uid();
|
|
}
|
|
} else {
|
|
$data['account'] = $data['phone'];
|
|
}
|
|
unset($data['sms_code']);
|
|
$this->repository->update($this->request->uid(), $data);
|
|
return app('json')->success('修改成功');
|
|
}
|
|
|
|
|
|
public function getAgree($key)
|
|
{
|
|
$make = app()->make(CacheRepository::class);
|
|
$data = $make->getResult($key);
|
|
return app('json')->success($data);
|
|
}
|
|
|
|
public function integralInfo(UserBillRepository $make)
|
|
{
|
|
if (!systemConfig('integral_status')) {
|
|
return app('json')->fail('积分功能未开启');
|
|
}
|
|
|
|
$integral = $this->user->integral;
|
|
$lockIntegral = $make->lockIntegral($this->user->uid);
|
|
$deductionIntegral = $make->deductionIntegral($this->user->uid);
|
|
$totalGainIntegral = $make->totalGainIntegral($this->user->uid);
|
|
$make1 = app()->make(IntegralRepository::class);
|
|
$nextClearDay = $make1->getTimeoutDay();
|
|
$status = $nextClearDay < strtotime('+20 day');
|
|
$invalidDay = $make1->getInvalidDay();
|
|
if ($status && $integral > 0 && $invalidDay) {
|
|
$validIntegral = $make->validIntegral($this->user->uid, date('Y-m-d H:i:s', $invalidDay), date('Y-m-d H:i:s', $nextClearDay));
|
|
if ($integral > $validIntegral) {
|
|
$nextClearIntegral = (int)bcsub($integral, $validIntegral, 0);
|
|
} else {
|
|
$nextClearIntegral = 0;
|
|
}
|
|
} else {
|
|
$nextClearIntegral = 0;
|
|
}
|
|
$nextClearDay = date('m月d日', $nextClearDay);
|
|
$clear = compact('nextClearDay', 'status', 'nextClearIntegral');
|
|
|
|
return app('json')->success(compact('integral', 'lockIntegral', 'deductionIntegral', 'totalGainIntegral', 'clear'));
|
|
}
|
|
|
|
public function integralList(UserBillRepository $repository)
|
|
{
|
|
if (!systemConfig('integral_status')) {
|
|
return app('json')->fail('积分功能未开启');
|
|
}
|
|
[$page, $limit] = $this->getPage();
|
|
$data = $repository->userList(['category' => 'integral'], $this->user->uid, $page, $limit);
|
|
return app('json')->success($data);
|
|
}
|
|
|
|
public function services()
|
|
{
|
|
$uid = $this->user->uid;
|
|
$where = $this->request->params(['is_verify', 'customer', 'is_goods', ['is_open', 1]]);
|
|
$is_sys = $this->request->param('is_sys');
|
|
return app('json')->success(app()->make(StoreServiceRepository::class)->getServices($uid, $where, $is_sys));
|
|
}
|
|
|
|
public function memberInfo()
|
|
{
|
|
if (!systemConfig('member_status')) return app('json')->fail('未开启会员功能');
|
|
$make = app()->make(UserBrokerageRepository::class);
|
|
$data['uid'] = $this->user->uid;
|
|
$data['avatar'] = $this->user->avatar;
|
|
$data['nickname'] = $this->user->nickname;
|
|
$data['member_value'] = $this->user->member_value;
|
|
$data['member'] = $this->user->member;
|
|
$next_level = $make->getNextLevel($this->user->member_level, 1);
|
|
if (!$next_level && $data['member']) {
|
|
$next_level = $this->user->member->toArray();
|
|
$next_level['brokerage_rule']['value'] = 0;
|
|
}
|
|
$data['next_level'] = $next_level;
|
|
|
|
$makeInteres = app()->make(MemberinterestsRepository::class);
|
|
$data['interests'] = systemConfig('member_interests_status') ? $makeInteres->getInterestsByLevel($makeInteres::TYPE_FREE, $this->user->member_level) : [];
|
|
|
|
$data['today'] = app()->make(UserBillRepository::class)->search([
|
|
'category' => 'sys_members',
|
|
'uid' => $this->user->uid,
|
|
'day' => date('Y-m-d', time())
|
|
])->sum('number');
|
|
|
|
$config_key = ['member_pay_num', 'member_sign_num', 'member_reply_num', 'member_share_num'];
|
|
if (systemConfig('community_status')) $config_key[] = 'member_community_num';
|
|
|
|
$config = systemConfig($config_key);
|
|
if ($this->user->is_svip > 0) {
|
|
foreach ($config as $key => $item) {
|
|
$data['config'][$key] = $item . ' x' . $makeInteres->getSvipInterestVal($makeInteres::HAS_TYPE_MEMBER) . ' ';
|
|
}
|
|
} else {
|
|
$data['config'] = $config;
|
|
}
|
|
|
|
return app('json')->success($data);
|
|
}
|
|
|
|
public function notice()
|
|
{
|
|
$type = $this->request->param('type', 0);
|
|
$arr = [
|
|
'0' => 'brokerage_level',
|
|
'1' => 'member_level',
|
|
];
|
|
$filed = $arr[$type];
|
|
if (!$this->user->$filed) {
|
|
return app('json')->fail('无需通知');
|
|
}
|
|
|
|
$make = app()->make(CacheRepository::class);
|
|
$key = 'notice_' . $filed . '_' . $this->user->uid;
|
|
if ($ret = $make->getWhere(['key' => $key])) {
|
|
$userBrokerageRepository = app()->make(UserBrokerageRepository::class);
|
|
$level = app()->make(UserBrokerageRepository::class)->getWhere(
|
|
['brokerage_level' => $ret->result, 'type' => $type],
|
|
'brokerage_name,brokerage_icon,brokerage_rule'
|
|
);
|
|
$next_level = $userBrokerageRepository->getNextLevel($this->user->$filed, $type);
|
|
$ret->delete();
|
|
$type = $next_level ? 'level' : 'top';
|
|
return app('json')->success(compact('type', 'level'));
|
|
}
|
|
return app('json')->fail('已通知');
|
|
}
|
|
|
|
public function updateBaseInfo(UserBaseInfoValidate $validate)
|
|
{
|
|
if (systemConfig('open_update_info') != '1') {
|
|
return app('json')->fail('不允许修改基本信息');
|
|
}
|
|
$nickname = $this->request->param('nickname');
|
|
$avatar = $this->request->param('avatar');
|
|
if (!$nickname && !$avatar)
|
|
return app('json')->fail('未做任何修改');
|
|
$user = $this->request->userInfo();
|
|
if (!empty($nickname)) {
|
|
$validate->check(['nickname' => $nickname]);
|
|
$data['nickname'] = $nickname;
|
|
}
|
|
if (!empty($avatar)) {
|
|
$data['avatar'] = $avatar;
|
|
}
|
|
$this->repository->updateBaseInfo($data, $user);
|
|
return app('json')->success('修改成功');
|
|
}
|
|
|
|
}
|
|
|