|
|
@@ -163,66 +163,33 @@ class Users extends Model
|
|
|
* @param int $user_id 会员ID
|
|
|
* @param string $memo 备注
|
|
|
*/
|
|
|
- public static function money($money, $user_id, $memo)
|
|
|
+ public function setInvitationCode($user_id)
|
|
|
{
|
|
|
- Db::startTrans();
|
|
|
- try {
|
|
|
- $user = self::lock(true)->find($user_id);
|
|
|
- if ($user && $money != 0) {
|
|
|
- $before = $user->money;
|
|
|
- //$after = $user->money + $money;
|
|
|
- $after = function_exists('bcadd') ? bcadd($user->money, $money, 2) : $user->money + $money;
|
|
|
- //更新会员信息
|
|
|
- $user->save(['money' => $after]);
|
|
|
- //写入日志
|
|
|
- MoneyLog::create(['user_id' => $user_id, 'money' => $money, 'before' => $before, 'after' => $after, 'memo' => $memo]);
|
|
|
- }
|
|
|
- Db::commit();
|
|
|
- } catch (\Exception $e) {
|
|
|
- Db::rollback();
|
|
|
- }
|
|
|
+ $inviteCode = $this->generateInviteCode();
|
|
|
+ $this->where('id', $user_id)->update(['invitation_code' => $inviteCode]);
|
|
|
+ return $inviteCode;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
- * 变更会员积分
|
|
|
- * @param int $score 积分
|
|
|
- * @param int $user_id 会员ID
|
|
|
- * @param string $memo 备注
|
|
|
+ * 生成随机邀请码
|
|
|
+ * @param $len
|
|
|
+ * @return string
|
|
|
*/
|
|
|
- public static function score($score, $user_id, $memo)
|
|
|
+ protected function generateInviteCode($len = 4)
|
|
|
{
|
|
|
- Db::startTrans();
|
|
|
- try {
|
|
|
- $user = self::lock(true)->find($user_id);
|
|
|
- if ($user && $score != 0) {
|
|
|
- $before = $user->score;
|
|
|
- $after = $user->score + $score;
|
|
|
- $level = self::nextlevel($after);
|
|
|
- //更新会员信息
|
|
|
- $user->save(['score' => $after, 'level' => $level]);
|
|
|
- //写入日志
|
|
|
- ScoreLog::create(['user_id' => $user_id, 'score' => $score, 'before' => $before, 'after' => $after, 'memo' => $memo]);
|
|
|
- }
|
|
|
- Db::commit();
|
|
|
- } catch (\Exception $e) {
|
|
|
- Db::rollback();
|
|
|
+ $characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
|
+ $inviteCode = '';
|
|
|
+ for ($i = 0; $i < $len; $i++) {
|
|
|
+ $inviteCode .= $characters[mt_rand(0, strlen($characters) - 1)];
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- /**
|
|
|
- * 根据积分获取等级
|
|
|
- * @param int $score 积分
|
|
|
- * @return int
|
|
|
- */
|
|
|
- public static function nextlevel($score = 0)
|
|
|
- {
|
|
|
- $lv = array(1 => 0, 2 => 30, 3 => 100, 4 => 500, 5 => 1000, 6 => 2000, 7 => 3000, 8 => 5000, 9 => 8000, 10 => 10000);
|
|
|
- $level = 1;
|
|
|
- foreach ($lv as $key => $value) {
|
|
|
- if ($score >= $value) {
|
|
|
- $level = $key;
|
|
|
- }
|
|
|
+ //检查是否重复
|
|
|
+ if($this->where('invitation_code', $inviteCode)->count()){
|
|
|
+ return $this->generateInviteCode($len);
|
|
|
}
|
|
|
- return $level;
|
|
|
+
|
|
|
+ return $inviteCode;
|
|
|
}
|
|
|
+
|
|
|
}
|