This commit is contained in:
2025-10-29 15:32:26 +08:00
parent d90614805b
commit b7462657cd
78921 changed files with 2753938 additions and 71 deletions

View File

@@ -0,0 +1,138 @@
<?php
namespace app\model\Merchant;
use app\model\BaseModel;
use app\model\merchant\Merchant as MerchantModel;
/**
* 系统站点信息管理
* @author Administrator
*
*/
class Apply extends BaseModel
{
/**
* 获取提现记录
* @param $condition
* @param string $field
* @param string $order
* @param OrderCommon $instance
* @return array
*/
public function getWithdrawalLogList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'createtime desc', $field = '*')
{
$list = model('merch_withdraw')->pageList($condition, $field, $order, $page, $page_size);
return $this->success($list);
}
/**
* 同意提现申请
* @param $condition
* @return array
*/
public function agree($condition)
{
$check_condition = array_column($condition, 2, 0);
$site_id = $check_condition[ 'site_id' ];
if (empty($site_id)) {
return $this->error(-1, '参数错误');
}
$info = model("merch_withdraw")->getInfo($condition);
if (empty($info))
return $this->error();
model('merch_withdraw')->startTrans();
try {
$data = array (
"status" => 1,
"status_name" => "待转账",
"audit_time" => time(),
);
$result = model("merch_withdraw")->update($data, $condition);
model('merch_withdraw')->commit();
return $this->success();
} catch (\Exception $e) {
model('merch_withdraw')->rollback();
return $this->error('', $e->getMessage());
}
}
/**
* 拒绝提现申请
* @param $condition
* @param $param
* @return array
*/
public function refuse($condition, $param)
{
$info = model("merch_withdraw")->getInfo($condition, "site_id,transfer_type,merch_id,apply_money");
if (empty($info))
return $this->error();
model('merch_withdraw')->startTrans();
try {
$data = array (
"status" => -1,
"status_name" => "已拒绝",
"refuse_reason" => $param[ "refuse_reason" ],
"audit_time" => time(),
);
$result = model("merch_withdraw")->update($data, $condition);
//增加余额
$MerchModel = new MerchantModel();
$merch = model('merch')->getInfo(['merch_id'=>$info[ "merch_id" ]]);
$account_res = $MerchModel->credit($info['site_id'],0,$info[ "merch_id" ],$merch['balance'],$info['apply_money'],'商户提现未通过返还');
//减少提现中余额
model("merch")->setDec([ [ "merch_id", "=", $info[ "merch_id" ] ] ], "balance_withdraw_apply", $info[ "apply_money" ]);
model('merch_withdraw')->commit();
return $this->success();
} catch (\Exception $e) {
model('merch_withdraw')->rollback();
return $this->error('', $e->getMessage());
}
}
/**
* 提现转账完成
* @param array $param
* @return array
*/
public function transferFinish($param = [])
{
$condition = [
[ 'id', '=', $param[ 'id' ] ],
[ 'site_id', '=', $param[ 'site_id' ] ],
[ 'status', '=', 1 ]
];
$info = model("merch_withdraw")->getInfo($condition);
if (empty($info)) return $this->error();
$payment_time = time();
model('merch_withdraw')->startTrans();
try {
$data = [
'status' => 2,
'status_name' => '已转账',
'payment_time' => $payment_time,
'certificate' => $param[ 'certificate' ] ?? '',
'certificate_remark' => $param[ 'certificate_remark' ] ?? ''
];
$result = model("merch_withdraw")->update($data, $condition);
//增加已提现余额
model("merch")->setInc([ [ "merch_id", "=", $info[ "merch_id" ] ] ], "balance_withdraw", $info[ "apply_money" ]);
//减少提现中余额
model("merch")->setDec([ [ "merch_id", "=", $info[ "merch_id" ] ] ], "balance_withdraw_apply", $info[ "apply_money" ]);
model('merch_withdraw')->commit();
return $this->success();
} catch (\Exception $e) {
model('merch_withdraw')->rollback();
return $this->error('', $e->getMessage());
}
}
}

View File

@@ -0,0 +1,435 @@
<?php
namespace app\model\Merchant;
use app\model\BaseModel;
use app\model\system\Config as ConfigModel;
use think\facade\Db;
use think\facade\Session;
use app\model\system\Site;
use app\model\shop\Shop;
use app\model\system\Group;
use app\model\system\User;
use app\model\store\Store;
/**
* 系统站点信息管理
* @author Administrator
*
*/
class Merchant extends BaseModel
{
//结算订单
public function settlement($order_id){
$order_condition = [ [ 'order_id', '=', $order_id ] ];
$order_info = model('order')->getInfo($order_condition, '*');
if($order_info['is_merch_settlement'] ==0 && $order_info['merch_id'] > 0){//未结算的订单才允许结算
$merch = model('merch')->getInfo(['merch_id'=>$order_info['merch_id']]);
$order_money = $order_info['order_money'];
$settlement_rate = $merch['settlement_rate'];
$proportion_money = ($order_money*($settlement_rate/100));//平台佣金
$withdrawal = $order_money - $proportion_money;//商户最终获得
$insert = [
'site_id'=>$order_info['site_id'],
'merch_id'=>$order_info['merch_id'],
'order_no'=>$order_info['order_no'],
'order_money'=>$order_money,//订单金额
'proportion'=>$settlement_rate,//抽成比例
'withdrawal'=>$withdrawal,//最终获得金额
'finish_time'=>$order_info['finish_time'],//订单完成时间
'status'=>$order_info['order_money']>0?1:0,
'proportion_money'=>$proportion_money,
'createtime'=>time(),
];
model('merch_settlement')->add($insert);
$this->credit($merch['site_id'],0,$order_info['merch_id'],$merch['balance'],$withdrawal,'订单'.$order_info['order_no'].'结算获得');
model('order')->update(['is_merch_settlement'=>1],['order_id'=>$order_id]);
}
return true;
}
//余额记录
/**
* site_id
* type 0加1减
* merch_id
* balance 当前余额
* money 金额
* remark 备注
*/
public function credit($site_id,$type,$merch_id,$balance,$money,$remark=''){
if($type == 1){//减少
$remark = $remark.'当前余额:'.$balance.'减少后余额:'.($balance-$money).'元';
model('merch')->setDec(['merch_id'=>$merch_id,'site_id'=>$site_id],'balance',$money);
}else{
$remark = $remark.'当前余额:'.$balance.'增加后余额:'.($balance+$money).'元';
model('merch')->setInc(['merch_id'=>$merch_id,'site_id'=>$site_id],'balance',$money);
}
$log = [
'site_id'=>$site_id,
'merch_id'=>$merch_id,
'money'=>$money,
'remark'=>$remark,
'createtime'=>time(),
];
model('merch_log')->add($log);
}
/**
* 获取站点信息
* @param $condition
* @param string $field
* @param bool $cache_use
* @return array
*/
public function getWebSite($condition, $field = '*', $cache_use = true)
{
$res = model('merch')->getInfo($condition, $field);
return $this->success($res);
}
/**
* 用户登录
* @param $username
* @param $password
* @param string $app_module
* @param int $site_id
* @return array
*/
public function login($username, $password, $app_module = 'merch', $merch_id = 0)
{
// $merch = model('merch')->getInfo(['merch_id'=>$merch_id]);
$user_condition = [
[ 'u.username', '=', $username ],
[ 'u.app_module', '=', $app_module ],
// [ 'm.merch_id', '=', $merch_id]
];
$join = [
['merch m','m.uid=u.uid','left']
];
$user_info = model('user')->getInfo($user_condition, 'u.*,m.merch_id','u', $join);
if (empty($user_info)) {
return $this->error('', 'USER_NOT_EXIST');
}
// 检查是否有权限登录
if ($app_module == 'merch' && $user_info[ 'group_id' ] == 0) {
return $this->error('', 'PERMISSION_DENIED');
}
if ($user_info[ 'password' ] != data_md5($password)) {
return $this->error('', 'PASSWORD_ERROR');
}
if ($user_info[ 'status' ] !== 1) {
return $this->error([], 'USER_IS_LOCKED');
}
$this->initLogin($user_info);
return $this->success();
}
/**
* 获取当前登录管理员信息
* @param $app_module
* @param int $site_id
* @return mixed
*/
public function userInfo($app_module, $site_id = 0)
{
return Session::get($app_module . "_" . $site_id . ".user_info");
}
/**
* 初始化登录
* @param $user_info
*/
private function initLogin($user_info)
{
$time = time();
//初始化登录信息
$auth = array (
'merchid' => $user_info[ 'uid' ],
'uid' => $user_info[ 'uid' ],
'username' => $user_info[ 'username' ],
'create_time' => $user_info[ 'create_time' ],
'status' => $user_info[ 'status' ],
'group_id' => $user_info[ "group_id" ],
'site_id' => $user_info[ "site_id" ],
'app_group' => $user_info[ "app_group" ],
'is_admin' => $user_info[ 'is_admin' ],
'login_time' => $time,
'login_ip' => request()->ip(),
'sys_uid' => $user_info[ 'sys_uid' ],
'password' => $user_info[ 'password' ],
'app_module' => $user_info[ 'app_module' ]
);
//更新登录记录
$data = [
'login_time' => time(),
'login_ip' => request()->ip(),
];
model('user')->update($data, [ [ 'uid', "=", $user_info[ 'uid' ] ] ]);
Session::set($user_info[ 'app_module' ] . "_" . $user_info[ 'uid' ] . ".user_info", $auth);
Session::set($user_info[ 'app_module' ] . "_muid", $user_info[ 'uid' ]);
Session::set($user_info[ 'app_module' ] . "_merchid", $user_info[ 'merch_id' ]);
Session::set('app_module' . "_" . $user_info[ 'uid' ] . ".login_module", $user_info[ 'app_module' ]);
$this->addUserLog($user_info[ 'uid' ], $user_info[ 'username' ], $user_info[ 'merch_id' ], "用户登录", []);//添加日志
}
/**
* 获取当前登录商户
* @param $app_module
* @param int $site_id
* @return mixed
*/
public function merchId($app_module)
{
return Session::get($app_module . "_merchid");
}
/**
* 获取当前登录uid
* @param $app_module
* @param int $site_id
* @return mixed
*/
public function uid($app_module)
{
return Session::get($app_module . "_muid");
}
/**
* 清除登录信息
*/
public function clearLogin($app_module, $merch_id = 0)
{
Session::delete($app_module . "_" . $merch_id);
}
/**
* 登录模块
* @param $site_id
* @return mixed|string
*/
public function loginModule($merch_id)
{
$login_module = Session::get('app_module' . "_" . $merch_id . ".login_module");
return $login_module;
}
/**
* 添加用户日志
* @param $uid
* @param $username
* @param $site_id
* @param $action_name
* @param array $data
* @return array
*/
public function addUserLog($uid, $username, $site_id, $action_name, $data = [])
{
$url = request()->parseUrl();
$ip = request()->ip();
$log = array (
"uid" => $uid,
"username" => $username,
"site_id" => $site_id,
"url" => $url,
"ip" => $ip,
"data" => json_encode($data),
"action_name" => $action_name,
"create_time" => time(),
);
$res = model("user_log")->add($log);
if ($res === false) {
return $this->error('', 'UNKNOW_ERROR');
}
return $this->success($res);
}
/**
* 添加用户
* @param $data
* @param int $store_id
* @param string $source_type register 注册 add 添加
* @return array
*/
public function addUser($data, $store_id = 0, $source_type = 'register')
{
model("user")->startTrans();
try {
//添加一个uniacid
$uniacid = model('platform_shop')->add([
'platform_name'=>$data['site_name'],
'status'=>1,
'create_time'=>time(),
'username' => $data[ "username" ]
]);
if(!$uniacid){
return $this->error('', '默认店铺添加失败!');
}
//添加店铺
$site_data = [
'site_type' => 'shop',
'uniacid'=> $uniacid,
'create_time' => time(),
'site_name' => $data['site_name'],
'username' => $data[ "username" ]
];
$site_model = new Site();
$site_result = $site_model->addSite($site_data);
if ($site_result[ 'code' ] < 0) {
return $this->error('', '默认站点添加失败!');
}
$site_id = $site_result[ 'data' ];
$shop_data = [
'site_id' => $site_id,
'shop_status' => 1
];
$shop_model = new Shop();
$shop_result = $shop_model->addShop($shop_data);
if ($shop_result[ 'code' ] < 0) {
return $this->error('', '默认店铺添加失败!');
}
// 添加默认数据
$default_result = $this->defaultData($site_id);
if ($default_result[ 'code' ] < 0) {
return $default_result;
}
//添加系统用户组
$group_model = new Group();
$group_data = array (
"site_id" => $site_id,
"app_module" => "shop",
"group_name" => "系统管理员",
"group_status" => 1,
"is_system" => 1,
"menu_array" => "",
"desc" => "",
);
$group_result = $group_model->addGroup($group_data);
if ($group_result[ "code" ] < 0) {
return $this->error('', '后台管理员权限组添加失败!');
}
$group_id = $group_result[ "data" ];
$app_module = 'shop';
$member_id = 0;
if ($site_id === '') return $this->error('', 'REQUEST_SITE_ID');
if ($app_module === '') return $this->error('', 'REQUEST_APP_MODULE');
if (empty($data[ "username" ])) return $this->error('', '用户名不能为空');
if (empty($data[ "password" ])) return $this->error('', '密码不能为空');
//判断 用户名 是否存在
$user_info = model('user')->getInfo(
[
[ 'username', "=", $data[ "username" ] ],
//[ 'site_id', '=', $site_id ],
[ 'app_module', '=', $app_module ]
]
);
if ($source_type == 'add') {
if (!empty($user_info)) {
return $this->error('', '账号已存在');
}
} else {
if (!empty($user_info)) {
if (data_md5($data[ "password" ]) == $user_info[ 'password' ]) {
return $this->success(2);
} else {
return $this->error('', '账号已存在');
}
}
}
if ($group_id > 0) {
$group_model = new Group();
$group_info = $group_model->getGroupInfo([ [ "group_id", "=", $group_id ], [ "site_id", "=", $site_id ], [ "app_module", "=", $app_module ] ], "group_name")[ 'data' ];
$data[ "group_name" ] = $group_info[ "group_name" ] ?? '';
}
$data[ "password" ] = data_md5($data[ "password" ]);
$data[ "create_time" ] = time();
//添加默认门店
$store_model = new Store();
$store = $store_model->addDefaultStore(['site_id'=>$site_id,]);
//添加用户
$user_model = new User();
$user_data = array(
"app_module" => "shop",
"app_group" => 0,
"is_admin" => 1,
"site_id" => $site_id,
"group_id" => $group_id,
"username" => $data['username'],
"password" => $data['password'],
'uniacid'=>$uniacid,
'is_main'=>1
);
$user_result = $user_model->addUser($user_data);
if ($user_result[ "code" ] < 0) {
return $this->error('', '后台管理员添加失败!');
}
// 演示数据
$yanshi_data_result = $this->yanShiData($site_id);
if ($yanshi_data_result[ "code" ] < 0) {
return $this->error('', '演示数据添加失败!');
}
model("user")->commit();
return $this->success($user_result['data']);
} catch (\Exception $e) {
model("user")->rollback();
return $this->error('', '用户添加失败');
}
}
/**
* 演示数据
* @param $sys_uid
* @return array
*/
private function yanShiData($site_id)
{
$result_array = event("AddYanshiData", [ 'site_id' => $site_id ]);
if (!empty($result_array)) {
foreach ($result_array as $item) {
if (!empty($item) && $item[ 'code' ] < 0) {
return $this->error('', $item[ 'message' ]);
}
}
}
return ['code'=>0];
}
/**
* 添加店铺默认数据
*/
private function defaultData($site_id)
{
// 添加店铺相册默认分组
model("album")->add([ 'site_id' => $site_id, 'type' => 'video', 'album_name' => "默认分组", 'update_time' => time(), 'is_default' => 1, 'level' => 1 ]);
$result = model("album")->add([ 'site_id' => $site_id, 'type' => 'img', 'album_name' => "默认分组", 'update_time' => time(), 'is_default' => 1, 'level' => 1 ]);
if ($result === false) {
return $this->error('', '默认相册创建失败!');
}
//执行事件
$add_site_result = event("AddSite", [ 'site_id' => $site_id ]);
if (!empty($add_site_result)) {
foreach ($add_site_result as $site_item) {
if (!empty($site_item) && $site_item[ 'code' ] < 0) {
return $this->error('', $site_item[ 'message' ]);
}
}
}
return ['code'=>0];
}
}