初始化项目:添加后端代码、ThinkPHP框架、前端资源

This commit is contained in:
amb
2026-09-03 12:42:39 +08:00
commit 482bece22e
3726 changed files with 416708 additions and 0 deletions
@@ -0,0 +1,22 @@
<?php
namespace app\api\model\app\agent;
use think\Model;
use think\Db;
/**
* 分佣
*/
class Commission extends Model
{
public function handle($order)
{
//计算佣金
$orderItemList = (new Item())->getItemList($order->order_no);
}
}
@@ -0,0 +1,111 @@
<?php
namespace app\api\model\app\agent;
use think\Model;
use think\Db;
use app\api\model\app\agent\Level;
class Condition extends Model
{
/**
* 检查条件是否满足
* @return void
*/
public static function checkCondition($userId,$type,$value){
$value = floatval($value);
$data = 0;
switch ($type){
case 'agent':
$data = self::getAgent($userId);
break;
case 'customer':
$data = self::getCustomer($userId);
break;
case 'customer_pay':
$data = self::getCustomerPay($userId);
break;
case 'self_pay':
$data = self::getSelfPay($userId);
break;
}
return $data >= $value;
}
/**
* 获取自购金额
* @param $userId
* @return void
*/
public static function getSelfPay($userId){
$value = \app\common\model\order\Order::where([
'status'=>\app\common\constant\order\Status::STATUS_SUCCESS,
'user_id'=>$userId
])->sum('real_pay_price');
if(!$value){
return 0;
}
return $value;
}
/**
* 获取推广金额
* @param $userId
* @return void
*/
public static function getCustomerPay($userId){
$value = \app\common\model\app\agent\Order::where([
'status'=>1,
'beneficiary_user_id'=>$userId
])->sum('brokerage_price');
if(!$value){
return 0;
}
return $value;
}
/**
* 获取客户数量
* @param $userId
* @return int
*/
public static function getAgent($userId){
$value = \app\common\model\app\agent\Relation::where([
'status'=>1,
'parent_id'=>$userId
])->count();
if(!$value){
return 0;
}
return $value;
}
/**
* 获取下级分销员
* @param $userId
* @return int
*/
public static function getCustomer($userId){
$value = \app\common\model\app\agent\Relation::alias('relation')
->join(\app\common\model\app\agent\Member::getTable().' member','relation.user_id = member.user_id')
->where([
'relation.status'=>1,
'member.status'=>1,
'relation.parent_id'=>$userId
])->count();
if(!$value){
return 0;
}
return $value;
}
}
+37
View File
@@ -0,0 +1,37 @@
<?php
namespace app\api\model\app\agent;
use think\Model;
use think\Db;
use app\api\model\app\agent\Level;
class Goods extends Model
{
// 表名
protected $name = 'app_agent_goods';
// 自动写入时间戳字段
protected $autoWriteTimestamp = 'integer';
// 定义时间戳字段名
protected $createTime = 'createtime';
protected $updateTime = false;
protected $deleteTime = false;
//禁止uniacid绑定
protected $uniacid = false;
// 追加属性
protected $append = [
];
public function course()
{
return $this->belongsTo('app\api\model\course\Course', 'goods_id', 'id', [], 'RIGHT')->setEagerlyType(0);
}
}
+156
View File
@@ -0,0 +1,156 @@
<?php
namespace app\api\model\app\agent;
use think\Model;
use think\Db;
/**
* 分销等级
*/
class Level extends Model
{
/**
* 获取用户当前等级
* @param $userId
* @return void
*/
public function getUserLevel($userId){
$levelList = \app\common\model\app\agent\Level::getLevelList();
if(empty($levelList)){
return false;
}
$memberModel = new \app\common\model\app\agent\Member();
$member = $memberModel->getMember($userId);
if(!$member || $member['status'] != 1){
return false;
}
foreach ($levelList as $item){
if( isset($item['id']) && $member['level'] == $item['id']){
return $item;
}
}
return $levelList[0];
}
/**
* 获取用户的下一等级
* @param $userId
* @return void
*/
public function getUserNextLevel($userId){
$levelList = \app\common\model\app\agent\Level::getLevelList();
$memberModel = new \app\common\model\app\agent\Member();
$member = $memberModel->getMember($userId);
if(!$member){
return false;
}
$levelIndex = 0;
//当前的等级下标
$nowLevelIndex = 0;
foreach ($levelList as $item){
$data[] = $item;
if( isset($item['id']) && $member['level'] == $item['id']){
$nowLevelIndex = $levelIndex;
}
$levelIndex++;
}
if(isset($data[$nowLevelIndex+1])){
return $data[$nowLevelIndex+1];
}
return false;
}
/**
* 检查升级
* @param $userId
* @return void
*/
public function handle($userId){
$nextLevelId = $this->checkLevelCondtion($userId);
if($nextLevelId !== false){
$this->upLevel($userId,$nextLevelId);
}
return true;
}
/**
* 检查是否满足升级条件
* @param $userId 用户ID
* @return false 满足则返回升级等级ID 否则false
*/
public function checkLevelCondtion($userId)
{
$config = \app\common\model\app\Config::getConfig('agent');
$upLevel = $this->getUserNextLevel($userId);
if(!$upLevel){
return false;
}
//判断是否满足条件
$satisfy = false;
foreach ($upLevel['condition'] as $type => $item){
if($item['status'] == 1){
//判断自定条件
$temp = \app\api\model\app\agent\Condition::checkCondition($userId,$type,$item['value']);
if($config['upgrade'] == 2){
//满足一个即可
if($temp){
$satisfy = true;
break;
}
}else{
//需要全部满足
if(!$temp){
$satisfy = false;
break;
}else{
$satisfy = true;
}
}
}
}
if($satisfy){
return $upLevel['id'];
}
return false;
}
/**
* 升级
* @param $userId 用户ID
* @param $toLevelId 要升级的等级ID
* @return void
*/
public function upLevel($userId,$toLevelId){
$memberModel = new \app\common\model\app\agent\Member();
return $memberModel->where([
'user_id'=>$userId
])->update([
'level'=>$toLevelId
]);
}
}
+89
View File
@@ -0,0 +1,89 @@
<?php
namespace app\api\model\app\agent;
use think\Model;
use think\Db;
class Money extends Model
{
// 表名
protected $name = 'app_agent_member_money_log';
// 自动写入时间戳字段
protected $autoWriteTimestamp = 'integer';
// 定义时间戳字段名
protected $createTime = 'createtime';
protected $updateTime = false;
protected $deleteTime = false;
// 追加属性
protected $append = [
];
/**
* 变更资金
* @param $type 资金类型
* @param $userId 用户ID
* @param $money 变更金额
* @param $isFreeze 是否冻结 $type=money 有效
* @param $memo 备注
* @return bool
*/
public static function changeMoney($userId,$type,$money,$isFreeze = false,$memo = ''){
$user = \app\common\model\app\agent\Member::lock(true)->where([
'user_id'=>$userId
])->find();
if (!$user) {
return false;
}
$before = $user->money;
if($type == 'money'){
$after = function_exists('bcadd') ? bcadd($user->money, $money, 2) : $user->money + $money;
if($money > 0){
$totalMoney = function_exists('bcadd') ? bcadd($user->money_total, $money, 2) : $user->money_total + $money;
$changeParams['money_total'] = $totalMoney;
}
if($isFreeze){
$freezeMoney = function_exists('bcadd') ? bcadd($user->money_freeze, ($money * -1), 2) : $user->money_freeze + ($money * -1);
$changeParams['money_freeze'] = $freezeMoney;
}
}else{
$after = $before;
}
$totalMoney = function_exists('bcadd') ? bcadd($user->$type, $money, 2) : $user->$type + $money;
$changeParams[$type] = $totalMoney;
$user->save($changeParams);
//写入日志
if($memo !== false){
if($type != 'money'){
$money = 0;
}
self::addLog($userId,$money,$before,$after,$memo);
}
return true;
}
/**
* 添加日志
* @param $userId
* @param $money
* @param $before
* @param $after
* @param $memo
* @return void
*/
public static function addLog($userId,$money,$before,$after,$memo = '')
{
self::create(['user_id' => $userId, 'money' => $money, 'before' => $before, 'after' => $after, 'memo' => $memo,'uniacid'=>UNIACID]);
}
}
+112
View File
@@ -0,0 +1,112 @@
<?php
namespace app\api\model\app\agent;
use think\Model;
/**
* 分销订单
*/
class Order extends Model
{
// 表名,不含前缀
protected $name = 'app_agent_order';
// 自动写入时间戳字段
protected $autoWriteTimestamp = false;
// 定义时间戳字段名
protected $createTime = false;
protected $updateTime = false;
// 追加属性
protected $append = [
];
/**
* 获取统计数据
* @param $userId
* @return int[]
*/
public function getTotal($userId,$type='',$time=[]){
$data = [
'price_waiting'=>0,//待结算收益(元)
'sales_waiting'=>0,//待结算销售额(元)
'sales_success'=>0,//已结算销售额(元)
'price_success'=>0,//已结算收益/累计佣金(元)
'price_goods'=>0,//商品佣金(元)
'price_invite'=>0,//邀请佣金(元)
'order_count'=>0//订单数
];
$where = [
'beneficiary_user_id'=>$userId
];
if($type){
$where['type'] = $type;
}
if($time){
$where['createtime'] = ['BETWEEN',[$time['start'], $time['end']]];
}
$data['order_count'] = self::where($where)->count();
$data['price_success'] = self::where($where)->where(['status'=>1])->sum('brokerage_price');
$data['price_waiting'] = self::where($where)->where(['status'=>0])->sum('brokerage_price');
$data['price_total'] = self::where($where)->sum('brokerage_price');
//
$data['sales_success'] = self::where($where)->where(['status'=>1])->sum('price');
$data['sales_waiting'] = self::where($where)->where(['status'=>0])->sum('price');
$data['sales_total'] = self::where($where)->sum('price');
$priceGoodsWhere = $priceInviteWhere = [
'status'=>1
];
if(!isset($where['type'])){
$priceInviteWhere['type'] = $priceGoodsWhere['type'] = 'commission';
}
$data['price_goods'] = self::where($where)->where($priceGoodsWhere)->sum('brokerage_price');
$data['price_invite'] = self::where($where)->where($priceInviteWhere)->sum('brokerage_price');
return $data;
}
/**
* 获取下级用户订单统计数据
* @param $userId
* @return void
*/
public function getChildUserOrder($userId){
$data = [];
$where = [
'order_user_id'=>$userId
];
$data['price_success'] = self::where($where)->where(['status'=>1])->sum('brokerage_price');
$data['price_waiting'] = self::where($where)->where(['status'=>0])->sum('brokerage_price');
$data['order_count'] = self::where($where)->count();
$data['order_success_count'] = self::where($where)->where(['status'=>1])->count();
$data['order_waiting_count'] = self::where($where)->where(['status'=>0])->count();
$lastOrder = self::where($where)->order('createtime','desc')->find();
if($lastOrder){
$data['order_last_time'] = $lastOrder['createtime'];
}else{
$data['order_last_time'] = '';
}
return $data;
}
public function item()
{
return $this->belongsTo('app\common\model\order\Item', 'order_item_id', 'id', [])->setEagerlyType(0);
}
public function user()
{
return $this->belongsTo('app\common\model\User', 'order_user_id', 'id',[],'LEFT')->setEagerlyType(0);
}
}
@@ -0,0 +1,58 @@
<?php
namespace app\api\model\app\agent;
use think\Model;
/**
* 分销关系
*/
class Relation extends Model
{
// 表名,不含前缀
protected $name = 'app_agent_relation';
// 自动写入时间戳字段
protected $autoWriteTimestamp = false;
// 定义时间戳字段名
protected $createTime = false;
protected $updateTime = false;
// 追加属性
protected $append = [
];
public function user()
{
return $this->belongsTo('app\common\model\User', 'user_id', 'id')->setEagerlyType(0);
}
/**
* 获取统计数据
* @param $userId
* @return int[]
*/
public function getUserTotal($userId,$status='',$time=[]){
$data = [
];
$where = [
'parent_id'=>$userId
];
if($status){
$where['status'] = $status;
}
if($time){
$where['createtime'] = ['BETWEEN',[$time['start'], $time['end']]];
}
$data['count'] = self::where($where)->count(); //下级数量
$data['normal'] = self::where($where)->where(['status'=>1])->count(); //正常数量
$data['hidden'] = self::where($where)->where(['status'=>0])->count(); //解绑数量
return $data;
}
}
@@ -0,0 +1,34 @@
<?php
namespace app\api\model\app\agent;
use think\Model;
use think\Db;
use app\common\model\app\agent\Member;
class Withdraw extends Model
{
// 表名
protected $name = 'app_agent_withdraw';
// 自动写入时间戳字段
protected $autoWriteTimestamp = 'integer';
// 定义时间戳字段名
protected $createTime = 'createtime';
protected $updateTime = 'updatetime';
protected $deleteTime = false;
// 追加属性
protected $append = [
];
public function handle($userId,$money,$cardInfo=[]){
}
}
@@ -0,0 +1,38 @@
<?php
namespace app\api\model\app\agent;
use think\Model;
class WithdrawCard extends Model
{
// 表名
protected $name = 'app_agent_withdraw_card';
// 自动写入时间戳字段
protected $autoWriteTimestamp = 'integer';
// 定义时间戳字段名
protected $createTime = 'updatetime';
protected $updateTime = false;
protected $deleteTime = false;
// 追加属性
protected $append = [
];
public function getCard($userId){
$data = self::where([
'user_id'=>$userId
])->field(['name','card_no','address'])->find();
if(!$data){
return false;
}
return $data;
}
}
@@ -0,0 +1,32 @@
<?php
namespace app\api\model\app\agent;
use think\Model;
use think\Db;
use app\common\model\app\agent\Member;
/**
* 提现记录
*/
class WithdrawLog extends Model
{
// 表名
protected $name = 'app_agent_withdraw_log';
// 自动写入时间戳字段
protected $autoWriteTimestamp = 'integer';
// 定义时间戳字段名
protected $createTime = 'updatetime';
protected $updateTime = false;
protected $deleteTime = false;
// 追加属性
protected $append = [
];
}