切换导航条
此项目
正在载入...
登录
李忠强
/
temporaryfood
·
提交
转到一个项目
GitLab
转到仪表盘
项目
活动
文件
提交
管道
0
构建
0
图表
里程碑
问题
0
合并请求
0
成员
标记
维基
派生
网络
创建新的问题
下载为
邮件补丁
差异文件
浏览文件
作者
李忠强
3 years ago
提交
376ca93e7fbaf49f4f8642e3cf18f67d94dae910
1 个父辈
b5dc1d70
更新
隐藏空白字符变更
内嵌
并排对比
正在显示
5 个修改的文件
包含
323 行增加
和
9 行删除
application/api/controller/Order.php
application/api/model/Order.php
application/api/model/OrderAddress.php
application/api/model/OrderGoods.php
thinkphp/library/think/Model.php
application/api/controller/Order.php
查看文件 @
376ca93
...
...
@@ -7,6 +7,8 @@ namespace app\api\controller;
use
app\api\model\GoodsSpec
;
use
app\api\model\SpecValue
;
use
app\common\controller\Api
;
use
think\Db
;
use
think\exception\PDOException
;
/**
* 订单
...
...
@@ -18,7 +20,6 @@ class Order extends Api
/**
* @ApiTitle (订单列表)
* @ApiSummary ([{"goods_id":22,"goods_sku_id":106,"number":2},{"goods_id":23,"goods_sku_id":66,"number":2}])
* @ApiMethod (POST)
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
* @ApiParams (name="type", type="integer", required=true, description="类型1全部2待付款3待发货4待收货5待评价")
...
...
@@ -26,6 +27,41 @@ class Order extends Api
* @ApiReturn ({
'code':'1',
'msg':'返回成功'
'data':
"total": 1, 总条数
"per_page": 5, 每页数量
"current_page": 1, 当前页
"last_page": 1, 最后一页
"data": [
{
"id": 1, 订单id
"order_no": "adsadasdas", 订单编号
"discount_price": "0.00", 优惠金额
"pay_price": "0.00", 实付价格
"pay_status": "10", 10未支付20已支付
"freight_status": "10", 10未发货20已发货
"receipt_status": "10", 10未收货20已收货
"order_status": "10", 10进行中20已取消30已完成
"total_sum": 0, 商品总数量
"goods": [
{
"goods_name": "asdasd", 商品名
"goods_attr": "1", 规格名
"total_num": 0, 数量
"total_price": "0.00", 价格
"image_text": "" 图片
},
{
"goods_name": "asdasd",
"goods_attr": "1",
"total_num": 0,
"total_price": "0.00",
"image_text": ""
}
],
"createtime_text": "" 时间
}
]
})
*/
public
function
orderList
()
...
...
@@ -34,12 +70,11 @@ class Order extends Api
$page
=
$this
->
request
->
post
(
'page'
,
1
);
if
(
!
in_array
(
$type
,[
1
,
2
,
3
,
4
,
5
]))
$this
->
error
(
'type参数不合法'
);
if
(
!
is_numeric
(
$page
))
$this
->
error
(
'页数不合法'
);
$model
=
new
\app\api\model\Order
();
switch
(
$type
){
case
1
:
$where
=
[
'fa_litestore_order.status'
=>
'normal'
,
'fa_litestore_order.user_id'
=>
1
,
'fa_litestore_order.user_id'
=>
$this
->
auth
->
id
,
];
break
;
case
2
:
...
...
@@ -71,11 +106,26 @@ class Order extends Api
];
break
;
}
$model
=
new
\app\api\model\Order
();
$list
=
$model
->
with
([
'goods'
])
->
where
(
$where
)
->
order
(
'id'
,
'desc'
)
->
paginate
(
5
,
false
,[
'page'
=>
$page
]);
->
paginate
(
5
,
false
,[
'page'
=>
$page
])
->
each
(
function
(
$item
,
$key
){
$sum
=
0
;
foreach
(
$item
->
getRelation
(
'goods'
)
as
$key
=>
$value
){
$sum
+=
$value
[
'total_num'
];
$value
->
visible
([
'goods_name'
,
'goods_attr'
,
'total_num'
,
'total_price'
]);
}
$item
[
'total_sum'
]
=
$sum
;
$item
->
visible
([
'goods'
,
'total_sum'
,
'order_no'
,
'id'
,
'pay_price'
,
'discount_price'
,
'pay_status'
,
'order_status'
,
'receipt_status'
,
'freight_status'
]);
});
$this
->
success
(
'订单列表'
,
$list
);
}
...
...
@@ -91,36 +141,64 @@ class Order extends Api
* @ApiReturn ({
'code':'1',
'msg':'返回成功'
'data':
"list": [
{
"goods_id": 22, 商品id
"goods_name": "Mate 20 华为 HUAWEI ", 商品名称
"spec_type": "20", 20多规格10单规格
"sku_id": 106, 规格id
"sku_price": "6099.00", 规格单价
"sku_name": "极光色 8GB+128GB", 规格名称
"number": 2, 数量
"image_text": "", 图片
},
{
"goods_id": 23,
"goods_name": "MacBook Pro 13寸",
"spec_type": "20",
"sku_id": 66,
"sku_price": "12688.00",
"sku_name": "天空灰",
"number": 2,
"image_text": "",
}
],
"price": "37574.00" 总价
})
*/
public
function
orderCalculation
()
{
$json
=
$this
->
request
->
post
(
'data_json'
);
if
(
!
$json
)
$this
->
error
(
'data_json参数不能为空'
);
$json
=
'[{"goods_id":22,"goods_sku_id":106,"number":2},{"goods_id":23,"goods_sku_id":66,"number":2}]'
;
//
$json = '[{"goods_id":22,"goods_sku_id":106,"number":2},{"goods_id":23,"goods_sku_id":66,"number":2}]';
$data
=
json_decode
(
$json
,
true
);
$goodsmodel
=
new
\app\api\model\Goods
();
$skumodel
=
new
GoodsSpec
();
$specmodel
=
new
SpecValue
();
$goods_array
=
[];
$sum_price
=
0
;
$goods_array
=
[];
//商品列表
$sum_price
=
0
;
//总价格
foreach
(
$data
as
$key
=>
$value
){
if
(
!
is_numeric
(
$value
[
'goods_id'
])
||
!
is_numeric
(
$value
[
'goods_sku_id'
])
||
!
is_numeric
(
$value
[
'number'
])){
$this
->
error
(
'参数不合法'
);
}
$goods
=
$goodsmodel
->
where
(
'goods_id'
,
$value
[
'goods_id'
])
->
field
(
'goods_id,goods_name,image,spec_type'
)
->
find
();
if
(
!
$goods
)
$this
->
error
(
'商品不存在'
);
$goods
->
visibleAppend
([
'image_text'
]);
$goods
->
hidden
([
'image'
]);
$sku
=
$skumodel
->
where
(
'goods_spec_id'
,
$value
[
'goods_sku_id'
])
->
field
(
'goods_spec_id,spec_sku_id,goods_price'
)
->
find
();
if
(
!
$sku
)
$this
->
error
(
'商品规格不存在'
);
$sku
->
unsetAppend
();
$goods
[
'sku_id'
]
=
$sku
[
'goods_spec_id'
];
$goods
[
'sku_price'
]
=
$sku
[
'goods_price'
];
if
(
$goods
[
'spec_type'
]
==
10
){
$goods
[
'sku_name'
]
=
''
;
$goods
[
'sku_name'
]
=
''
;
//规格名
}
else
{
$ids
=
explode
(
'_'
,
$sku
[
'spec_sku_id'
]);
$sku_name
=
$specmodel
->
whereIn
(
'id'
,
$ids
)
->
column
(
'spec_value'
);
$goods
[
'sku_name'
]
=
implode
(
' '
,
$sku_name
);
$goods
[
'sku_name'
]
=
implode
(
' '
,
$sku_name
);
//规格名
}
$goods
[
'number'
]
=
$value
[
'number'
];
$goods_array
[]
=
$goods
;
...
...
@@ -128,4 +206,129 @@ class Order extends Api
}
$this
->
success
(
'下单页详情'
,[
'list'
=>
$goods_array
,
'price'
=>
$sum_price
]);
}
/**
* @ApiTitle (下单)
* @ApiMethod (POST)
* @ApiSummary ([{"goods_id":22,"goods_sku_id":106,"number":2},{"goods_id":23,"goods_sku_id":66,"number":2}])
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
* @ApiParams (name="data_json", type="string", required=true, description="下单的商品json数据")
* @ApiParams (name="goods_id", type="integer", required=false, description="商品id 此值不传 json数组注释用")
* @ApiParams (name="goods_sku_id", type="integer", required=false, description="规格id 此值不传 json数组注释用")
* @ApiParams (name="number", type="integer", required=false, description="购买数量 此值不传 json数组注释用")
* @ApiParams (name="coupon_id", type="integer", required=true, description="优惠券id 无优惠券传0")
* @ApiParams (name="address_id", type="integer", required=true, description="地址id")
* @ApiReturn ({
'code':'1',
'msg':'返回成功'
'data':
})
*/
public
function
addOrder
()
{
$json
=
$this
->
request
->
post
(
'data_json'
);
$coupon_id
=
$this
->
request
->
post
(
'coupon_id'
);
$address_id
=
$this
->
request
->
post
(
'address_id'
);
// if (!$json) $this->error('data_json参数不能为空');
$json
=
'[{"goods_id":22,"goods_sku_id":106,"number":2},{"goods_id":23,"goods_sku_id":66,"number":2}]'
;
$address
=
Db
::
name
(
'user_address'
)
->
where
(
'id'
,
$address_id
)
->
where
(
'user_id'
,
1
)
->
find
();
if
(
!
$address
)
$this
->
error
(
'地址不存在'
);
$coupon
=
[];
if
(
$coupon_id
>
0
){
$coupon
=
Db
::
name
(
'user_coupon'
)
->
where
(
'id'
,
$coupon_id
)
->
where
(
'user_id'
,
$this
->
auth
->
id
)
->
find
();
if
(
!
$coupon
)
$this
->
error
(
'优惠券不存在'
);
}
$data
=
json_decode
(
$json
,
true
);
$goodsmodel
=
new
\app\api\model\Goods
();
$skumodel
=
new
GoodsSpec
();
$ordermodel
=
new
\app\api\model\Order
();
$ordergoodsmodel
=
new
\app\api\model\OrderGoods
();
$orderaddressmodel
=
new
\app\api\model\OrderAddress
();
$specmodel
=
new
SpecValue
();
$goods_array
=
[];
//商品列表
$sum_price
=
0
;
//总价格
foreach
(
$data
as
$key
=>
$value
){
if
(
!
is_numeric
(
$value
[
'goods_id'
])
||
!
is_numeric
(
$value
[
'goods_sku_id'
])
||
!
is_numeric
(
$value
[
'number'
])){
$this
->
error
(
'参数不合法'
);
}
$goods
=
$goodsmodel
->
where
(
'goods_id'
,
$value
[
'goods_id'
])
->
find
();
if
(
!
$goods
)
$this
->
error
(
'商品不存在'
);
$sku
=
$skumodel
->
where
(
'goods_spec_id'
,
$value
[
'goods_sku_id'
])
->
find
();
if
(
!
$sku
)
$this
->
error
(
'商品规格不存在'
);
if
(
$goods
[
'spec_type'
]
==
10
){
$sku_name
=
''
;
//规格名
}
else
{
$ids
=
explode
(
'_'
,
$sku
[
'spec_sku_id'
]);
$sku_name
=
$specmodel
->
whereIn
(
'id'
,
$ids
)
->
column
(
'spec_value'
);
$sku_name
=
implode
(
' '
,
$sku_name
);
//规格名
}
$goods_array
[]
=
[
'goods_id'
=>
$goods
[
'goods_id'
],
'goods_name'
=>
$goods
[
'goods_name'
],
'image'
=>
$goods
[
'image'
],
'deduct_stock_type'
=>
$goods
[
'deduct_stock_type'
],
'spec_type'
=>
$goods
[
'spec_type'
],
'spec_sku_id'
=>
$sku
[
'spec_sku_id'
],
'goods_spec_id'
=>
$sku
[
'goods_spec_id'
],
'goods_attr'
=>
$sku_name
,
'content'
=>
$goods
[
'content'
],
'goods_no'
=>
$goods
[
'number'
],
'goods_price'
=>
$sku
[
'goods_price'
],
'goods_weight'
=>
$sku
[
'goods_weight'
],
'total_num'
=>
$value
[
'number'
],
'total_price'
=>
bcmul
(
$sku
[
'goods_price'
],
$value
[
'number'
],
2
),
'user_id'
=>
1
,
];
$sum_price
=
bcadd
(
$sum_price
,
bcmul
(
$sku
[
'goods_price'
],
$value
[
'number'
],
2
),
2
);
}
if
(
$coupon
!==
[]
&&
$coupon
[
'full_price'
]
<
$sum_price
)
$this
->
error
(
'优惠券不可使用'
);
$order_address
=
[
'name'
=>
$address
[
'username'
],
'phone'
=>
$address
[
'mobile'
],
'address'
=>
$address
[
'address'
],
'detail'
=>
$address
[
'address_detail'
],
'lng'
=>
$address
[
'lng'
],
'lat'
=>
$address
[
'lat'
],
'user_id'
=>
1
,
];
$order_no
=
'LQ-'
.
time
()
.
mt_rand
(
1000
,
9999
);
$couponprice
=
isset
(
$coupon
[
'price'
])
?
$coupon
[
'price'
]
:
0
;
$order
=
[
'order_no'
=>
$order_no
,
'total_price'
=>
$sum_price
,
'discount_price'
=>
$couponprice
,
'pay_price'
=>
bcadd
(
$sum_price
,
$couponprice
,
2
),
'user_id'
=>
1
];
try
{
Db
::
startTrans
();
$ordermodel
->
save
(
$order
);
foreach
(
$goods_array
as
$key
=>
&
$value
){
$value
[
'order_id'
]
=
$ordermodel
->
id
;
}
$ordergoodsmodel
->
saveAll
(
$goods_array
);
$order_address
[
'order_id'
]
=
$ordermodel
->
id
;
$orderaddressmodel
->
save
(
$order_address
);
Db
::
commit
();
}
catch
(
PDOException
$e
){
Db
::
rollback
();
$this
->
error
(
$e
->
getMessage
());
}
$this
->
success
(
'下单页详情'
,
$ordermodel
->
id
);
}
}
\ No newline at end of file
...
...
application/api/model/Order.php
查看文件 @
376ca93
...
...
@@ -11,6 +11,15 @@ class Order extends Model
protected
$name
=
'litestore_order'
;
protected
$createTime
=
'createtime'
;
protected
$updateTime
=
'updatetime'
;
protected
$append
=
[
'createtime_text'
];
public
function
getCreatetimeTextAttr
(
$value
,
$data
)
{
$value
=
!
empty
(
$data
[
'createtime'
])
?
date
(
'Y-m-d'
,
$data
[
'createtime'
])
:
''
;
return
$value
;
}
public
function
goods
()
{
...
...
application/api/model/OrderAddress.php
0 → 100644
查看文件 @
376ca93
<?php
namespace
app\api\model
;
use
think\Model
;
class
OrderAddress
extends
Model
{
protected
$name
=
'litestore_order_address'
;
protected
$createTime
=
'createtime'
;
protected
$updateTime
=
''
;
}
\ No newline at end of file
...
...
application/api/model/OrderGoods.php
查看文件 @
376ca93
...
...
@@ -11,4 +11,13 @@ class OrderGoods extends Model
protected
$name
=
'litestore_order_goods'
;
protected
$createTime
=
'createtime'
;
protected
$updateTime
=
''
;
protected
$append
=
[
'image_text'
];
public
function
getImageTextAttr
(
$value
,
$data
)
{
$value
=
!
empty
(
$data
[
'image'
])
?
cdnurl
(
$data
[
'image'
],
true
)
:
''
;
return
$value
;
}
}
\ No newline at end of file
...
...
thinkphp/library/think/Model.php
查看文件 @
376ca93
...
...
@@ -2347,4 +2347,83 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
self
::
event
(
'after_delete'
,
$callback
,
$override
);
}
/**
* 删除附加属性
* @author xchen
*/
public
function
unsetAppend
(
$append
=
[]){
if
(
!
count
(
$append
)){
$this
->
append
=
[];
}
else
{
foreach
(
$this
->
append
as
$key
=>
$value
){
if
(
in_array
(
$value
,
$append
)){
unset
(
$this
->
append
[
$key
]);
}
}
}
}
/**
* 展示附加属性
* @author xchen
*/
public
function
visibleAppend
(
$append
=
[]){
if
(
!
count
(
$append
)){
return
;
}
else
{
foreach
(
$this
->
append
as
$key
=>
$value
){
if
(
!
in_array
(
$value
,
$append
)){
unset
(
$this
->
append
[
$key
]);
}
}
}
}
/**
* 显示关联附加属性
* @author xchen
*/
public
function
visibleRelationAppend
(
$name
=
null
,
$append
=
[]){
if
(
is_null
(
$name
)){
return
;
}
elseif
(
$append
==
[]){
return
;
}
elseif
(
array_key_exists
(
$name
,
$this
->
relation
)){
foreach
(
$this
->
relation
[
$name
]
->
append
as
$k
=>
$v
){
if
(
!
in_array
(
$v
,
$append
)){
unset
(
$this
->
relation
[
$name
]
->
append
[
$k
]);
}
}
}
}
/**
* 删除关联附加属性
* @author xchen
*/
public
function
unsetRelationAppend
(
$name
=
null
,
$append
=
[]){
if
(
is_null
(
$name
)){
return
;
}
else
if
(
array_key_exists
(
$name
,
$this
->
relation
)){
if
(
$this
->
relation
[
$name
]){
if
(
$append
){
foreach
(
$this
->
relation
[
$name
]
->
append
as
$k
=>
$v
){
if
(
in_array
(
$v
,
$append
)){
unset
(
$this
->
relation
[
$name
]
->
append
[
$k
]);
}
}
}
else
{
$this
->
relation
[
$name
]
->
append
=
[];
}
}
}
else
{
return
;
}
}
}
...
...
请
注册
或
登录
后发表评论