440 lines
14 KiB
PHP
Executable File
440 lines
14 KiB
PHP
Executable File
<?php
|
||
|
||
namespace app\common\model;
|
||
|
||
use think\facade\Db;
|
||
|
||
class User extends Base
|
||
{
|
||
|
||
// 设置当前模型对应的完整数据表名称
|
||
protected $table = 'user';
|
||
|
||
/**
|
||
* 获取列表
|
||
*/
|
||
public static function getList($where = [], $field = '*', $order = '', $pageSize = "15")
|
||
{
|
||
$list = self::where($where)
|
||
->field($field)
|
||
->order($order)
|
||
->paginate(['list_rows' => $pageSize, 'query' => request()->param()]);
|
||
$page = $list->render();
|
||
$data['list'] = $list->toArray()['data'];
|
||
$data['count'] = $list->total();
|
||
$data['last_page'] = $list->toArray()['last_page'];
|
||
$data['page'] = $page;
|
||
return $data;
|
||
}
|
||
|
||
/**
|
||
* 获取单条数据
|
||
*/
|
||
public static function getInfo($where = [], $field = '*')
|
||
{
|
||
$data = self::where($where)
|
||
->field($field)
|
||
->find();
|
||
return $data;
|
||
}
|
||
|
||
/**
|
||
* 欧气值升级
|
||
*/
|
||
public static function ou_qi_level_up($user_id, $money, $type = 1)
|
||
{
|
||
if ($type == 1) {
|
||
$ou_qi = round($money * 100, 2);
|
||
self::changeOuQi($user_id, $ou_qi, 2, '消费赠送');
|
||
}
|
||
// #符合升级的权益
|
||
$level_info = QyLevel::field('id,level,title,number')
|
||
->whereNull('deltime')
|
||
->order('id desc')
|
||
->select()->toArray();
|
||
|
||
$users = Db::name('user')->field('ou_qi,ou_qi_level')->where('id', $user_id)->find();
|
||
|
||
foreach ($level_info as $k => $v) {
|
||
if ($users['ou_qi'] >= $v['number'] && $v['level'] > $users['ou_qi_level']) {
|
||
$cha_ou_qi = bcsub((string) $users['ou_qi'], (string) $v['number'], 2);
|
||
self::field('ou_qi_level')->where('id', $user_id)->update(['ou_qi_level' => $v['level']]);
|
||
self::changeOuQi($user_id, -$v['number'], 3, '升级减少', $v['level'], '级');
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 用户欧气值变化
|
||
* @param $user_id
|
||
* @param $change_money
|
||
* @param $type
|
||
* @param $content
|
||
* @param int $share_uid
|
||
* @param string $other
|
||
* @return int
|
||
*/
|
||
public static function changeOuQi($user_id, $change_money, $type, $content, $other = '')
|
||
{
|
||
if ($change_money == 0) {
|
||
return 1;
|
||
}
|
||
#用户信息
|
||
$user_info = self::field('ou_qi')->find($user_id);
|
||
$money = $user_info['ou_qi'];
|
||
$money = bcadd("$money", "$change_money", 2);
|
||
$arr = [];
|
||
$arr['user_id'] = $user_id;
|
||
$arr['change_money'] = $change_money;
|
||
$arr['money'] = $money;
|
||
$arr['type'] = $type;
|
||
$arr['content'] = $content;
|
||
$arr['addtime'] = time();
|
||
$arr['other'] = $other;
|
||
$res[] = ProfitOuQi::insert($arr);
|
||
$res[] = $user_info->save(['ou_qi' => $money]);
|
||
return $res;
|
||
}
|
||
|
||
public static function ou_qi_level($ou_qi_level, $ou_qi)
|
||
{
|
||
if ($ou_qi_level == 0) {
|
||
$number = QyLevel::field('level,title')
|
||
->where('level', '=', 1)
|
||
->whereNull('deltime')
|
||
->value('number');
|
||
if ($ou_qi != 0) {
|
||
$jindu = round($number / $ou_qi * 100);
|
||
} else {
|
||
$jindu = 0;
|
||
}
|
||
|
||
return ['level' => 0, 'title' => '暂无权益', 'cha' => $number, 'jindu' => $jindu];
|
||
} else {
|
||
$level_info = QyLevel::field('level,title')
|
||
->where('level', '=', $ou_qi_level)
|
||
->whereNull('deltime')
|
||
->find();
|
||
|
||
$xia_level_info = QyLevel::field('number')
|
||
->where('level', '=', $ou_qi_level + 1)
|
||
->whereNull('deltime')
|
||
->find();
|
||
|
||
if ($xia_level_info) {
|
||
$level_info['cha'] = $xia_level_info['number'] - $ou_qi;
|
||
$level_info['jindu'] = round($ou_qi / $xia_level_info['number'] * 100);
|
||
return $level_info;
|
||
} else {
|
||
$level_info['cha'] = '-1';
|
||
$level_info['jindu'] = 100;
|
||
return $level_info;
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 用户货币2变化
|
||
* @param $user_id
|
||
* @param $change_money
|
||
* @param $type 1后台充值 2在线充值 3抽赏消费 4背包兑换 5推荐奖励
|
||
* @param $content
|
||
* @param int $share_uid
|
||
* @param string $other
|
||
* @return int
|
||
*/
|
||
public static function changeMoney2($user_id, $change_money, $type, $content = '', $share_uid = 0, $other = '')
|
||
{
|
||
if ($change_money == 0) {
|
||
return 1;
|
||
}
|
||
#用户信息
|
||
$user_info = self::field('money2')->find($user_id);
|
||
$money = $user_info['money2'];
|
||
$money = bcadd("$money", "$change_money", 2);
|
||
$arr = [];
|
||
$arr['user_id'] = $user_id;
|
||
$arr['change_money'] = $change_money;
|
||
$arr['money'] = $money;
|
||
$arr['type'] = $type;
|
||
$arr['content'] = $content;
|
||
$arr['addtime'] = time();
|
||
$arr['share_uid'] = $share_uid;
|
||
$arr['other'] = $other;
|
||
$res[] = ProfitMoney2::insert($arr);
|
||
$res[] = $user_info->save(['money2' => $money]);
|
||
return $res;
|
||
}
|
||
|
||
|
||
/**
|
||
* 用户变化 发放uu币
|
||
* @param $user_id
|
||
* @param $change_money
|
||
* @param $type 1后台充值 2抽赏消费 3开券获得
|
||
* @param $content
|
||
* @param int $share_uid
|
||
* @param string $other
|
||
* @return int
|
||
*/
|
||
public static function changeIntegral($user_id, $change_money, $type, $content = '', $share_uid = 0, $other = '')
|
||
{
|
||
if ($change_money == 0) {
|
||
return 1;
|
||
}
|
||
#用户信息
|
||
$user_info = self::field('integral')->find($user_id);
|
||
$money = $user_info['integral'];
|
||
$money = bcadd("$money", "$change_money", 2);
|
||
$arr = [];
|
||
$arr['user_id'] = $user_id;
|
||
$arr['change_money'] = $change_money;
|
||
$arr['money'] = $money;
|
||
$arr['type'] = $type;
|
||
$arr['content'] = $content;
|
||
$arr['addtime'] = time();
|
||
$arr['share_uid'] = $share_uid;
|
||
$arr['other'] = $other;
|
||
$res[] = ProfitIntegral::insert($arr);
|
||
$res[] = $user_info->save(['integral' => $money]);
|
||
return $res;
|
||
}
|
||
|
||
/**
|
||
* 判断是否发积分 发券
|
||
* @param $order
|
||
*/
|
||
public static function is_integral_coupon($order)
|
||
{
|
||
$goods = Goods::where('id', '=', $order['goods_id'])->find();
|
||
$res = [];
|
||
#开启发积分
|
||
if ($goods['integral_is'] == 1 && $order['price'] > 0) {
|
||
$res[] = self::changeScore($order['user_id'], $order['price'], 4, '抽奖奖励');
|
||
}
|
||
#开启发券
|
||
if ($goods['coupon_is'] == 1) {
|
||
$d_coupon_num = OrderList::field('goodslist_money')->where([['order_id', '=', $order['id']], ['goodslist_money', '>=', 100], ['goodslist_money', '<', 500]])->select();
|
||
$config = getConfig("base");
|
||
|
||
foreach ($d_coupon_num as $k => $v) {
|
||
$coupon = [];
|
||
$coupon['title'] = "普通赏券";
|
||
$coupon['num'] = $v['goodslist_money'];
|
||
$coupon['level'] = 4;
|
||
$coupon['kl_num'] = $config['coupon_d_xz_max'];
|
||
$res[] = self::insert_coupon($order, $coupon);
|
||
}
|
||
|
||
$c_coupon_num = OrderList::field('goodslist_money')->where([['order_id', '=', $order['id']], ['goodslist_money', '>=', 500], ['goodslist_money', '<', 2000]])->select();
|
||
foreach ($c_coupon_num as $k => $v) {
|
||
$coupon = [];
|
||
$coupon['title'] = "高级赏券";
|
||
$coupon['num'] = $v['goodslist_money'];
|
||
$coupon['level'] = 3;
|
||
$coupon['kl_num'] = $config['coupon_c_xz_max'];
|
||
$res[] = self::insert_coupon($order, $coupon);
|
||
}
|
||
|
||
$b_coupon_num = OrderList::field('goodslist_money')->where([['order_id', '=', $order['id']], ['goodslist_money', '>=', 2000], ['goodslist_money', '<', 5000]])->select();
|
||
foreach ($b_coupon_num as $k => $v) {
|
||
$coupon = [];
|
||
$coupon['title'] = "终极赏券";
|
||
$coupon['num'] = $v['goodslist_money'];
|
||
$coupon['level'] = 2;
|
||
$coupon['kl_num'] = $config['coupon_b_xz_max'];
|
||
$res[] = self::insert_coupon($order, $coupon);
|
||
}
|
||
|
||
$a_coupon_num = OrderList::field('goodslist_money')->where([['order_id', '=', $order['id']], ['goodslist_money', '>=', 5000]])->select();
|
||
foreach ($a_coupon_num as $k => $v) {
|
||
$coupon = [];
|
||
$coupon['title'] = "特级赏券";
|
||
$coupon['num'] = $v['goodslist_money'];
|
||
$coupon['level'] = 1;
|
||
$coupon['kl_num'] = $config['coupon_a_xz_max'];
|
||
$res[] = self::insert_coupon($order, $coupon);
|
||
}
|
||
}
|
||
|
||
if (!$res) {
|
||
$res[] = 1;
|
||
}
|
||
return $res;
|
||
}
|
||
|
||
/**
|
||
* 用户积分变化
|
||
* @param $user_id
|
||
* @param $change_money
|
||
* @param $type 1后台充值 2抽赏消费 3升级获得 4抽赏奖励
|
||
* @param $content
|
||
* @param int $share_uid
|
||
* @param string $other
|
||
* @return int
|
||
*/
|
||
public static function changeScore($user_id, $change_money, $type, $content, $share_uid = 0, $other = '')
|
||
{
|
||
if ($change_money == 0) {
|
||
return 1;
|
||
}
|
||
#用户信息
|
||
$user_info = self::field('score')->find($user_id);
|
||
$money = $user_info['score'];
|
||
$money = bcadd("$money", "$change_money", 2);
|
||
$arr = [];
|
||
$arr['user_id'] = $user_id;
|
||
$arr['change_money'] = $change_money;
|
||
$arr['money'] = $money;
|
||
$arr['type'] = $type;
|
||
$arr['content'] = $content;
|
||
$arr['addtime'] = time();
|
||
$arr['share_uid'] = $share_uid;
|
||
$arr['other'] = $other;
|
||
$res[] = ProfitScore::insert($arr);
|
||
$res[] = $user_info->save(['score' => $money]);
|
||
return $res;
|
||
}
|
||
|
||
public static function insert_coupon($order, $coupon)
|
||
{
|
||
//自己获得80%
|
||
$percentage = 80;
|
||
$own = $coupon['num'] * ($percentage / 100);
|
||
//其他人获得20%
|
||
$percentage = 20;
|
||
$other = $coupon['num'] * ($percentage / 100);
|
||
|
||
$data = [
|
||
'user_id' => $order['user_id'],
|
||
'level' => $coupon['level'],
|
||
'title' => $coupon['title'],
|
||
'num' => $coupon['num'],
|
||
'status' => 1,
|
||
'type' => 1,
|
||
'from_id' => $order['id'],
|
||
'own' => intval($own),
|
||
'own2' => intval($own),
|
||
'other' => intval($other),
|
||
'other2' => intval($other),
|
||
'kl_num' => $coupon['kl_num'],
|
||
'kl_num2' => $coupon['kl_num'],
|
||
'addtime' => time(),
|
||
'updatetime' => time(),
|
||
];
|
||
$result = UserCoupon::insert($data);
|
||
return $result;
|
||
}
|
||
|
||
/**
|
||
* 分销奖励
|
||
* @param $order
|
||
*/
|
||
public static function distribution($order)
|
||
{
|
||
#微信支付金额
|
||
$price = $order['price'];
|
||
$fx_bili = (int) getConfig("base")['fx_bili'];
|
||
if ($price > 0 && $fx_bili > 0) {
|
||
$fx_bili = $fx_bili / 100;
|
||
$jiangli = bcmul("$price", "$fx_bili", 2);
|
||
if ($jiangli > 0) {
|
||
$pid = self::field('id')->where('id', '=', $order['user_id'])->value('pid');
|
||
if ($pid) {
|
||
//赠送Uu币
|
||
$res[] = self::changeIntegral($pid, $jiangli * 100, 5, ' ·', $order['user_id'], '奖励比例:' . $fx_bili);
|
||
}
|
||
}
|
||
if (empty($res)) {
|
||
$res = 1;
|
||
}
|
||
return $res;
|
||
} else {
|
||
$res = 1;
|
||
return $res;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 用户钻石变化
|
||
* @param $user_id
|
||
* @param $change_money
|
||
* @param $type 1后台充值 2在线充值 3抽赏消费 4背包兑换 5推荐奖励,6签到赠送
|
||
* @param $content
|
||
* @param int $share_uid
|
||
* @param string $other
|
||
* @return int
|
||
*/
|
||
public static function changeMoney($user_id, $change_money, $type, $content = '', $share_uid = 0, $other = '')
|
||
{
|
||
if ($change_money == 0) {
|
||
return 1;
|
||
}
|
||
#用户信息
|
||
$user_info = self::field('money')->find($user_id);
|
||
$money = $user_info['money'];
|
||
$money = bcadd("$money", "$change_money", 2);
|
||
$arr = [];
|
||
$arr['user_id'] = $user_id;
|
||
$arr['change_money'] = $change_money;
|
||
$arr['money'] = $money;
|
||
$arr['type'] = $type;
|
||
$arr['content'] = $content;
|
||
$arr['addtime'] = time();
|
||
$arr['share_uid'] = $share_uid;
|
||
$arr['other'] = $other;
|
||
$res[] = ProfitMoney::insert($arr);
|
||
$res[] = $user_info->save(['money' => $money]);
|
||
return $res;
|
||
}
|
||
|
||
public static function changeDraw($user_id, $change_money, $type, $content = '', $share_uid = 0, $other = '')
|
||
{
|
||
if ($change_money == 0) {
|
||
return 1;
|
||
}
|
||
#用户信息
|
||
$user_info = self::field('draw_num')->find($user_id);
|
||
$money = $user_info['draw_num'];
|
||
$money = bcadd("$money", "$change_money", 2);
|
||
$arr = [];
|
||
$arr['user_id'] = $user_id;
|
||
$arr['change_money'] = $change_money;
|
||
$arr['money'] = $money;
|
||
$arr['type'] = $type;
|
||
$arr['content'] = $content;
|
||
$arr['addtime'] = time();
|
||
$arr['share_uid'] = $share_uid;
|
||
$arr['other'] = $other;
|
||
$res[] = ProfitDraw::insert($arr);
|
||
$res[] = $user_info->save(['draw_num' => $money]);
|
||
return $res;
|
||
}
|
||
|
||
/*
|
||
扣除抽奖券
|
||
*/
|
||
|
||
public function getCommissionMoneyAttr($value, $data)
|
||
{
|
||
$money = ProfitMoney::field('change_money')
|
||
->where('user_id', '=', $data['pid'])
|
||
->where('type', '=', 5)
|
||
->where('share_uid', '=', $data['id'])
|
||
->where('change_money', '>', 0)
|
||
->sum('change_money');
|
||
$money1 = ProfitIntegral::field('change_money')
|
||
->where('user_id', '=', $data['pid'])
|
||
->where('type', '=', 5)
|
||
->where('share_uid', '=', $data['id'])
|
||
->where('change_money', '>', 0)
|
||
->sum('change_money');
|
||
if ($money1 > 0) {
|
||
$money = round($money + ($money1 / 100), 2);
|
||
}
|
||
return $money;
|
||
}
|
||
|
||
|
||
} |