Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fit-finance
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fitness-server
fit-finance
Commits
46da5b7e
Commit
46da5b7e
authored
Apr 10, 2024
by
程裕兵
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:bind
parent
90315e8b
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
175 additions
and
1 deletions
+175
-1
api/src/main/java/com/jiejing/fitness/finance/api/cashier/StudioCashierApi.java
+10
-0
api/src/main/java/com/jiejing/fitness/finance/api/cashier/StudioCashierApiFallback.java
+12
-0
api/src/main/java/com/jiejing/fitness/finance/api/cashier/request/BindStudioCashierRequest.java
+33
-0
api/src/main/java/com/jiejing/fitness/finance/api/cashier/request/PageStudioCashierRequest.java
+6
-0
api/src/main/java/com/jiejing/fitness/finance/api/cashier/request/UnbindStudioCashierRequest.java
+27
-0
app/src/main/java/com/jiejing/fitness/finance/app/controller/cashier/StudioCashierController.java
+20
-1
repository/src/main/java/com/jiejing/fitness/finance/repository/query/PageBrandCashierRecordQuery.java
+10
-0
repository/src/main/java/com/jiejing/fitness/finance/repository/service/StudioCashierRecordRpService.java
+13
-0
service/src/main/java/com/jiejing/fitness/finance/service/cashier/StudioCashierService.java
+15
-0
service/src/main/java/com/jiejing/fitness/finance/service/cashier/impl/StudioCashierServiceImpl.java
+25
-0
service/src/main/java/com/jiejing/fitness/finance/service/cashier/params/PageStudioCashierParams.java
+3
-0
service/src/main/java/com/jiejing/fitness/finance/service/enums/FinanceErrorEnums.java
+1
-0
No files found.
api/src/main/java/com/jiejing/fitness/finance/api/cashier/StudioCashierApi.java
View file @
46da5b7e
...
...
@@ -2,11 +2,13 @@ package com.jiejing.fitness.finance.api.cashier;
import
com.jiejing.common.model.JsonResult
;
import
com.jiejing.common.model.PageVO
;
import
com.jiejing.fitness.finance.api.cashier.request.BindStudioCashierRequest
;
import
com.jiejing.fitness.finance.api.cashier.request.GetStudioCashierByIdRequest
;
import
com.jiejing.fitness.finance.api.cashier.request.ListStudioCashierByOrderNoRequest
;
import
com.jiejing.fitness.finance.api.cashier.request.ListStudioCashierBySubOrderNoRequest
;
import
com.jiejing.fitness.finance.api.cashier.request.PageStudioCashierRequest
;
import
com.jiejing.fitness.finance.api.cashier.request.PageStudioSettleRequest
;
import
com.jiejing.fitness.finance.api.cashier.request.UnbindStudioCashierRequest
;
import
com.jiejing.fitness.finance.api.cashier.vo.StudioCashierRecordVO
;
import
com.jiejing.fitness.finance.api.cashier.vo.StudioCashierStatisticVO
;
import
com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO
;
...
...
@@ -24,6 +26,14 @@ public interface StudioCashierApi {
String
TAG
=
"【场馆】收银管理"
;
@ApiOperation
(
value
=
"绑定流水"
,
tags
=
{
TAG
})
@PostMapping
(
value
=
"/private/studioCashier/bind"
)
JsonResult
<
Void
>
bind
(
BindStudioCashierRequest
request
);
@ApiOperation
(
value
=
"解绑流水"
,
tags
=
{
TAG
})
@PostMapping
(
value
=
"/private/studioCashier/unbind"
)
JsonResult
<
Void
>
unbind
(
UnbindStudioCashierRequest
request
);
@ApiOperation
(
value
=
"分页筛选收银流水"
,
tags
=
{
TAG
})
@PostMapping
(
value
=
"/private/studioCashier/page"
)
JsonResult
<
PageVO
<
StudioCashierRecordVO
>>
page
(
PageStudioCashierRequest
request
);
...
...
api/src/main/java/com/jiejing/fitness/finance/api/cashier/StudioCashierApiFallback.java
View file @
46da5b7e
...
...
@@ -2,11 +2,13 @@ package com.jiejing.fitness.finance.api.cashier;
import
com.jiejing.common.model.JsonResult
;
import
com.jiejing.common.model.PageVO
;
import
com.jiejing.fitness.finance.api.cashier.request.BindStudioCashierRequest
;
import
com.jiejing.fitness.finance.api.cashier.request.GetStudioCashierByIdRequest
;
import
com.jiejing.fitness.finance.api.cashier.request.ListStudioCashierByOrderNoRequest
;
import
com.jiejing.fitness.finance.api.cashier.request.ListStudioCashierBySubOrderNoRequest
;
import
com.jiejing.fitness.finance.api.cashier.request.PageStudioCashierRequest
;
import
com.jiejing.fitness.finance.api.cashier.request.PageStudioSettleRequest
;
import
com.jiejing.fitness.finance.api.cashier.request.UnbindStudioCashierRequest
;
import
com.jiejing.fitness.finance.api.cashier.vo.StudioCashierRecordVO
;
import
com.jiejing.fitness.finance.api.cashier.vo.StudioCashierStatisticVO
;
import
com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO
;
...
...
@@ -27,6 +29,16 @@ public class StudioCashierApiFallback implements FallbackFactory<StudioCashierAp
public
StudioCashierApi
create
(
Throwable
throwable
)
{
return
new
StudioCashierApi
()
{
@Override
public
JsonResult
<
Void
>
bind
(
BindStudioCashierRequest
request
)
{
return
JsonResult
.
rpcError
();
}
@Override
public
JsonResult
<
Void
>
unbind
(
UnbindStudioCashierRequest
request
)
{
return
JsonResult
.
rpcError
();
}
@Override
public
JsonResult
<
PageVO
<
StudioCashierRecordVO
>>
page
(
PageStudioCashierRequest
request
)
{
return
JsonResult
.
rpcError
();
}
...
...
api/src/main/java/com/jiejing/fitness/finance/api/cashier/request/BindStudioCashierRequest.java
0 → 100644
View file @
46da5b7e
package
com
.
jiejing
.
fitness
.
finance
.
api
.
cashier
.
request
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.util.List
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author chengyubing
* @since 2024/2/29 10:57
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel
(
description
=
"绑定流水"
)
public
class
BindStudioCashierRequest
{
@ApiModelProperty
(
value
=
"收银流水ID"
,
required
=
true
)
@NotEmpty
(
message
=
"收银流水ID不能为空"
)
private
List
<
Long
>
ids
;
@ApiModelProperty
(
value
=
"子订单号"
,
required
=
true
)
@NotBlank
(
message
=
"子订单号不能为空"
)
private
String
subOrderNo
;
}
api/src/main/java/com/jiejing/fitness/finance/api/cashier/request/PageStudioCashierRequest.java
View file @
46da5b7e
...
...
@@ -30,6 +30,12 @@ public class PageStudioCashierRequest {
@ApiModelProperty
(
value
=
"场馆订单号"
)
private
String
orderNo
;
@ApiModelProperty
(
value
=
"场馆业务子订单号"
)
private
String
subOrderNo
;
@ApiModelProperty
(
value
=
"是否存在子订单号, true-存在;false-不存在"
)
private
Boolean
existSubOrderNo
;
@ApiModelProperty
(
value
=
"交易流水号"
)
private
String
transNo
;
...
...
api/src/main/java/com/jiejing/fitness/finance/api/cashier/request/UnbindStudioCashierRequest.java
0 → 100644
View file @
46da5b7e
package
com
.
jiejing
.
fitness
.
finance
.
api
.
cashier
.
request
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.util.List
;
import
javax.validation.constraints.NotEmpty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author chengyubing
* @since 2024/2/29 10:57
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel
(
description
=
"解绑流水"
)
public
class
UnbindStudioCashierRequest
{
@ApiModelProperty
(
value
=
"收银流水ID"
,
required
=
true
)
@NotEmpty
(
message
=
"收银流水ID不能为空"
)
private
List
<
Long
>
ids
;
}
app/src/main/java/com/jiejing/fitness/finance/app/controller/cashier/StudioCashierController.java
View file @
46da5b7e
...
...
@@ -4,11 +4,13 @@ import com.jiejing.common.model.JsonResult;
import
com.jiejing.common.model.PageVO
;
import
com.jiejing.common.utils.convert.BeanUtil
;
import
com.jiejing.fitness.finance.api.cashier.StudioCashierApi
;
import
com.jiejing.fitness.finance.api.cashier.request.BindStudioCashierRequest
;
import
com.jiejing.fitness.finance.api.cashier.request.GetStudioCashierByIdRequest
;
import
com.jiejing.fitness.finance.api.cashier.request.ListStudioCashierByOrderNoRequest
;
import
com.jiejing.fitness.finance.api.cashier.request.ListStudioCashierBySubOrderNoRequest
;
import
com.jiejing.fitness.finance.api.cashier.request.PageStudioCashierRequest
;
import
com.jiejing.fitness.finance.api.cashier.request.PageStudioSettleRequest
;
import
com.jiejing.fitness.finance.api.cashier.request.UnbindStudioCashierRequest
;
import
com.jiejing.fitness.finance.api.cashier.vo.StudioCashierRecordVO
;
import
com.jiejing.fitness.finance.api.cashier.vo.StudioCashierStatisticVO
;
import
com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO
;
...
...
@@ -33,6 +35,22 @@ public class StudioCashierController implements StudioCashierApi {
@Resource
private
StudioCashierService
studioCashierService
;
@ApiOperation
(
value
=
"绑定流水"
,
tags
=
{
TAG
})
@PostMapping
(
value
=
"/private/studioCashier/bind"
)
@Override
public
JsonResult
<
Void
>
bind
(
@Valid
@RequestBody
BindStudioCashierRequest
request
)
{
studioCashierService
.
bind
(
request
.
getIds
(),
request
.
getSubOrderNo
());
return
JsonResult
.
success
();
}
@ApiOperation
(
value
=
"解绑流水"
,
tags
=
{
TAG
})
@PostMapping
(
value
=
"/private/studioCashier/unbind"
)
@Override
public
JsonResult
<
Void
>
unbind
(
@Valid
@RequestBody
UnbindStudioCashierRequest
request
)
{
studioCashierService
.
unbind
(
request
.
getIds
());
return
JsonResult
.
success
();
}
@ApiOperation
(
value
=
"分页筛选收银流水"
,
tags
=
{
TAG
})
@PostMapping
(
value
=
"private/studioCashier/page"
)
@Override
...
...
@@ -45,7 +63,8 @@ public class StudioCashierController implements StudioCashierApi {
@ApiOperation
(
value
=
"统计收银流水金额"
,
tags
=
{
TAG
})
@PostMapping
(
value
=
"/private/studioCashier/statistic"
)
@Override
public
JsonResult
<
StudioCashierStatisticVO
>
statistic
(
@Valid
@RequestBody
PageStudioCashierRequest
request
)
{
public
JsonResult
<
StudioCashierStatisticVO
>
statistic
(
@Valid
@RequestBody
PageStudioCashierRequest
request
)
{
PageStudioCashierParams
params
=
BeanUtil
.
map
(
request
,
PageStudioCashierParams
.
class
);
return
JsonResult
.
success
(
studioCashierService
.
statistic
(
params
));
}
...
...
repository/src/main/java/com/jiejing/fitness/finance/repository/query/PageBrandCashierRecordQuery.java
View file @
46da5b7e
...
...
@@ -22,6 +22,16 @@ public class PageBrandCashierRecordQuery {
private
String
orderNo
;
/**
* 场馆业务子订单号
*/
private
String
subOrderNo
;
/**
* 是否存在子订单号, true-存在;false-不存在
*/
private
Boolean
existSubOrderNo
;
/**
* 交易流水号
*/
private
String
transNo
;
...
...
repository/src/main/java/com/jiejing/fitness/finance/repository/service/StudioCashierRecordRpService.java
View file @
46da5b7e
...
...
@@ -29,6 +29,7 @@ import java.util.Date;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
import
org.springframework.data.domain.Page
;
...
...
@@ -60,6 +61,18 @@ public class StudioCashierRecordRpService extends
if
(
StringUtil
.
isNotBlank
(
query
.
getOrderNo
()))
{
wrapper
.
eq
(
StudioCashierRecord
.
ORDER_NO
,
query
.
getOrderNo
());
}
if
(
StringUtil
.
isNotBlank
(
query
.
getSubOrderNo
()))
{
wrapper
.
eq
(
StudioCashierRecord
.
SUB_ORDER_NO
,
query
.
getSubOrderNo
());
}
if
(
Objects
.
nonNull
(
query
.
getExistSubOrderNo
()))
{
if
(
query
.
getExistSubOrderNo
())
{
// 存在
wrapper
.
ne
(
StudioCashierRecord
.
SUB_ORDER_NO
,
""
);
}
else
{
// 不存在
wrapper
.
eq
(
StudioCashierRecord
.
SUB_ORDER_NO
,
""
);
}
}
if
(
StringUtil
.
isNotBlank
(
query
.
getTransNo
()))
{
wrapper
.
eq
(
StudioCashierRecord
.
TRANS_NO
,
query
.
getTransNo
());
}
...
...
service/src/main/java/com/jiejing/fitness/finance/service/cashier/StudioCashierService.java
View file @
46da5b7e
...
...
@@ -15,6 +15,21 @@ import java.util.List;
public
interface
StudioCashierService
{
/**
* 绑定收银流水
*
* @param ids 流水ID集合
* @param subOrderNo 业务子订单号
*/
void
bind
(
List
<
Long
>
ids
,
String
subOrderNo
);
/**
* 解绑收银流水
*
* @param ids 流水ID集合
*/
void
unbind
(
List
<
Long
>
ids
);
/**
* 查询详情
*
* @param id ID
...
...
service/src/main/java/com/jiejing/fitness/finance/service/cashier/impl/StudioCashierServiceImpl.java
View file @
46da5b7e
package
com
.
jiejing
.
fitness
.
finance
.
service
.
cashier
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.jiejing.common.exception.BizException
;
import
com.jiejing.common.model.PageVO
;
import
com.jiejing.common.utils.collection.CollectionUtil
;
import
com.jiejing.common.utils.convert.BeanUtil
;
import
com.jiejing.common.utils.text.StringUtil
;
import
com.jiejing.fitness.finance.api.cashier.vo.StudioCashierRecordVO
;
import
com.jiejing.fitness.finance.api.cashier.vo.StudioCashierStatisticVO
;
import
com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO
;
...
...
@@ -16,11 +19,15 @@ import com.jiejing.fitness.finance.service.cashier.StudioCashierService;
import
com.jiejing.fitness.finance.service.cashier.convert.CashierConvert
;
import
com.jiejing.fitness.finance.service.cashier.params.PageStudioCashierParams
;
import
com.jiejing.fitness.finance.service.cashier.params.PageStudioSettleParams
;
import
com.jiejing.fitness.finance.service.enums.FinanceErrorEnums
;
import
java.util.Date
;
import
java.util.List
;
import
javax.annotation.Resource
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.data.domain.Page
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
/**
* @author chengyubing
...
...
@@ -36,6 +43,24 @@ public class StudioCashierServiceImpl implements StudioCashierService {
@Resource
private
StudioSettleRecordRpService
studioSettleRecordRpService
;
@Transactional
(
propagation
=
Propagation
.
REQUIRED
,
rollbackFor
=
Exception
.
class
)
@Override
public
void
bind
(
List
<
Long
>
ids
,
String
subOrderNo
)
{
List
<
StudioCashierRecord
>
records
=
studioCashierRecordRpService
.
getListByIds
(
ids
);
if
(
records
.
stream
().
anyMatch
(
e
->
StringUtil
.
isNotBlank
(
e
.
getSubOrderNo
())))
{
throw
new
BizException
(
FinanceErrorEnums
.
EXIST_BIND_RECORD
);
}
studioCashierRecordRpService
.
updateByIds
(
StudioCashierRecord
.
builder
().
subOrderNo
(
subOrderNo
).
updateTime
(
new
Date
()).
build
(),
ids
);
}
@Transactional
(
propagation
=
Propagation
.
REQUIRED
,
rollbackFor
=
Exception
.
class
)
@Override
public
void
unbind
(
List
<
Long
>
ids
)
{
studioCashierRecordRpService
.
updateByIds
(
StudioCashierRecord
.
builder
().
subOrderNo
(
""
).
updateTime
(
new
Date
()).
build
(),
ids
);
}
@Override
public
StudioCashierRecordVO
getById
(
Long
id
)
{
StudioCashierRecord
record
=
studioCashierRecordRpService
.
getById
(
id
).
orElse
(
null
);
...
...
service/src/main/java/com/jiejing/fitness/finance/service/cashier/params/PageStudioCashierParams.java
View file @
46da5b7e
...
...
@@ -30,6 +30,9 @@ public class PageStudioCashierParams {
@ApiModelProperty
(
value
=
"场馆业务子订单号"
)
private
String
subOrderNo
;
@ApiModelProperty
(
value
=
"是否存在子订单号, true-存在;false-不存在"
)
private
Boolean
existSubOrderNo
;
@ApiModelProperty
(
value
=
"交易流水号"
)
private
String
transNo
;
...
...
service/src/main/java/com/jiejing/fitness/finance/service/enums/FinanceErrorEnums.java
View file @
46da5b7e
...
...
@@ -24,6 +24,7 @@ public enum FinanceErrorEnums implements BaseBizError {
MERCHANT_NOT_OPEN
(
"未进件"
),
NOT_SUPPORT_FILE_TYPE
(
"不支持的文件类型"
),
EXIST_PROCESS_APPLY
(
"存在处理中的申请"
),
EXIST_BIND_RECORD
(
"存在已经绑定的流水"
),
;
@Getter
...
...
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