Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
stock_new
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sugar
stock_new
Commits
3d6d3313
Commit
3d6d3313
authored
Jun 20, 2024
by
wuxiaoli
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
http://rungit.jxdsy.cn:10000/sugar/stock_new
into dev
parents
a0a36be5
7779accc
Changes
8
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
251 additions
and
179 deletions
+251
-179
application/apicom/common.php
application/apicom/common.php
+99
-85
application/apicom/home/Esop.php
application/apicom/home/Esop.php
+29
-0
application/market/home/Trade.php
application/market/home/Trade.php
+1
-9
application/market/model/Position.php
application/market/model/Position.php
+11
-11
application/money/admin/Esopplan.php
application/money/admin/Esopplan.php
+2
-0
application/money/admin/Esopplanrecord.php
application/money/admin/Esopplanrecord.php
+10
-6
application/money/model/EsopPlan.php
application/money/model/EsopPlan.php
+54
-39
application/money/model/EsopPlanRecord.php
application/money/model/EsopPlanRecord.php
+45
-29
No files found.
application/apicom/common.php
View file @
3d6d3313
This diff is collapsed.
Click to expand it.
application/apicom/home/Esop.php
0 → 100644
View file @
3d6d3313
<?php
namespace
app\apicom\home
;
use
app\money\model\EsopPlan
as
EsopPlanModel
;
use
app\money\model\EsopPlanRecord
as
EsopPlanRecordModel
;
use
think\db
;
use
think\Request
;
class
Esop
extends
Common
{
/**
* 期权计划
* @return [type] [description]
*/
public
function
getEsopPlanList
(){
if
(
!
MID
)
ajaxmsg
(
'登陆后才能进行查询'
,
0
);
// 获取查询条件
$map
=
$this
->
getMap
();
$map
[
'mid'
]
=
MID
;
$order
=
'id desc'
;
$page
=
intval
(
$this
->
request
->
param
(
"page"
));
$page
=
$page
?
$page
:
1
;
$offset
=
$page
;
// 数据列表
$data_list
=
EsopPlanModel
::
getEsopPlanList
(
$map
,
"*"
,
$order
,
$offset
);
ajaxmsg
(
'数据列表'
,
1
,
$data_list
);
}
}
\ No newline at end of file
application/market/home/Trade.php
View file @
3d6d3313
...
@@ -166,15 +166,7 @@ class Trade extends Common
...
@@ -166,15 +166,7 @@ class Trade extends Common
//提交交易费用信息
//提交交易费用信息
$Delivery
=
new
Delivery
;
$Delivery
=
new
Delivery
;
$avail
=
(
$moneyinfo
[
'avail'
])
-
$effectMoney
;
$avail
=
(
$moneyinfo
[
'avail'
])
-
$effectMoney
;
$Qdata
=
z_market
(
$data
[
"gupiao_code"
],
$data
[
'market'
]);
Position
::
addPosition
(
$data
[
'code'
],
$data
[
'market'
],
$data
[
'count'
],
$data
[
'sub_id'
],
$broker
[
'lid'
],
$broker
[
'user'
],
$broker
[
'stockjobber'
]);
//参考成本价
$ck_price
=
Position
::
calculate
(
$data
[
'sub_id'
],
$data
[
"gupiao_code"
],
'price'
);
//买入均价
$buy_average_price
=
Position
::
calculate
(
$data
[
'sub_id'
],
$data
[
"gupiao_code"
],
'average'
);
//参考盈亏
//$data[$k]['ck_profit'] = $item['stock_count'] > 0 ? round(($Qdata['Price']-$data[$k]['buy_average_price'])*$item['stock_count'], 2) : 0;
Position
::
addPosition
(
$data
[
'code'
],
$data
[
'market'
],
$data
[
'count'
],
$data
[
'sub_id'
],
$broker
[
'lid'
],
$broker
[
'user'
],
$broker
[
'stockjobber'
],
$ck_price
,
0
);
//print_r("佣金: ".$commission." 过户费: ".$transfer." 总计:".$effectMoney);Db::rollback();exit;
//print_r("佣金: ".$commission." 过户费: ".$transfer." 总计:".$effectMoney);Db::rollback();exit;
$del_res
=
$Delivery
->
add_m_delivery_order
(
$data
,
$data
[
'count'
],
$data
[
'price'
],
$data
[
'sub_id'
],
$broker
[
'lid'
],
$broker
[
'user'
],
$broker
[
'stockjobber'
],
$commission
,
$transfer
,
$Trust_no
,
$avail
,
$amount
,
$data
[
'model'
]);
$del_res
=
$Delivery
->
add_m_delivery_order
(
$data
,
$data
[
'count'
],
$data
[
'price'
],
$data
[
'sub_id'
],
$broker
[
'lid'
],
$broker
[
'user'
],
$broker
[
'stockjobber'
],
$commission
,
$transfer
,
$Trust_no
,
$avail
,
$amount
,
$data
[
'model'
]);
//print_r($del_res);Db::rollback();exit;
//print_r($del_res);Db::rollback();exit;
...
...
application/market/model/Position.php
View file @
3d6d3313
...
@@ -205,9 +205,9 @@ class Position extends Model{
...
@@ -205,9 +205,9 @@ class Position extends Model{
* $sub_id 子账号
* $sub_id 子账号
* $code 股票代码
* $code 股票代码
*/
*/
public
static
function
getCodePosition
(
$sub_id
,
$code
){
public
static
function
getCodePosition
(
$sub_id
,
$code
,
$market
){
$res
=
Db
::
name
(
'stock_position'
)
$res
=
Db
::
name
(
'stock_position'
)
->
where
([
'sub_id'
=>
$sub_id
,
'gupiao_code'
=>
$code
])
->
where
([
'sub_id'
=>
$sub_id
,
'gupiao_code'
=>
$code
,
'market'
=>
$market
])
->
where
([
'buying'
=>
0
])
->
where
([
'buying'
=>
0
])
->
find
();
->
find
();
if
(
empty
(
$res
)){
return
false
;}
if
(
empty
(
$res
)){
return
false
;}
...
@@ -418,12 +418,13 @@ class Position extends Model{
...
@@ -418,12 +418,13 @@ class Position extends Model{
* $user 证券账户
* $user 证券账户
* $soure 证券来源
* $soure 证券来源
*/
*/
public
static
function
addPosition
(
$code
,
$market
,
$count
,
$sub_id
,
$lid
,
$user
,
$soure
,
$ck_price
,
$Trust_no
)
public
static
function
addPosition
(
$code
,
$market
,
$count
,
$sub_id
,
$lid
,
$user
,
$soure
)
{
{
//
if(!$count) return false;
if
(
!
$count
)
return
false
;
//$canbuy = self::getCanbuyCount($sub_id,$code);
//$canbuy = self::getCanbuyCount($sub_id,$code);
$position
=
self
::
getCodePosition
(
$sub_id
,
$code
);
$position
=
self
::
getCodePosition
(
$sub_id
,
$code
,
$market
);
$canbuy_count
=
$position
[
'canbuy_count'
]
+
$count
;
$canbuy_count
=
$position
[
'canbuy_count'
]
+
$count
;
$new_price
=
round
((
$position
[
'canbuy_count'
]
*
$position
[
'buy_average_price'
]
+
$count
*
$position
[
'ck_price'
])
/
$canbuy_count
,
3
);
$stockinfo
=
z_market
(
$code
,
$market
);
$stockinfo
=
z_market
(
$code
,
$market
);
$data
=
array
();
$data
=
array
();
$data
[
0
][
'sub_id'
]
=
$sub_id
;
$data
[
0
][
'sub_id'
]
=
$sub_id
;
...
@@ -435,14 +436,13 @@ class Position extends Model{
...
@@ -435,14 +436,13 @@ class Position extends Model{
$data
[
0
][
'count'
]
=
$count
;
$data
[
0
][
'count'
]
=
$count
;
$data
[
0
][
'stock_count'
]
=
$position
[
'stock_count'
]
+
$count
;
$data
[
0
][
'stock_count'
]
=
$position
[
'stock_count'
]
+
$count
;
$data
[
0
][
'canbuy_count'
]
=
$position
[
'canbuy_count'
]
+
$count
;
$data
[
0
][
'canbuy_count'
]
=
$position
[
'canbuy_count'
]
+
$count
;
$data
[
0
][
'ck_price'
]
=
self
::
calculate
(
$sub_id
,
$code
,
'price'
);
//参考成本价
$data
[
0
][
'ck_price'
]
=
$new_price
;
//参考成本价;
dump
(
$data
[
0
][
'ck_price'
]);
die
;
$data
[
0
][
'buy_average_price'
]
=
$new_price
;
//买入均价
$data
[
0
][
'buy_average_price'
]
=
self
::
calculate
(
$sub_id
,
$code
,
'average'
);
//买入均价
$data
[
0
][
'ck_profit_price'
]
=
$new_price
;
//参考盈亏成本价
$data
[
0
][
'ck_profit_price'
]
=
''
;
//参考盈亏成本价
$data
[
0
][
'now_price'
]
=
$stockinfo
[
"current_price"
];
//'当前价'
$data
[
0
][
'now_price'
]
=
$stockinfo
[
"current_price"
];
//'当前价'
$data
[
0
][
'market_value'
]
=
$stockinfo
[
"current_price"
]
*
$count
;
//最新市值
$data
[
0
][
'market_value'
]
=
$stockinfo
[
"current_price"
]
*
$count
;
//最新市值
$data
[
0
][
'ck_profit'
]
=
$
count
>
0
?
bcmul
(
strval
(
$stockinfo
[
"current_price"
]
-
$ck_price
),
strval
(
$count
),
2
)
:
0
;
//参考浮动盈亏
$data
[
0
][
'ck_profit'
]
=
$
position
[
'ck_profit'
]
;
//参考浮动盈亏
$data
[
0
][
'profit_rate'
]
=
$
count
>
0
&&
$ck_price
>
0
?
bcdiv
(
strval
(
$data
[
0
][
'ck_profit'
]),
strval
(
$ck_price
*
$count
*
100
),
2
)
:
0
;
//盈亏比例
$data
[
0
][
'profit_rate'
]
=
$
position
[
'profit_rate'
]
;
//盈亏比例
$data
[
0
][
'buying'
]
=
0
;
//买入成功
$data
[
0
][
'buying'
]
=
0
;
//买入成功
$data
[
0
][
'selling'
]
=
0
;
//1、在途卖出
$data
[
0
][
'selling'
]
=
0
;
//1、在途卖出
$data
[
0
][
'gudong_code'
]
=
""
;
//股东代码 无法模拟暂时空
$data
[
0
][
'gudong_code'
]
=
""
;
//股东代码 无法模拟暂时空
...
...
application/money/admin/Esopplan.php
View file @
3d6d3313
...
@@ -82,6 +82,8 @@ class Esopplan extends Admin
...
@@ -82,6 +82,8 @@ class Esopplan extends Admin
$data
=
$this
->
request
->
post
();
$data
=
$this
->
request
->
post
();
$data
[
'create_time'
]
=
time
();
$data
[
'create_time'
]
=
time
();
$data
[
'plan_account'
]
=
$data
[
'plan_account'
]
*
100
;
$data
[
'plan_account'
]
=
$data
[
'plan_account'
]
*
100
;
$data
[
'remain_account'
]
=
$data
[
'plan_account'
]
*
100
;
$data
[
'create_ip'
]
=
get_client_ip
(
1
);
//业务逻辑处理
//业务逻辑处理
$result_up
=
Db
::
name
(
"esop_plan"
)
->
insert
(
$data
);
$result_up
=
Db
::
name
(
"esop_plan"
)
->
insert
(
$data
);
if
(
$result_up
===
1
)
{
if
(
$result_up
===
1
)
{
...
...
application/money/admin/Esopplanrecord.php
View file @
3d6d3313
...
@@ -8,6 +8,7 @@ use app\money\model\EsopPlan as EsopPlanModel;
...
@@ -8,6 +8,7 @@ use app\money\model\EsopPlan as EsopPlanModel;
use
app\money\model\EsopPlanRecord
as
EsopPlanRecordModel
;
use
app\money\model\EsopPlanRecord
as
EsopPlanRecordModel
;
use
app\member\model\Member
as
MemberModel
;
use
app\member\model\Member
as
MemberModel
;
use
app\stock\model\StockList
as
StockListModel
;
use
app\stock\model\StockList
as
StockListModel
;
use
Exception
;
use
think\Db
;
use
think\Db
;
use
think\Hook
;
use
think\Hook
;
use
think\Cache
;
use
think\Cache
;
...
@@ -66,6 +67,7 @@ class EsopplanRecord extends Admin
...
@@ -66,6 +67,7 @@ class EsopplanRecord extends Admin
->
setRowList
(
$data_list
)
->
setRowList
(
$data_list
)
->
fetch
();
// 渲染模板
->
fetch
();
// 渲染模板
}
}
/**
/**
* 自动任务,根据设定的期权计划执行释放期权
* 自动任务,根据设定的期权计划执行释放期权
*/
*/
...
@@ -76,11 +78,13 @@ class EsopplanRecord extends Admin
...
@@ -76,11 +78,13 @@ class EsopplanRecord extends Admin
$where
[
'status'
]
=
1
;
$where
[
'status'
]
=
1
;
//开始释放期权日期不大于当前日期
//开始释放期权日期不大于当前日期
$where
[
'release_time'
]
=
[
'<='
,
date
(
"Y-m-d"
)];
$where
[
'release_time'
]
=
[
'<='
,
date
(
"Y-m-d"
)];
//已释放天数小于总天数,已释放期权小于期权总值,待行权值大于0
//待行权值大于0
$esop_plan_list
=
EsopPlanModel
::
where
(
$where
)
->
where
(
"remain_account>0 and release_account<plan_account and days<duration"
)
->
select
();
$where
[
'remain_account'
]
=
[
'>'
,
0
];
//已释放天数小于总天数,已释放期权小于期权总值
$esop_plan_list
=
EsopPlanModel
::
where
(
$where
)
->
where
(
"release_account<plan_account and days<duration"
)
->
select
();
foreach
(
$esop_plan_list
as
$k
=>
$v
)
{
foreach
(
$esop_plan_list
as
$k
=>
$v
)
{
//更加明细记录判断执行的当天是否已释放过
//更加明细记录判断执行的当天是否已释放过
$esop_plan_record_today
=
EsopPlanRecordModel
::
where
(
"FROM_UNIXTIME(createtime,'%Y-%m-%d')=curdate()"
)
$esop_plan_record_today
=
EsopPlanRecordModel
::
where
(
"FROM_UNIXTIME(create
_
time,'%Y-%m-%d')=curdate()"
)
->
where
([
'type'
=>
1
,
'esop_plan_id'
=>
$v
[
'id'
]])
->
find
();
->
where
([
'type'
=>
1
,
'esop_plan_id'
=>
$v
[
'id'
]])
->
find
();
if
(
!
$esop_plan_record_today
)
{
if
(
!
$esop_plan_record_today
)
{
//计算释放期权金额
//计算释放期权金额
...
@@ -90,7 +94,7 @@ class EsopplanRecord extends Admin
...
@@ -90,7 +94,7 @@ class EsopplanRecord extends Admin
$affect
=
$v
[
'plan_account'
]
%
$v
[
'duration'
];
$affect
=
$v
[
'plan_account'
]
%
$v
[
'duration'
];
}
}
//释放期权,更新期权表
//释放期权,更新期权表
$updateData
[]
=
[
$updateData
=
[
'account'
=>
$v
[
'account'
]
+
$affect
,
'account'
=>
$v
[
'account'
]
+
$affect
,
'days'
=>
$v
[
'days'
]
+
1
,
'days'
=>
$v
[
'days'
]
+
1
,
'remain_account'
=>
$v
[
'plan_account'
]
-
$affect
,
'remain_account'
=>
$v
[
'plan_account'
]
-
$affect
,
...
@@ -98,7 +102,7 @@ class EsopplanRecord extends Admin
...
@@ -98,7 +102,7 @@ class EsopplanRecord extends Admin
];
];
EsopPlanModel
::
where
([
'id'
=>
$v
[
'id'
]])
->
update
(
$updateData
);
EsopPlanModel
::
where
([
'id'
=>
$v
[
'id'
]])
->
update
(
$updateData
);
//写入明细表
//写入明细表
$arr
[]
=
[
$arr
=
[
'mid'
=>
$v
[
'mid'
],
'mid'
=>
$v
[
'mid'
],
'stock_id'
=>
$v
[
'stock_id'
],
'stock_id'
=>
$v
[
'stock_id'
],
'esop_plan_id'
=>
$v
[
'id'
],
'esop_plan_id'
=>
$v
[
'id'
],
...
...
application/money/model/EsopPlan.php
View file @
3d6d3313
<?php
<?php
namespace
app\money\model
;
use
think\helper\Hash
;
use
app\money\model\Role
as
RoleModel
;
use
think\model
;
use
think\Db
;
class
EsopPlan
extends
Model
namespace
app\money\model
;
{
use
think\helper\Hash
;
use
app\money\model\Role
as
RoleModel
;
use
think\model
;
use
think\Db
;
class
EsopPlan
extends
Model
{
// 设置当前模型对应的完整数据表名称
// 设置当前模型对应的完整数据表名称
protected
$table
=
'__ESOP_
_PLAN__'
;
protected
$table
=
'__ESOP
_PLAN__'
;
public
static
function
getAll
(
$map
=
[],
$order
=
''
)
public
static
function
getAll
(
$map
=
[],
$order
=
''
)
{
{
$data_list
=
self
::
view
(
'esop_plan p'
,
true
)
$data_list
=
self
::
view
(
'esop_plan p'
,
true
)
->
view
(
'member'
,
'mobile, name, id_card'
,
'member.id=p.mid'
,
'left'
)
->
view
(
'member'
,
'mobile, name, id_card'
,
'member.id=p.mid'
,
'left'
)
...
@@ -20,7 +22,7 @@
...
@@ -20,7 +22,7 @@
->
where
(
$map
)
->
where
(
$map
)
->
order
(
$order
)
->
order
(
$order
)
->
paginate
()
->
paginate
()
->
each
(
function
(
$item
,
$key
)
{
->
each
(
function
(
$item
,
$key
)
{
$item
->
account
=
money_convert
(
$item
->
account
);
$item
->
account
=
money_convert
(
$item
->
account
);
$item
->
plan_account
=
money_convert
(
$item
->
plan_account
);
$item
->
plan_account
=
money_convert
(
$item
->
plan_account
);
$item
->
remain_account
=
money_convert
(
$item
->
remain_account
);
$item
->
remain_account
=
money_convert
(
$item
->
remain_account
);
...
@@ -28,16 +30,29 @@
...
@@ -28,16 +30,29 @@
});
});
return
$data_list
;
return
$data_list
;
}
}
/
*
/*
*
* 释放时自动更新期权计划信息
*获取期权计划列表
*
* @author 2024-06-20
*/
*/
public
static
function
plan_up
(
$id
,
$mmoney
){
public
static
function
getEsopPlanList
(
$where
=
[],
$field
=
'*'
,
$order
=
'id asc'
,
$offset
,
$pagesize
=
15
)
return
self
::
where
([
"id"
=>
$id
])
->
update
(
$mmoney
);
{
}
$esop_plan_list
=
self
::
view
(
'esop_plan ep'
,
true
)
->
view
(
"stock_list sl"
,
'title,code'
,
'stock_list.id=ep.stock_id'
,
'left'
)
->
field
([
"CONCAT(ROUND(release_account / plan_account * 100, 2), ' % ')"
=>
'accuracy'
])
->
field
([
"FROM_UNIXTIME(create_time,'%Y-%m-%d %T')"
=>
'create_time'
])
->
where
(
$where
)
->
field
(
$field
)
->
order
(
$order
)
->
page
(
$offset
,
$pagesize
)
->
select
()
->
each
(
function
(
$item
,
$key
)
{
$item
->
account
=
money_convert
(
$item
->
account
);
$item
->
plan_account
=
money_convert
(
$item
->
plan_account
);
$item
->
remain_account
=
money_convert
(
$item
->
remain_account
);
$item
->
release_account
=
money_convert
(
$item
->
release_account
);
});;
return
$esop_plan_list
;
}
}
?>
}
application/money/model/EsopPlanRecord.php
View file @
3d6d3313
<?php
<?php
namespace
app\money\model
;
use
think\helper\Hash
;
use
app\money\model\Role
as
RoleModel
;
use
think\model
;
use
think\Db
;
class
EsopPlanRecord
extends
Model
namespace
app\money\model
;
{
use
think\helper\Hash
;
use
app\money\model\Role
as
RoleModel
;
use
think\model
;
use
think\Db
;
class
EsopPlanRecord
extends
Model
{
// 设置当前模型对应的完整数据表名称
// 设置当前模型对应的完整数据表名称
protected
$table
=
'__ESOP__PLAN__Record
__'
;
protected
$table
=
'__ESOP_PLAN_RECORD
__'
;
public
static
function
getAll
(
$map
=
[],
$order
=
''
)
public
static
function
getAll
(
$map
=
[],
$order
=
''
)
{
{
$data_list
=
self
::
view
(
'esop_plan_record pr'
,
true
)
$data_list
=
self
::
view
(
'esop_plan_record pr'
,
true
)
->
view
(
'member'
,
'mobile, name, id_card'
,
'member.id=pr.mid'
,
'left'
)
->
view
(
'member'
,
'mobile, name, id_card'
,
'member.id=pr.mid'
,
'left'
)
...
@@ -20,13 +22,27 @@
...
@@ -20,13 +22,27 @@
->
where
(
$map
)
->
where
(
$map
)
->
order
(
$order
)
->
order
(
$order
)
->
paginate
()
->
paginate
()
->
each
(
function
(
$item
,
$key
)
{
->
each
(
function
(
$item
,
$key
)
{
$item
->
affect
=
money_convert
(
$item
->
affect
);
$item
->
affect
=
money_convert
(
$item
->
affect
);
$item
->
surplus
=
money_convert
(
$item
->
surplus
);
$item
->
surplus
=
money_convert
(
$item
->
surplus
);
});
});
return
$data_list
;
return
$data_list
;
}
}
/**
*获取期权明细记录列表
* @author 2024-06-20
*/
public
static
function
getEsopPlanRecordList
(
$where
=
[],
$field
=
'*'
,
$order
=
'id asc'
)
{
$esop_plan_list
=
self
::
view
(
'esop_plan_record epr'
,
true
)
->
view
(
"stock_list sl"
,
'title,code'
,
'stock_list.id=ep.stock_id'
,
'left'
)
->
view
(
"esop_plan ep"
,
'title,code'
,
'stock_list.id=ep.stock_id'
,
'left'
)
->
where
(
$where
)
->
field
(
$field
)
->
order
(
$order
)
->
paginate
();
return
$esop_plan_list
;
}
}
?>
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment