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.
265 lines
8.8 KiB
265 lines
8.8 KiB
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
|
// +----------------------------------------------------------------------
|
|
// | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
|
|
// +----------------------------------------------------------------------
|
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
|
// +----------------------------------------------------------------------
|
|
// | Author: CRMEB Team <admin@crmeb.com>
|
|
// +----------------------------------------------------------------------
|
|
namespace app\controller\out;
|
|
|
|
use app\Request;
|
|
use app\services\user\UserServices;
|
|
use app\services\user\level\UserLevelServices;
|
|
|
|
/**
|
|
* 用户类
|
|
* Class StoreProduct
|
|
* @package app\api\controller\store
|
|
*/
|
|
class User
|
|
{
|
|
/**
|
|
* 用户services
|
|
* @var UserServices
|
|
*/
|
|
protected $services;
|
|
|
|
public function __construct(UserServices $services)
|
|
{
|
|
$this->services = $services;
|
|
}
|
|
|
|
/**
|
|
* 用户等级列表
|
|
* @param Request $request
|
|
* @return mixed
|
|
*/
|
|
public function levelList(Request $request)
|
|
{
|
|
$where = $request->getMore([
|
|
['page', 0],
|
|
['limit', 10],
|
|
['title', ''],
|
|
['is_show', ''],
|
|
]);
|
|
/** @var UserLevelServices $levelServices */
|
|
$levelServices = app()->make(UserLevelServices::class);
|
|
return app('json')->success($levelServices->getSytemList($where));
|
|
}
|
|
|
|
/**
|
|
* 用户列表
|
|
* @return mixed
|
|
*/
|
|
public function userList(Request $request)
|
|
{
|
|
$where = $request->postMore([
|
|
['uid', 0],
|
|
]);
|
|
if ($where['uid']) {
|
|
$where['uid'] = is_string($where['uid']) ? explode(',', $where['uid']) : $where['uid'];
|
|
} else {
|
|
$where['uid'] = [];
|
|
}
|
|
return app('json')->success($this->services->index($where));
|
|
}
|
|
|
|
/**
|
|
* 添加用户
|
|
* @param Request $request
|
|
* @return mixed
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
* @throws \think\db\exception\DbException
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
*/
|
|
public function userSave(Request $request)
|
|
{
|
|
$data = $request->postMore([
|
|
['is_promoter', 0],
|
|
['real_name', ''],
|
|
['card_id', ''],
|
|
['birthday', ''],
|
|
['mark', ''],
|
|
['status', 0],
|
|
['level', 0],
|
|
['phone', 0],
|
|
['addres', ''],
|
|
['label_id', []],
|
|
['group_id', 0],
|
|
['pwd', ''],
|
|
['true_pwd', ''],
|
|
['spread_open', 1],
|
|
['sex', 0],
|
|
['provincials', ''],
|
|
['province', 0],
|
|
['city', 0],
|
|
['area', 0],
|
|
['street', 0],
|
|
['extend_info', []],
|
|
['adminId', 0],
|
|
]);
|
|
if ($data['phone']) {
|
|
if (!check_phone($data['phone'])) {
|
|
return app('json')->fail('手机号码格式不正确');
|
|
}
|
|
if ($this->services->count(['phone' => $data['phone']])) {
|
|
return app('json')->fail('手机号已经存在不能添加相同的手机号用户');
|
|
}
|
|
$data['nickname'] = substr_replace($data['phone'], '****', 3, 4);
|
|
}
|
|
if ($data['card_id']) {
|
|
try {
|
|
if (!check_card($data['card_id'])) return app('json')->fail('请输入正确的身份证');
|
|
} catch (\Throwable $e) {
|
|
// return $this->fail('请输入正确的身份证');
|
|
}
|
|
}
|
|
if ($data['birthday']) {
|
|
if (strtotime($data['birthday']) > time()) return app('json')->fail('生日请选择今天之前日期');
|
|
}
|
|
if ($data['pwd']) {
|
|
if (strlen($data['pwd']) < 6) {
|
|
return app('json')->fail('密码长度最小6位');
|
|
}
|
|
if ($data['pwd'] == '123456') {
|
|
return app('json')->fail('您设置的密码太过简单');
|
|
}
|
|
$data['pwd'] = md5($data['pwd']);
|
|
} else {
|
|
unset($data['pwd']);
|
|
}
|
|
unset($data['true_pwd']);
|
|
$data['avatar'] = sys_config('h5_avatar');
|
|
$data['user_type'] = 'h5';
|
|
$labels = $data['label_id'];
|
|
unset($data['label_id']);
|
|
foreach ($labels as $k => $v) {
|
|
if (!$v) {
|
|
unset($labels[$k]);
|
|
}
|
|
}
|
|
$data['birthday'] = empty($data['birthday']) ? 0 : strtotime($data['birthday']);
|
|
$data['add_time'] = time();
|
|
$data['extend_info'] = $this->services->handelExtendInfo($data['extend_info']);
|
|
$this->services->transaction(function () use ($data, $labels) {
|
|
$res = true;
|
|
$userInfo = $this->services->save($data);
|
|
if ($labels) {
|
|
$res = $this->services->saveSetLabel([$userInfo->uid], $labels);
|
|
}
|
|
if ($data['level']) {
|
|
$res = $this->services->saveGiveLevel((int)$userInfo->uid, (int)$data['level']);
|
|
}
|
|
event('user.register', [$this->services->get((int)$userInfo->uid), true, 0]);
|
|
});
|
|
event('user.create', $data);
|
|
return app('json')->success('添加成功');
|
|
}
|
|
|
|
/**
|
|
* 更新用户信息
|
|
* @param Request $request
|
|
* @param $uid
|
|
* @return mixed
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
* @throws \think\db\exception\DbException
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
*/
|
|
public function userUpdate(Request $request, $uid)
|
|
{
|
|
$data = $request->postMore([
|
|
['money_status', 0],
|
|
['is_promoter', 0],
|
|
['real_name', ''],
|
|
['card_id', ''],
|
|
['birthday', ''],
|
|
['mark', ''],
|
|
['money', 0],
|
|
['integration_status', 0],
|
|
['integration', 0],
|
|
['status', 0],
|
|
['level', 0],
|
|
['phone', 0],
|
|
['addres', ''],
|
|
['label_id', []],
|
|
['group_id', 0],
|
|
['pwd', ''],
|
|
['true_pwd'],
|
|
['spread_open', 1],
|
|
['sex', 0],
|
|
['provincials', ''],
|
|
['province', 0],
|
|
['city', 0],
|
|
['area', 0],
|
|
['street', 0],
|
|
['spread_uid', -1],
|
|
['extend_info', []],
|
|
['adminId', 0],
|
|
]);
|
|
if ($data['phone']) {
|
|
if (!check_phone($data['phone'])) return app('json')->fail('手机号码格式不正确');
|
|
}
|
|
if ($data['card_id']) {
|
|
try {
|
|
if (!check_card($data['card_id'])) return app('json')->fail('请输入正确的身份证');
|
|
} catch (\Throwable $e) {
|
|
// return app('json')->fail('请输入正确的身份证');
|
|
}
|
|
}
|
|
if ($data['birthday']) {
|
|
if (strtotime($data['birthday']) > time()) return app('json')->fail('生日请选择今天之前日期');
|
|
}
|
|
if ($data['pwd']) {
|
|
$data['pwd'] = md5($data['pwd']);
|
|
} else {
|
|
unset($data['pwd']);
|
|
}
|
|
$userInfo = $this->services->get($uid);
|
|
if (!$userInfo) {
|
|
return app('json')->fail('用户不存在');
|
|
}
|
|
if (!in_array($data['spread_uid'], [0, -1])) {
|
|
$spreadUid = $data['spread_uid'];
|
|
if ($uid == $spreadUid) {
|
|
return app('json')->fail('上级推广人不能为自己');
|
|
}
|
|
if (!$this->services->count(['uid' => $spreadUid])) {
|
|
return app('json')->fail('上级用户不存在');
|
|
}
|
|
$spreadInfo = $this->services->get($spreadUid);
|
|
if ($spreadInfo->spread_uid == $uid) {
|
|
return app('json')->fail('上级推广人不能为自己下级');
|
|
}
|
|
}
|
|
unset($data['true_pwd']);
|
|
if (!$uid) return app('json')->fail('数据不存在');
|
|
$data['money'] = (string)$data['money'];
|
|
$data['integration'] = (string)$data['integration'];
|
|
$data['extend_info'] = $this->services->handelExtendInfo($data['extend_info']);
|
|
return app('json')->success($this->services->updateInfo((int)$uid, $data) ? '修改成功' : '修改失败');
|
|
}
|
|
|
|
/**
|
|
* 修改用户余额和积分
|
|
* @param Request $request
|
|
* @param $uid
|
|
* @return mixed
|
|
*/
|
|
public function userGive(Request $request, $uid)
|
|
{
|
|
$data = $request->postMore([
|
|
['money_status', 0],
|
|
['money', 0],
|
|
['integration_status', 0],
|
|
['integration', 0],
|
|
]);
|
|
if (!$uid) return app('json')->fail('数据不存在');
|
|
$data['money'] = (string)$data['money'];
|
|
$data['integration'] = (string)$data['integration'];
|
|
$data['is_other'] = true;
|
|
return app('json')->success($this->services->updateInfo($uid, $data) ? '修改成功' : '修改失败');
|
|
}
|
|
}
|
|
|