Browse Source

代理返点及代理升级用户为二级代理

master
wanghongjun 2 years ago
parent
commit
b27ffda1b6
  1. 9
      app/controller/AdminUserTeam.php
  2. 82
      app/controller/AgentTeam.php
  3. 20
      app/model/User.php
  4. 31
      app/validate/Agent.php
  5. 41
      app/validate/User.php

9
app/controller/AdminUserTeam.php

@ -245,12 +245,9 @@ class AdminUserTeam extends BaseController
try { try {
validate()->rule(['aid' => 'require|number'])->check($request); validate()->rule(['aid' => 'require|number'])->check($request);
$aid = $request['aid']; $aid = $request['aid'];
$User = new User();
$UserRes = $User->find($aid); $validateUserIdentity = validate(UserValidate::class)->validateUserIdentity($aid);
if (empty($UserRes)) throw new ValidateException('用户不存在'); if ($validateUserIdentity !== true) return $this->renderError($validateUserIdentity);
if ($UserRes['identity'] != 3) {
throw new ValidateException('当前用户已是'.$User->identityArr[$UserRes['identity']]);
}
# 开启事务 # 开启事务
$connection->startTrans(); $connection->startTrans();

82
app/controller/AgentTeam.php

@ -15,6 +15,7 @@ use app\model\User as UserModel;
use app\model\CustomerService as CustomerServiceModel; use app\model\CustomerService as CustomerServiceModel;
use app\model\WithdrawalRecords; use app\model\WithdrawalRecords;
use app\validate\Agent; use app\validate\Agent;
use app\validate\User as UserValidate;
use think\exception\ValidateException; use think\exception\ValidateException;
use think\facade\Db; use think\facade\Db;
use think\facade\Request; use think\facade\Request;
@ -127,8 +128,8 @@ class AgentTeam extends BaseController
$agentUser = $this->request->userInfo; $agentUser = $this->request->userInfo;
validate(Agent::class)->scene('scores')->check($request); validate(Agent::class)->scene('scores')->check($request);
$checkCodeRes = validate(Agent::class)->validateUserInfo($agentUser['id'],$request['user_id']); $validateUserInfo = validate(Agent::class)->validateUserInfo($agentUser['id'],$request['user_id']);
if ($checkCodeRes !== true) return $this->renderError($checkCodeRes); if ($validateUserInfo !== true) return $this->renderError($validateUserInfo);
$user_id = $request['user_id']; # 用户id $user_id = $request['user_id']; # 用户id
$quota = $request['quota']; # 额度 $quota = $request['quota']; # 额度
@ -177,8 +178,8 @@ class AgentTeam extends BaseController
try { try {
$agentUser = $this->request->userInfo; $agentUser = $this->request->userInfo;
validate(Agent::class)->scene('scores')->check($request); validate(Agent::class)->scene('scores')->check($request);
$checkCodeRes = validate(Agent::class)->validateUserInfo($agentUser['id'],$request['user_id']); $validateUserInfo = validate(Agent::class)->validateUserInfo($agentUser['id'],$request['user_id']);
if ($checkCodeRes !== true) return $this->renderError($checkCodeRes); if ($validateUserInfo !== true) return $this->renderError($validateUserInfo);
$user_id = $request['user_id']; # 用户id $user_id = $request['user_id']; # 用户id
$quota = $request['quota']; # 额度 $quota = $request['quota']; # 额度
@ -346,6 +347,79 @@ class AgentTeam extends BaseController
]); ]);
} }
/**
* 代理升级用户为代理
*/
public function upGradationAgent()
{
$param = Request::param();
$connection = Db::connect();
try {
$agentData = $this->request->userInfo;
validate(Agent::class)->scene('promotion')->check($param);
$user_id = $param['user_id'];
$rebate_ratio = $param['rebate_ratio'] ?? 0;
$validateUserInfo = validate(Agent::class)->validateUserInfo($agentData['id'],$user_id);
if ($validateUserInfo !== true) throw new ValidateException($validateUserInfo);
$validateUserIdentity = validate(UserValidate::class)->validateUserIdentity($user_id);
if ($validateUserIdentity !== true) throw new ValidateException($validateUserIdentity);
$validateRebateRatio = validate(Agent::class)->validateRebateRatio($agentData['id'],$rebate_ratio);
if ($validateRebateRatio !== true) throw new ValidateException($validateRebateRatio);
# 开启事务
$connection->startTrans();
# 创建代理信息
AgentInfo::createInfo($user_id,$rebate_ratio);
# 升级为代理
User::changeIdentity($user_id,2,$agentData['id']);
$connection->commit();
return $this->renderSuccess('成功');
} catch (ValidateException $validateException) {
return $this->renderError($validateException->getMessage());
} catch (\Exception $e) {
$connection->rollback();
return $this->renderError($e->getMessage());
}
}
/**
* 修改代理占比
*/
public function settingRebateRatio()
{
$param = Request::param();
try {
$agentData = $this->request->userInfo;
validate()->rule([
'user_id|用户id' => 'require|number',
'rebate_ratio|返点占比' => 'require|float'
])->check($param);
$user_id = $param['user_id'];
$rebate_ratio = $param['rebate_ratio'] ?? 0;
$validateUserInfo = validate(Agent::class)->validateUserInfo($agentData['id'],$user_id);
if ($validateUserInfo !== true) throw new ValidateException($validateUserInfo);
$validateRebateRatio = validate(Agent::class)->validateRebateRatio($agentData['id'],$rebate_ratio);
if ($validateRebateRatio !== true) throw new ValidateException($validateRebateRatio);
AgentInfo::updateRebateRatio($user_id,$rebate_ratio);
return $this->renderSuccess('成功');
} catch (ValidateException $validateException) {
return $this->renderError($validateException->getMessage());
}
}
/** /**
* 返回用户联系客服信息 * 返回用户联系客服信息
* @return array * @return array

20
app/model/User.php

@ -318,15 +318,17 @@ class User extends Model
* 修改身份 * 修改身份
* @param $user_id * @param $user_id
* @param $identity * @param $identity
* @param $aid
* @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException * @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException * @throws \think\db\exception\ModelNotFoundException
*/ */
public static function changeIdentity($user_id,$identity = 2) public static function changeIdentity($user_id,$identity = 2,$aid = 0)
{ {
$user = new User(); $user = new User();
$userRes = $user->find($user_id); $userRes = $user->find($user_id);
$userRes->identity = $identity; $userRes->identity = $identity;
$userRes->aid = $aid;
$userRes->save(); $userRes->save();
} }
@ -339,20 +341,26 @@ class User extends Model
* @throws \think\db\exception\DbException * @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException * @throws \think\db\exception\ModelNotFoundException
*/ */
public static function addRebateRatioAmount($user_id,$amount) public static function addRebateRatioAmount($user_id,$amount,$superior_rebate_ratio = 0)
{ {
# 获取用户代理
$aid = User::where('id',$user_id)->value('aid'); $aid = User::where('id',$user_id)->value('aid');
if (empty($aid)) return false; if (empty($aid)) return false;
# 获取代理返点比率
$rebate_ratio = AgentInfo::where('aid',$aid)->value('rebate_ratio'); $rebate_ratio = AgentInfo::where('aid',$aid)->value('rebate_ratio');
if (!$rebate_ratio || !($rebate_ratio * 1)) return false; if (!$rebate_ratio || !($rebate_ratio * 1)) return false;
# 减去下级返点比率
$rebate_ratio -= $superior_rebate_ratio;
# 计算反比金额
$rebateRatioAmount = bcmul($amount,$rebate_ratio,2); $rebateRatioAmount = bcmul($amount,$rebate_ratio,2);
# 代理可提余额增加
$residue_amount = self::incrBalance($aid,$rebateRatioAmount); $residue_amount = self::incrWithdrawalBalance($aid,$rebateRatioAmount);
# 代理充值返点金额 # 代理充值返点金额
RechargeRecords::createRecords($aid,$rebateRatioAmount,$residue_amount,1,4,$user_id); RechargeRecords::createRecords($aid,$rebateRatioAmount,$residue_amount,1,4,$user_id);
# 获取用户代理上级代理
self::addRebateRatioAmount($aid,$amount,$rebate_ratio);
} }
/** /**

31
app/validate/Agent.php

@ -3,6 +3,7 @@ declare (strict_types = 1);
namespace app\validate; namespace app\validate;
use app\model\AgentInfo;
use think\Validate; use think\Validate;
class Agent extends Validate class Agent extends Validate
@ -37,12 +38,42 @@ class Agent extends Validate
'del' => ['aid'], 'del' => ['aid'],
'register' => ['phone','password','rebate_ratio'], 'register' => ['phone','password','rebate_ratio'],
'modifyPassword' => ['password','repassword'], 'modifyPassword' => ['password','repassword'],
'promotion' => ['user_id','rebate_ratio']
]; ];
/**
* 验证用户
* @param $aid
* @param $user_id
* @return bool|string
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function validateUserInfo($aid,$user_id) public function validateUserInfo($aid,$user_id)
{ {
$query = \app\model\User::where('aid',$aid)->where('id',$user_id)->find(); $query = \app\model\User::where('aid',$aid)->where('id',$user_id)->find();
if (!$query) return '当前用户不在你管理之下'; if (!$query) return '当前用户不在你管理之下';
return true; return true;
} }
/**
* 验证 返点比率 不得超出上级代理
* @param $aid
* @param $rebate_ratio
* @return bool|string
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function validateRebateRatio($aid,$rebate_ratio)
{
$agentInfo = AgentInfo::where('aid',$aid)->field('rebate_ratio')->find();
if (empty($agentInfo['rebate_ratio'])) return '当前代理账号未有返点权限,未能升级用户为代理';
$rebate_ratio = $rebate_ratio / 100;
if ($rebate_ratio >= $agentInfo['rebate_ratio']) {
return '填写返点占比不能超出代理本身的返点占比,代理返点比率为:'.($agentInfo['rebate_ratio']*100).'%';
}
return true;
}
} }

41
app/validate/User.php

@ -14,12 +14,13 @@ class User extends Validate
* *
* @var array * @var array
*/ */
protected $rule = [ protected $rule
'password|密码' => 'require|min:6|max:20', = [
'repassword|确认密码' => 'require|confirm:password', 'password|密码' => 'require|min:6|max:20',
'phone|手机号' => 'require|mobile', 'repassword|确认密码' => 'require|confirm:password',
'user_id|用户id' => 'require|number' 'phone|手机号' => 'require|mobile',
]; 'user_id|用户id' => 'require|number'
];
/** /**
* 定义错误信息 * 定义错误信息
@ -29,12 +30,13 @@ class User extends Validate
*/ */
protected $message = []; protected $message = [];
protected $scene = [ protected $scene
'modifyPassword' => ['password','repassword'], = [
'editUser' => ['user_id','password'], 'modifyPassword' => ['password', 'repassword'],
'register' => ['phone','password'], 'editUser' => ['user_id', 'password'],
'delUser' => ['user_id'], 'register' => ['phone', 'password'],
]; 'delUser' => ['user_id'],
];
/** /**
* 手机号短信验证 * 手机号短信验证
@ -45,9 +47,9 @@ class User extends Validate
* @throws \think\db\exception\DbException * @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException * @throws \think\db\exception\ModelNotFoundException
*/ */
public function checkCode($mobile,$code) public function checkCode($mobile, $code)
{ {
$pin_info = Db::name('pincode')->where('mobile',$mobile)->field('code,time')->find(); $pin_info = Db::name('pincode')->where('mobile', $mobile)->field('code,time')->find();
if (empty($pin_info)) { if (empty($pin_info)) {
return '短信验证码错误'; return '短信验证码错误';
} }
@ -59,4 +61,15 @@ class User extends Validate
} }
return true; return true;
} }
public function validateUserIdentity($user_id)
{
$User = new \app\model\User();
$UserRes = $User->find($user_id);
if (empty($UserRes)) return '用户不存在';
if ($UserRes['identity'] != 3) {
return '当前用户已是'.$User->identityArr[$UserRes['identity']];
}
return true;
}
} }

Loading…
Cancel
Save