first commit
This commit is contained in:
324
app/api/logic/ItemLogic.php
Normal file
324
app/api/logic/ItemLogic.php
Normal file
@@ -0,0 +1,324 @@
|
||||
<?php
|
||||
namespace app\api\logic;
|
||||
|
||||
use app\common\logic\BaseLogic;
|
||||
use app\common\service\{UtilsService,ConfigService,FileService};
|
||||
use app\common\model\item\{Item,ItemRecord};
|
||||
use app\common\model\finance\{UserFinance};
|
||||
use app\common\model\user\{User};
|
||||
use app\common\model\member\UserMember;
|
||||
use app\common\model\decorate\{DecorateHint};
|
||||
use app\common\model\setting\Language;
|
||||
use think\facade\Config;
|
||||
use think\facade\{Db};
|
||||
|
||||
|
||||
/**
|
||||
* 项目逻辑
|
||||
* Class ItemLogic
|
||||
* @package app\api\logic
|
||||
*/
|
||||
class ItemLogic extends BaseLogic
|
||||
{
|
||||
|
||||
/**
|
||||
* @notes 首页数据
|
||||
* @param $params
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @author BD
|
||||
* @date 2024/02/22 10:54
|
||||
*/
|
||||
public static function getIndexData(array $params)
|
||||
{
|
||||
// 获取今天0点的时间戳
|
||||
$todayStart = strtotime(date('Y-m-d 00:00:00'));
|
||||
|
||||
$field_item = ['id','title','image','rate','cycle','progress','type','member_id','langs'];
|
||||
$items = Item::field($field_item)
|
||||
->append(['vip_name'])
|
||||
->where(['is_show' => 1])
|
||||
->order(['sort' => 'desc', 'id' => 'desc'])
|
||||
->select()
|
||||
->toArray();
|
||||
foreach ($items as &$item) {
|
||||
$item['progress'] = round($item['progress'],2);
|
||||
//多语言替换
|
||||
$data = UtilsService::get_langs_data($item['langs'],$params['lang']);
|
||||
$data_title = '';
|
||||
$data_image = '';
|
||||
|
||||
if(count($data) > 0){
|
||||
$data_title = $data['title'];
|
||||
$data_image = $data['image'];
|
||||
}
|
||||
|
||||
$item['title'] = $data_title;
|
||||
$item['image'] = FileService::getFileUrl($data_image);
|
||||
unset($item['langs']);
|
||||
}
|
||||
|
||||
$user = User::where(['id' => $params['user_id']])->findOrEmpty();
|
||||
//查询会员等级
|
||||
$member_id = UtilsService::get_user_member_id($params['user_id']);
|
||||
$userMember = UserMember::where(['id' => $member_id])
|
||||
->field('id, name, logo, bg_img, text_color, money, level1_num, lh_min, lh_max, lh_num')
|
||||
->findOrEmpty();
|
||||
|
||||
$user_res['member'] = $userMember;
|
||||
$user_res['balance'] = $user['user_money'];
|
||||
$user_res['totalMoney'] = ItemRecord::where(['user_id' => $params['user_id'],'status' => 1])->sum('money');
|
||||
$user_res['todayIncome'] = UserFinance::where(['user_id' => $params['user_id'],'change_type' => 17])->where("create_time > $todayStart")->sum('change_amount');
|
||||
$user_res['totalIncome'] = $user['total_income_invest'];
|
||||
|
||||
return [
|
||||
'items' => $items,
|
||||
'user' => $user_res,
|
||||
// 服务器时间
|
||||
'server_date' => date('Y/m/d H:i:s'),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 项目详情
|
||||
* @param $params
|
||||
* @return array
|
||||
* @author BD
|
||||
* @date 2024/02/22 10:54
|
||||
*/
|
||||
public static function detail($params)
|
||||
{
|
||||
try {
|
||||
// 获取今天0点的时间戳
|
||||
$todayStart = strtotime(date('Y-m-d 00:00:00'));
|
||||
|
||||
$item = Item::field("id,type,title,image,content,min_money,max_money,point,rate,cycle,progress,langs,member_id")->append(['vip_name'])->where(['is_show' => 1])->findOrEmpty($params['id']);
|
||||
if($item->isEmpty()){
|
||||
throw new \Exception('network.parameterAbnormality');
|
||||
}
|
||||
$item['progress'] = round($item['progress'],2);
|
||||
|
||||
//多语言替换
|
||||
$data = UtilsService::get_langs_data($item['langs'],$params['lang']);
|
||||
$data_title = '';
|
||||
$data_image = '';
|
||||
$data_content = '';
|
||||
|
||||
if(count($data) > 0){
|
||||
$data_title = $data['title'];
|
||||
$data_image = $data['image'];
|
||||
$data_content = $data['content'];
|
||||
}
|
||||
|
||||
$item['title'] = $data_title;
|
||||
$item['image'] = FileService::getFileUrl($data_image);
|
||||
$item['content'] = get_file_domain($data_content);
|
||||
unset($item['langs']);
|
||||
|
||||
$user = User::where(['id' => $params['user_id']])->findOrEmpty();
|
||||
//查询初始交易密码
|
||||
$need_set_pwd = 0;
|
||||
$pwd_pay = ConfigService::get('login', 'password_pay');
|
||||
$passwordSalt = Config::get('project.unique_identification');
|
||||
if ($user['password_pay'] == create_password($pwd_pay, $passwordSalt)) {
|
||||
$need_set_pwd = 1;
|
||||
}
|
||||
|
||||
//查询会员等级
|
||||
$member_id = UtilsService::get_user_member_id($params['user_id']);
|
||||
$userMember = UserMember::where(['id' => $member_id])
|
||||
->field('id,item_num,item_add_rate')
|
||||
->findOrEmpty();
|
||||
|
||||
$user_res['member'] = $userMember;
|
||||
$user_res['balance'] = $user['user_money'];
|
||||
|
||||
//今日投资次数
|
||||
$user_res['today_order'] = ItemRecord::where("create_time > $todayStart")
|
||||
->where(['user_id' => $params['user_id']])
|
||||
->count();
|
||||
|
||||
return [
|
||||
'item' => $item,
|
||||
'user' => $user_res,
|
||||
'need_set_pwd' => $need_set_pwd,
|
||||
];
|
||||
} catch (\Exception $e) {
|
||||
self::setError($e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 合同详情
|
||||
* @param $params
|
||||
* @return array
|
||||
* @author BD
|
||||
* @date 2024/02/22 10:54
|
||||
*/
|
||||
public static function contract($params)
|
||||
{
|
||||
try {
|
||||
$itemRecord = ItemRecord::where(['id' => $params['id']])->findOrEmpty();
|
||||
if($itemRecord->isEmpty()){
|
||||
throw new \Exception('network.parameterAbnormality');
|
||||
}
|
||||
|
||||
$user = User::where(['id' => $params['user_id']])->findOrEmpty();
|
||||
|
||||
//合同内容
|
||||
$contract = DecorateHint::findOrEmpty(23)->toArray();
|
||||
|
||||
$end_time = date('Y-m-d', $itemRecord['end_time']);
|
||||
$date = date('Y-m-d', strtotime($itemRecord['create_time']));
|
||||
|
||||
//多语言替换
|
||||
$data = UtilsService::get_langs_data($contract['langs'],$params['lang']);
|
||||
$content = get_file_domain($data['content']);
|
||||
|
||||
$content = str_replace('{sn}', $itemRecord['contract_no'], $content);
|
||||
$content = str_replace('{username}', $user['country_code'].' '.$user['account'], $content);
|
||||
$content = str_replace('{money}', $itemRecord['money'], $content);
|
||||
$content = str_replace('{rate}', $itemRecord['rate'], $content);
|
||||
$content = str_replace('{total_income}', $itemRecord['total_income'], $content);
|
||||
$content = str_replace('{date_e}', $end_time, $content);
|
||||
$content = str_replace('{date}', $date, $content);
|
||||
|
||||
return [
|
||||
'content' => $content,
|
||||
'type' => $itemRecord['type'],
|
||||
'cycle' => $itemRecord['cycle'],
|
||||
'contract_y_logo' => FileService::getFileUrl($contract['contract_y_logo']),
|
||||
'contract_b_logo' => FileService::getFileUrl($contract['contract_b_logo']),
|
||||
|
||||
];
|
||||
} catch (\Exception $e) {
|
||||
self::setError($e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 投资
|
||||
* @param array $params
|
||||
* @return array|false
|
||||
* @author BD
|
||||
* @date 2024/02/22 10:54
|
||||
*/
|
||||
public static function invest(array $params)
|
||||
{
|
||||
Db::startTrans();
|
||||
try {
|
||||
// 获取今天0点的时间戳
|
||||
// $todayStart = strtotime(date('Y-m-d 00:00:00'));
|
||||
|
||||
$user = User::where(['id' => $params['user_id']]) -> findOrEmpty();
|
||||
|
||||
$item = Item::where(['is_show' => 1])->findOrEmpty($params['id']);
|
||||
//多语言替换
|
||||
$data = UtilsService::get_langs_data($item['langs'],$params['lang']);
|
||||
$data_title = '';
|
||||
$data_image = '';
|
||||
$data_content = '';
|
||||
|
||||
if(count($data) > 0){
|
||||
$data_title = $data['title'];
|
||||
$data_image = $data['image'];
|
||||
$data_content = $data['content'];
|
||||
}
|
||||
|
||||
$item['title'] = $data_title;
|
||||
$item['image'] = $data_image;
|
||||
$item['content'] = $data_content;
|
||||
|
||||
//查询会员等级
|
||||
$member_id = UtilsService::get_user_member_id($params['user_id']);
|
||||
$userMember = UserMember::where(['id' => $member_id])->findOrEmpty();
|
||||
|
||||
//判断加息率
|
||||
if($userMember['item_add_rate'] > 0) $item['rate'] = round($item['rate'] + $userMember['item_add_rate'],2);
|
||||
|
||||
//投资类型
|
||||
// 1每日付息到期还本
|
||||
// 2到期还本付息(日)
|
||||
// 3到期还本付息(时)
|
||||
// 4每时付息到期还本
|
||||
$end_time = time() + ($item['cycle'] * 24 * 60 * 60);//到期时间(天)
|
||||
$total_num = $item['cycle'];
|
||||
$wait_num = $item['cycle'];
|
||||
$total_income = round($params['money'] * $item['rate'] * $item['cycle'] / 100,2);//总收益(每日/时)
|
||||
|
||||
switch($item['type']){
|
||||
case 1:
|
||||
|
||||
break;
|
||||
case 2:
|
||||
$wait_num = 1;
|
||||
$total_income = round($params['money'] * $item['rate'] / 100,2);
|
||||
break;
|
||||
case 3:
|
||||
$wait_num = 1;
|
||||
$total_income = round($params['money'] * $item['rate'] / 100,2);
|
||||
$end_time = time() + ($item['cycle'] * 60 * 60);//到期时间(时)
|
||||
break;
|
||||
case 4:
|
||||
$end_time = time() + ($item['cycle'] * 60 * 60);//到期时间(时)
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
$data = [
|
||||
'sn' => generate_sn(ItemRecord::class, 'sn'),
|
||||
'contract_no' => generate_sn(ItemRecord::class, 'contract_no'),
|
||||
'user_id' => $params['user_id'],
|
||||
'item_id' => $item['id'],
|
||||
'item_title' => $item['title'],
|
||||
'item_image' => FileService::setFileUrl($item['image']),
|
||||
'item_langs' => $item['langs'],
|
||||
'money' => $params['money'],
|
||||
'point' => $item['point'],
|
||||
'rate' => $item['rate'],
|
||||
'cycle' => $item['cycle'],
|
||||
'total_num' => $total_num,
|
||||
'wait_num' => $wait_num,
|
||||
'total_income' => $total_income,
|
||||
'type' => $item['type'],
|
||||
'status' => 1,//状态1进行中2已结束
|
||||
'end_time' => $end_time,//到期时间
|
||||
];
|
||||
$order = ItemRecord::create($data);
|
||||
|
||||
//记录日志
|
||||
UtilsService::user_finance_add(
|
||||
$data['user_id'],
|
||||
16,
|
||||
2,
|
||||
$data['money'],
|
||||
$data['sn']
|
||||
);
|
||||
|
||||
//用户资金修改
|
||||
UtilsService::user_money_change($data['user_id'], 2, $data['money'],'user_money');
|
||||
//累积投资金额
|
||||
UtilsService::user_money_change($data['user_id'], 1, $data['money'],'total_invest');
|
||||
|
||||
//赠送积分
|
||||
if($item['point'] > 0){
|
||||
UtilsService::user_money_change($data['user_id'], 1, $item['point'],'user_point');
|
||||
}
|
||||
|
||||
//更新会员等级
|
||||
UtilsService::set_user_member($params['user_id']);
|
||||
|
||||
Db::commit();
|
||||
return [];
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
self::setError($e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user