Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
I
ims-ci-test
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
test-ci
ims-ci-test
Commits
a25f0ccf
提交
a25f0ccf
authored
8月 21, 2023
作者:
张小凤
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
OrderAndService(add)
上级
80602e01
隐藏空白字符变更
内嵌
并排
正在显示
47 个修改的文件
包含
3242 行增加
和
65 行删除
+3242
-65
pom.xml
csf-common/csf-common-model/pom.xml
+28
-27
GetOrderNumberDTO.java
...in/java/com/mmc/csf/infomation/dto/GetOrderNumberDTO.java
+40
-0
PayWalletDTO.java
...rc/main/java/com/mmc/csf/infomation/dto/PayWalletDTO.java
+85
-0
PilotCertificationInteriorDTO.java
...mmc/csf/infomation/dto/PilotCertificationInteriorDTO.java
+32
-0
ServiceArriveSceneDTO.java
...ava/com/mmc/csf/infomation/dto/ServiceArriveSceneDTO.java
+43
-0
ServiceEvaluateDTO.java
...n/java/com/mmc/csf/infomation/dto/ServiceEvaluateDTO.java
+47
-0
ServiceFulfilATaskDTO.java
...ava/com/mmc/csf/infomation/dto/ServiceFulfilATaskDTO.java
+42
-0
ServiceSettleAccountsDTO.java
.../com/mmc/csf/infomation/dto/ServiceSettleAccountsDTO.java
+44
-0
IndustryTypeQO.java
...c/main/java/com/mmc/csf/infomation/qo/IndustryTypeQO.java
+40
-0
GetOrderNumberVO.java
...main/java/com/mmc/csf/infomation/vo/GetOrderNumberVO.java
+51
-0
GrabTheOrderVO.java
...c/main/java/com/mmc/csf/infomation/vo/GrabTheOrderVO.java
+52
-0
OrderLevelEnum.java
...c/main/java/com/mmc/csf/infomation/vo/OrderLevelEnum.java
+70
-0
PilotAbilityVO.java
...c/main/java/com/mmc/csf/infomation/vo/PilotAbilityVO.java
+37
-0
RequirementsInfoVO.java
...in/java/com/mmc/csf/infomation/vo/RequirementsInfoVO.java
+31
-2
ServiceArriveSceneVO.java
.../java/com/mmc/csf/infomation/vo/ServiceArriveSceneVO.java
+45
-0
ServiceEvaluateVO.java
...ain/java/com/mmc/csf/infomation/vo/ServiceEvaluateVO.java
+35
-0
ServiceFulfilATaskVO.java
.../java/com/mmc/csf/infomation/vo/ServiceFulfilATaskVO.java
+34
-0
ServiceRequirementsVO.java
...java/com/mmc/csf/infomation/vo/ServiceRequirementsVO.java
+107
-0
ServiceSettleAccountsVO.java
...va/com/mmc/csf/infomation/vo/ServiceSettleAccountsVO.java
+38
-0
WalletFlowVO.java
...src/main/java/com/mmc/csf/infomation/vo/WalletFlowVO.java
+47
-0
CompanyInspectionDTO.java
...va/com/mmc/csf/release/industry/CompanyInspectionDTO.java
+62
-0
CompanyInspectionFileDTO.java
...om/mmc/csf/release/industry/CompanyInspectionFileDTO.java
+26
-0
IndustryTypeDTO.java
...in/java/com/mmc/csf/release/industry/IndustryTypeDTO.java
+38
-0
InspectionDTO.java
...main/java/com/mmc/csf/release/industry/InspectionDTO.java
+46
-0
InspectionTagDTO.java
...n/java/com/mmc/csf/release/industry/InspectionTagDTO.java
+28
-0
ResultEnum.java
...src/main/java/com/mmc/csf/common/util/web/ResultEnum.java
+9
-1
pom.xml
pom.xml
+1
-2
pom.xml
release-service/pom.xml
+14
-0
NotRepeatSubmit.java
...main/java/com/mmc/csf/release/commit/NotRepeatSubmit.java
+17
-0
NotRepeatSubmitConfig.java
...ava/com/mmc/csf/release/commit/NotRepeatSubmitConfig.java
+79
-0
RestTemplateConfig.java
...n/java/com/mmc/csf/release/config/RestTemplateConfig.java
+69
-0
RequirementsController.java
...om/mmc/csf/release/controller/RequirementsController.java
+121
-3
RequirementsDao.java
...rc/main/java/com/mmc/csf/release/dao/RequirementsDao.java
+37
-2
RequirementsInfoDO.java
...c/csf/release/entity/requirements/RequirementsInfoDO.java
+44
-1
RequirementsServiceDO.java
...sf/release/entity/requirements/RequirementsServiceDO.java
+62
-0
ServiceArriveSceneDO.java
...csf/release/entity/requirements/ServiceArriveSceneDO.java
+67
-0
ServiceEvaluateDO.java
...mc/csf/release/entity/requirements/ServiceEvaluateDO.java
+69
-0
ServiceFulfilATaskDO.java
...csf/release/entity/requirements/ServiceFulfilATaskDO.java
+64
-0
ServiceRequirementsDO.java
...sf/release/entity/requirements/ServiceRequirementsDO.java
+143
-0
ServiceSettleAccountsDO.java
.../release/entity/requirements/ServiceSettleAccountsDO.java
+69
-0
PmsAppApi.java
...ce/src/main/java/com/mmc/csf/release/feign/PmsAppApi.java
+6
-0
UserAppApi.java
...e/src/main/java/com/mmc/csf/release/feign/UserAppApi.java
+18
-2
PmsAppApHystrix.java
...va/com/mmc/csf/release/feign/hystrix/PmsAppApHystrix.java
+7
-0
UserAppApiHystrix.java
.../com/mmc/csf/release/feign/hystrix/UserAppApiHystrix.java
+7
-0
RequirementsService.java
...java/com/mmc/csf/release/service/RequirementsService.java
+32
-1
RequirementsServiceImpl.java
...mmc/csf/release/service/impl/RequirementsServiceImpl.java
+901
-11
RequirementsDao.xml
...rc/main/resources/mapper/requirements/RequirementsDao.xml
+258
-13
没有找到文件。
csf-common/csf-common-model/pom.xml
浏览文件 @
a25f0ccf
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
>
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<parent>
<groupId>
com.mmc.csf.common
</groupId>
<groupId>
com.mmc.csf.common
</groupId>
<artifactId>
csf-common
</artifactId>
<artifactId>
csf-common
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
<version>
0.0.1-SNAPSHOT
</version>
</parent>
</parent>
<artifactId>
csf-common-model
</artifactId>
<artifactId>
csf-common-model
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
<version>
0.0.1-SNAPSHOT
</version>
<packaging>
jar
</packaging>
<packaging>
jar
</packaging>
<dependencies>
<dependencies>
<!-- apache 提供的一些工具类 -->
<dependency>
<groupId>
commons-codec
</groupId>
<artifactId>
commons-codec
</artifactId>
</dependency>
<dependency
>
<!-- apache 提供的一些工具类 --
>
<groupId>
commons-lang
</groupId
>
<dependency
>
<artifactId>
commons-lang
</artifact
Id>
<groupId>
commons-codec
</group
Id>
<version>
2.6
</version
>
<artifactId>
commons-codec
</artifactId
>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
org.hibernate.validator
</groupId>
<groupId>
commons-lang
</groupId>
<artifactId>
hibernate-validator
</artifactId>
<artifactId>
commons-lang
</artifactId>
<version>
6.0.20.Final
</version>
<version>
2.6
</version>
</dependency>
</dependency>
<dependency>
<groupId>
org.hibernate.validator
</groupId>
<artifactId>
hibernate-validator
</artifactId>
<version>
6.0.20.Final
</version>
</dependency>
<dependency>
<dependency>
<groupId>
cn.afterturn
</groupId>
<groupId>
cn.afterturn
</groupId>
<artifactId>
easypoi-annotation
</artifactId>
<artifactId>
easypoi-annotation
</artifactId>
...
...
csf-common/csf-common-model/src/main/java/com/mmc/csf/infomation/dto/GetOrderNumberDTO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
infomation
.
dto
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
/**
* @Author small
* @Date 2023/8/19 16:11
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
GetOrderNumberDTO
implements
Serializable
{
@ApiModelProperty
(
hidden
=
true
)
@JsonIgnore
private
Integer
id
;
private
static
final
long
serialVersionUID
=
75097833899496576L
;
@ApiModelProperty
(
value
=
"支付订单编号"
,
example
=
"dadasdas"
)
private
String
paymentOrderNumber
;
@ApiModelProperty
(
value
=
"微信需要支付金额"
,
example
=
"100"
)
private
BigDecimal
weChatPay
;
@JsonIgnore
@ApiModelProperty
(
value
=
"用户id"
,
example
=
"100"
,
hidden
=
true
)
private
Integer
userAccountId
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/infomation/dto/PayWalletDTO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
infomation
.
dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
/**
* @Author small
* @Date 2023/8/19 10:18
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
PayWalletDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
75097833899496576L
;
@ApiModelProperty
(
value
=
"id"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"用户ID"
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"用户姓名"
)
private
String
userName
;
@ApiModelProperty
(
value
=
"云享金余额"
)
private
BigDecimal
cashAmt
;
@ApiModelProperty
(
value
=
"已消耗云享金"
)
private
BigDecimal
cashPaid
;
@ApiModelProperty
(
value
=
"云享金总金额"
)
private
BigDecimal
totalCash
;
@ApiModelProperty
(
value
=
"已冻结云享金"
)
private
BigDecimal
cashFreeze
;
@ApiModelProperty
(
value
=
"佣金余额"
)
private
BigDecimal
salaryAmt
;
@ApiModelProperty
(
value
=
"已消耗佣金"
)
private
BigDecimal
salaryPaid
;
@ApiModelProperty
(
value
=
"已冻结佣金"
)
private
BigDecimal
salaryFreeze
;
@ApiModelProperty
(
value
=
"佣金总额度"
)
private
BigDecimal
totalSalary
;
@ApiModelProperty
(
value
=
"已提现的金额"
)
private
BigDecimal
rebateWdl
;
@ApiModelProperty
(
value
=
"冻结总额"
)
private
BigDecimal
totalFreeze
;
@ApiModelProperty
(
value
=
"总金额"
)
private
BigDecimal
totalAmount
;
public
void
mathTotal
()
{
// 总冻结余额
this
.
totalFreeze
=
BigDecimal
.
ZERO
;
if
(
this
.
cashFreeze
!=
null
)
{
this
.
totalFreeze
=
this
.
totalFreeze
.
add
(
this
.
cashFreeze
);
}
if
(
this
.
salaryFreeze
!=
null
)
{
this
.
totalFreeze
=
this
.
totalFreeze
.
add
(
this
.
salaryFreeze
);
}
// 总云享金余额
this
.
totalCash
=
BigDecimal
.
ZERO
;
if
(
this
.
cashAmt
!=
null
)
{
this
.
totalCash
=
this
.
totalCash
.
add
(
this
.
cashAmt
);
}
if
(
this
.
cashFreeze
!=
null
)
{
this
.
totalCash
=
this
.
totalCash
.
add
(
this
.
cashFreeze
);
}
// 总佣金余额
this
.
totalSalary
=
BigDecimal
.
ZERO
;
if
(
this
.
salaryAmt
!=
null
)
{
this
.
totalSalary
=
this
.
totalSalary
.
add
(
this
.
salaryAmt
);
}
if
(
this
.
salaryFreeze
!=
null
)
{
this
.
totalSalary
=
this
.
totalSalary
.
add
(
this
.
salaryFreeze
);
}
// 总金额
this
.
totalAmount
=
BigDecimal
.
ZERO
;
this
.
totalAmount
=
this
.
totalAmount
.
add
(
this
.
totalCash
);
this
.
totalAmount
=
this
.
totalAmount
.
add
(
this
.
totalSalary
);
}
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/infomation/dto/PilotCertificationInteriorDTO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
infomation
.
dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.NotNull
;
/**
* @Author small
* @Date 2023/8/18 14:29
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
PilotCertificationInteriorDTO
{
@ApiModelProperty
(
value
=
"飞手执照id"
,
example
=
"1"
)
@NotNull
(
message
=
"飞手执照id不能为空"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"申请飞手用户的id"
,
example
=
"1"
)
private
Integer
userAccountId
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/infomation/dto/ServiceArriveSceneDTO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
infomation
.
dto
;
import
com.mmc.csf.release.model.group.Update
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.NotNull
;
/**
* @Author small
* @Date 2023/8/18 19:56
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
ServiceArriveSceneDTO
{
@ApiModelProperty
(
value
=
"id"
)
@NotNull
(
message
=
"id不能为空"
,
groups
=
{
Update
.
class
})
private
Integer
id
;
@ApiModelProperty
(
value
=
"id"
)
private
Double
longitude
;
@ApiModelProperty
(
value
=
"id"
)
private
Double
latitude
;
@ApiModelProperty
(
value
=
"现场地址"
)
private
String
sceneAddress
;
@ApiModelProperty
(
value
=
"现场地址的url"
,
required
=
true
)
private
String
sceneUrl
;
@ApiModelProperty
(
value
=
"现场用户id"
,
hidden
=
true
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"服务需求id"
,
required
=
true
)
private
Integer
requirementsInfoId
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/infomation/dto/ServiceEvaluateDTO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
infomation
.
dto
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Date
;
/**
* @Author small
* @Date 2023/8/18 22:06
* @Version 1.0
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
ServiceEvaluateDTO
{
@ApiModelProperty
(
value
=
"id"
,
example
=
"1"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"需求id"
,
example
=
"83"
)
private
Integer
requirementsInfoId
;
@ApiModelProperty
(
value
=
"完成任务的用户"
,
example
=
"1"
,
hidden
=
true
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"评价内容"
,
example
=
"1"
)
private
String
evaluationContent
;
@ApiModelProperty
(
value
=
"星级"
,
example
=
"星"
)
private
String
starLevel
;
@ApiModelProperty
(
value
=
"评价图片"
,
example
=
"星"
)
private
String
evaluationUrl
;
@JSONField
(
format
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
createTime
;
@JSONField
(
format
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
updateTime
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/infomation/dto/ServiceFulfilATaskDTO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
infomation
.
dto
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Date
;
/**
* @Author small
* @Date 2023/8/18 20:46
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
ServiceFulfilATaskDTO
{
private
Integer
id
;
@ApiModelProperty
(
value
=
"完成任务描述"
,
example
=
"完成任务描述一下"
)
private
String
taskDescribe
;
@ApiModelProperty
(
value
=
"完成任务图片"
,
example
=
"http://"
)
private
String
taskUrl
;
@ApiModelProperty
(
value
=
"需求id"
,
example
=
"83"
)
private
Integer
requirementsInfoId
;
@ApiModelProperty
(
value
=
"完成任务的用户"
,
example
=
"1"
,
hidden
=
true
)
private
Integer
userAccountId
;
@JSONField
(
format
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
createTime
;
@JSONField
(
format
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
updateTime
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/infomation/dto/ServiceSettleAccountsDTO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
infomation
.
dto
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @Author small
* @Date 2023/8/18 21:22
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
ServiceSettleAccountsDTO
{
private
Integer
id
;
@ApiModelProperty
(
value
=
"订单金额"
,
example
=
"100"
)
private
BigDecimal
orderAmount
;
@ApiModelProperty
(
value
=
"备注"
,
example
=
"项目延期"
)
private
String
remark
;
@ApiModelProperty
(
value
=
"需求id"
,
example
=
"83"
)
private
Integer
requirementsInfoId
;
@ApiModelProperty
(
value
=
"结算的用户id"
,
example
=
"1"
,
hidden
=
true
)
private
Integer
userAccountId
;
@JSONField
(
format
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
createTime
;
@JSONField
(
format
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
updateTime
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/infomation/qo/IndustryTypeQO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
infomation
.
qo
;
import
com.mmc.csf.release.model.group.Freeze
;
import
com.mmc.csf.release.model.group.Page
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
/**
* @Author small
* @Date 2023/8/21 16:02
* @Version 1.0
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
IndustryTypeQO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1983281419136483277L
;
private
Integer
id
;
@ApiModelProperty
(
value
=
"行业类型名称"
)
private
String
typeName
;
@ApiModelProperty
(
value
=
"页码"
,
required
=
true
)
@NotNull
(
message
=
"页码不能为空"
,
groups
=
{
Page
.
class
,
Freeze
.
class
})
@Min
(
value
=
1
,
groups
=
Page
.
class
)
private
Integer
pageNo
;
@ApiModelProperty
(
value
=
"每页显示数"
,
required
=
true
)
@NotNull
(
message
=
"每页显示数不能为空"
,
groups
=
{
Page
.
class
,
Freeze
.
class
})
@Min
(
value
=
1
,
groups
=
Page
.
class
)
private
Integer
pageSize
;
public
void
buildCurrentPage
()
{
this
.
pageNo
=
(
pageNo
-
1
)
*
pageSize
;
}
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/infomation/vo/GetOrderNumberVO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
infomation
.
vo
;
import
com.mmc.csf.release.model.group.Insert
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.NotNull
;
import
java.math.BigDecimal
;
/**
* @Author small
* @Date 2023/8/19 15:57
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
GetOrderNumberVO
{
@ApiModelProperty
(
value
=
"订单金额"
,
example
=
"100"
,
required
=
true
)
@NotNull
(
message
=
"订单金额"
,
groups
=
{
Insert
.
class
})
private
BigDecimal
orderAmount
;
@ApiModelProperty
(
value
=
"订单级别 todo:前端传英文,后台自己获取金额 订单级别(REGULAR_ORDER,RUSH_ORDER,TOP_ORDER)"
,
example
=
"REGULAR_ORDER"
,
required
=
true
)
@NotNull
(
message
=
"订单级别"
,
groups
=
{
Insert
.
class
})
private
OrderLevelEnum
orderLevelEnum
;
@ApiModelProperty
(
value
=
"云享金"
,
example
=
"10"
,
hidden
=
true
)
private
BigDecimal
cashAmount
;
@ApiModelProperty
(
value
=
"佣金"
,
example
=
"10"
,
hidden
=
true
)
private
BigDecimal
salaryAmount
;
@ApiModelProperty
(
value
=
"微信金额"
,
example
=
"10"
,
hidden
=
true
)
private
BigDecimal
weChatPay
;
@ApiModelProperty
(
value
=
"用户id"
,
example
=
"10"
,
hidden
=
true
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"支付方式,云享金:1,佣金:2,微信支付:3"
,
example
=
"1,2,3"
,
required
=
true
)
private
String
paymentType
;
@ApiModelProperty
(
value
=
"订单方式 发布订单:1 ,抢单:2"
,
example
=
"1"
,
required
=
true
)
private
Integer
orderMode
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/infomation/vo/GrabTheOrderVO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
infomation
.
vo
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.mmc.csf.release.model.group.Update
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.NotNull
;
import
java.math.BigDecimal
;
/**
* @Author small
* @Date 2023/8/19 22:26
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
GrabTheOrderVO
{
private
static
final
long
serialVersionUID
=
-
447951390213113317L
;
@ApiModelProperty
(
value
=
"id"
)
@NotNull
(
message
=
"id不能为空"
,
groups
=
{
Update
.
class
})
private
Integer
id
;
@ApiModelProperty
(
value
=
"云享金"
,
example
=
"10"
,
hidden
=
true
)
private
BigDecimal
cashAmount
;
@ApiModelProperty
(
value
=
"佣金"
,
example
=
"10"
,
hidden
=
true
)
private
BigDecimal
salaryAmount
;
@ApiModelProperty
(
value
=
"微信支付订单编号"
,
example
=
"R202308191657303116170"
)
private
String
wechatPayOrderNumber
;
@ApiModelProperty
(
value
=
"微信金额"
,
example
=
"10"
,
hidden
=
true
)
private
BigDecimal
weChat
;
@ApiModelProperty
(
value
=
"发布者任务编号"
,
example
=
"R202308192201279509820"
)
private
String
publisherNumber
;
@JsonIgnore
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"支付方式,云享金:1,佣金:2,微信支付:3"
,
example
=
"1,2,3"
)
private
String
paymentType
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/infomation/vo/OrderLevelEnum.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
infomation
.
vo
;
import
java.math.BigDecimal
;
/**
* @Author small
* @Date 2023/8/17 10:22
* @Version 1.0
*/
public
enum
OrderLevelEnum
{
//普通订单
REGULAR_ORDER
(
"REGULAR_ORDER"
,
new
BigDecimal
(
0
)),
//紧急订单
RUSH_ORDER
(
"RUSH_ORDER"
,
new
BigDecimal
(
100
)),
//置顶订单
TOP_ORDER
(
"TOP_ORDER"
,
new
BigDecimal
(
300
));
private
String
key
;
private
BigDecimal
value
;
private
OrderLevelEnum
(
String
key
,
BigDecimal
value
)
{
this
.
key
=
key
;
this
.
value
=
value
;
}
public
String
getKey
()
{
return
key
;
}
public
void
setKey
(
String
key
)
{
this
.
key
=
key
;
}
public
BigDecimal
getValue
()
{
return
value
;
}
public
void
setValue
(
BigDecimal
value
)
{
this
.
value
=
value
;
}
public
static
OrderLevelEnum
match
(
String
key
)
{
OrderLevelEnum
result
=
null
;
for
(
OrderLevelEnum
s
:
values
())
{
if
(
s
.
getKey
()
==
key
)
{
result
=
s
;
break
;
}
}
return
result
;
}
public
static
OrderLevelEnum
catchMessage
(
BigDecimal
value
)
{
OrderLevelEnum
result
=
null
;
for
(
OrderLevelEnum
s
:
values
())
{
if
(
s
.
getValue
().
equals
(
value
))
{
result
=
s
;
break
;
}
}
return
result
;
}
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/infomation/vo/PilotAbilityVO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
infomation
.
vo
;
import
com.mmc.csf.release.model.group.Create
;
import
com.mmc.csf.release.model.group.Update
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.NotBlank
;
/**
* @Author small
* @Date 2023/8/18 14:30
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
PilotAbilityVO
{
private
Integer
id
;
@ApiModelProperty
(
value
=
"能力id不能为空"
,
example
=
"5"
,
required
=
true
)
@NotBlank
(
message
=
"能力id不能为空"
,
groups
=
{
Create
.
class
,
Update
.
class
})
private
Integer
abilityId
;
@ApiModelProperty
(
value
=
"能力不能为空"
,
example
=
"道路检测"
,
required
=
true
)
@NotBlank
(
message
=
"能力名称不能为空"
,
groups
=
{
Create
.
class
,
Update
.
class
})
private
String
abilityName
;
@ApiModelProperty
(
value
=
"飞手认证id"
,
hidden
=
true
)
private
Integer
pilotCertificationId
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/infomation/vo/RequirementsInfoVO.java
浏览文件 @
a25f0ccf
...
@@ -27,7 +27,7 @@ import java.util.Date;
...
@@ -27,7 +27,7 @@ import java.util.Date;
@Builder
@Builder
public
class
RequirementsInfoVO
implements
Serializable
{
public
class
RequirementsInfoVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
447951390213113317L
;
private
static
final
long
serialVersionUID
=
-
447951390213113317L
;
@ApiModelProperty
(
value
=
"id"
)
@ApiModelProperty
(
value
=
"id"
,
hidden
=
true
)
@NotNull
(
message
=
"id不能为空"
,
groups
=
{
Update
.
class
})
@NotNull
(
message
=
"id不能为空"
,
groups
=
{
Update
.
class
})
private
Integer
id
;
private
Integer
id
;
...
@@ -92,7 +92,8 @@ public class RequirementsInfoVO implements Serializable {
...
@@ -92,7 +92,8 @@ public class RequirementsInfoVO implements Serializable {
//@NotNull(message = "用户id不能为空", groups = {Insert.class})
//@NotNull(message = "用户id不能为空", groups = {Insert.class})
private
Integer
userAccountId
;
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"发布者支付总金额"
,
example
=
"发布者支付总金额"
)
private
BigDecimal
totalAmount
;
@ApiModelProperty
(
value
=
"省份编码"
,
required
=
false
)
@ApiModelProperty
(
value
=
"省份编码"
,
required
=
false
)
//@NotNull(message = "省份编码不能为空", groups = {Insert.class})
//@NotNull(message = "省份编码不能为空", groups = {Insert.class})
private
Integer
provinceCode
;
private
Integer
provinceCode
;
...
@@ -122,4 +123,32 @@ public class RequirementsInfoVO implements Serializable {
...
@@ -122,4 +123,32 @@ public class RequirementsInfoVO implements Serializable {
@ApiModelProperty
(
value
=
"发布者订单编号"
)
@ApiModelProperty
(
value
=
"发布者订单编号"
)
private
String
publisherNumber
;
private
String
publisherNumber
;
@ApiModelProperty
(
value
=
"订单级别"
,
example
=
"订单级别"
,
required
=
true
)
@NotNull
(
message
=
"订单级别"
,
groups
=
{
Insert
.
class
})
private
String
orderLevelEnum
;
@ApiModelProperty
(
value
=
"服务id"
,
example
=
"服务id"
,
required
=
true
)
private
Integer
serviceId
;
@ApiModelProperty
(
value
=
"服务名称"
,
example
=
"服务名称"
)
private
String
serviceName
;
@ApiModelProperty
(
value
=
"飞手保险 1飞手保险 2三者保险 3机身保险"
,
example
=
"飞手保险 1飞手保险 2三者保险 3机身保险"
)
private
String
insurance
;
@ApiModelProperty
(
value
=
"当前状态"
,
example
=
"已发布"
)
private
String
doing
;
@ApiModelProperty
(
value
=
"等待状态"
,
example
=
"等待抢单"
)
private
String
waiting
;
@ApiModelProperty
(
value
=
"发布者状态"
,
example
=
"等待抢单"
)
private
String
userPort
;
@ApiModelProperty
(
value
=
"飞手状态"
,
example
=
"等待抵达现场"
)
private
String
flyerPort
;
@ApiModelProperty
(
value
=
"状态编码"
,
example
=
"状态编码"
)
private
String
orderStatus
;
@ApiModelProperty
(
value
=
"0需求信息 1是服务需求"
,
example
=
"0需求信息 1是服务需求"
)
private
Integer
publish
;
@ApiModelProperty
(
value
=
"抢单者已支付的总金额"
,
example
=
"抢单者已支付的总金额"
)
private
BigDecimal
preemptTotalAmount
;
}
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/infomation/vo/ServiceArriveSceneVO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
infomation
.
vo
;
import
com.mmc.csf.release.model.group.Update
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.NotNull
;
/**
* @Author small
* @Date 2023/8/18 18:28
* @Version 1.0
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
ServiceArriveSceneVO
{
@ApiModelProperty
(
value
=
"id"
)
@NotNull
(
message
=
"id不能为空"
,
groups
=
{
Update
.
class
})
private
Integer
id
;
@ApiModelProperty
(
value
=
"id"
,
example
=
"23.344324"
)
private
Double
longitude
;
@ApiModelProperty
(
value
=
"id"
,
example
=
"44.344324"
)
private
Double
latitude
;
@ApiModelProperty
(
value
=
"现场地址"
,
example
=
"广东省深圳市"
)
private
String
sceneAddress
;
@ApiModelProperty
(
value
=
"现场地址的url"
,
required
=
true
,
example
=
"http://"
)
private
String
sceneUrl
;
@ApiModelProperty
(
value
=
"现场用户id"
,
hidden
=
true
,
example
=
"173"
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"服务需求id"
,
required
=
true
,
example
=
"83"
)
private
Integer
requirementsInfoId
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/infomation/vo/ServiceEvaluateVO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
infomation
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @Author small
* @Date 2023/8/18 21:58
* @Version 1.0
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
ServiceEvaluateVO
{
@ApiModelProperty
(
value
=
"需求id"
,
example
=
"83"
)
private
Integer
requirementsInfoId
;
@ApiModelProperty
(
value
=
"完成任务的用户"
,
example
=
"1"
,
hidden
=
true
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"评价内容"
,
example
=
"1"
)
private
String
evaluationContent
;
@ApiModelProperty
(
value
=
"星级"
,
example
=
"星"
)
private
String
starLevel
;
@ApiModelProperty
(
value
=
"评价图片"
,
example
=
"星"
)
private
String
evaluationUrl
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/infomation/vo/ServiceFulfilATaskVO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
infomation
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @Author small
* @Date 2023/8/18 20:34
* @Version 1.0
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
ServiceFulfilATaskVO
{
private
Integer
id
;
@ApiModelProperty
(
value
=
"完成任务描述"
,
example
=
"完成任务描述一下"
)
private
String
taskDescribe
;
@ApiModelProperty
(
value
=
"完成任务图片"
,
example
=
"http://"
)
private
String
taskUrl
;
@ApiModelProperty
(
value
=
"需求id"
,
example
=
"83"
)
private
Integer
requirementsInfoId
;
@ApiModelProperty
(
value
=
"完成任务的用户"
,
example
=
"1"
,
hidden
=
true
)
private
Integer
userAccountId
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/infomation/vo/ServiceRequirementsVO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
infomation
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.mmc.csf.release.model.group.Insert
;
import
com.mmc.csf.release.model.group.Update
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.hibernate.validator.constraints.Length
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @Author small
* @Date 2023/8/17 10:14
* @Version 1.0
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
ServiceRequirementsVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
447951390213113317L
;
@ApiModelProperty
(
value
=
"id"
)
@NotNull
(
message
=
"id不能为空"
,
groups
=
{
Update
.
class
})
private
Integer
id
;
@ApiModelProperty
(
value
=
"id"
,
example
=
"1"
)
@NotBlank
(
message
=
"服务类型名称不能为空"
,
groups
=
{
Insert
.
class
,
Update
.
class
})
private
String
serviceId
;
@ApiModelProperty
(
value
=
"飞行日期——任务开始时间"
,
example
=
"2023-07-25"
,
required
=
true
)
@NotNull
(
message
=
"任务开始时间不能为空"
,
groups
=
{
Insert
.
class
,
Update
.
class
})
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
taskStartTime
;
@ApiModelProperty
(
value
=
"飞行日期——任务结束时间"
,
example
=
"2023-07-26"
,
required
=
true
)
@NotNull
(
message
=
"任务开始时间不能为空"
,
groups
=
{
Insert
.
class
,
Update
.
class
})
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
taskEndTime
;
@ApiModelProperty
(
value
=
"飞行位置——任务地址"
,
example
=
"广东省深圳市"
,
required
=
true
)
@NotBlank
(
message
=
"任务地址不能为空"
,
groups
=
{
Insert
.
class
,
Update
.
class
})
private
String
taskAddress
;
@ApiModelProperty
(
value
=
"飞行位置——任务经度"
,
example
=
"23.344324"
,
required
=
true
)
@NotNull
(
message
=
"任务经度不能为空"
,
groups
=
{
Insert
.
class
,
Update
.
class
})
private
Double
longitude
;
@ApiModelProperty
(
value
=
"飞行位置——任务纬度"
,
example
=
"44.344324"
,
required
=
true
)
@NotNull
(
message
=
"任务纬度不能为空"
,
groups
=
{
Insert
.
class
,
Update
.
class
})
private
Double
latitude
;
@ApiModelProperty
(
value
=
"任务需求描述"
,
example
=
"描述一下"
,
required
=
true
)
@NotNull
(
message
=
"任务需求描述不能为空"
,
groups
=
{
Insert
.
class
})
@Length
(
max
=
300
,
message
=
"字符过长"
)
private
String
requireDescription
;
@ApiModelProperty
(
value
=
"订单金额"
,
example
=
"100"
,
required
=
true
)
@NotNull
(
message
=
"订单金额"
,
groups
=
{
Insert
.
class
})
private
BigDecimal
orderAmount
;
@ApiModelProperty
(
value
=
"飞手保险1飞手保险 2三者保险 3机身保险"
,
example
=
"1,2,3"
,
required
=
true
)
@NotNull
(
message
=
"飞手保险"
,
groups
=
{
Insert
.
class
})
private
String
insurance
;
@ApiModelProperty
(
value
=
"订单级别 todo:前端传英文,后台自己获取金额 订单级别(REGULAR_ORDER,RUSH_ORDER,TOP_ORDER)"
,
example
=
"REGULAR_ORDER"
,
required
=
true
)
@NotNull
(
message
=
"订单级别"
,
groups
=
{
Insert
.
class
})
private
OrderLevelEnum
orderLevelEnum
;
@ApiModelProperty
(
value
=
"后台获取token里面的用户id"
,
hidden
=
true
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"发布者姓名"
,
example
=
"张三"
)
private
String
publishName
;
@ApiModelProperty
(
value
=
"发布者电话"
,
example
=
"1892994543"
,
required
=
true
)
@NotNull
(
message
=
"发布者电话不能为空"
,
groups
=
{
Insert
.
class
})
private
String
publishPhone
;
@ApiModelProperty
(
value
=
"云享金"
,
example
=
"10"
,
hidden
=
true
)
private
BigDecimal
cashAmount
;
@ApiModelProperty
(
value
=
"佣金"
,
example
=
"10"
,
hidden
=
true
)
private
BigDecimal
salaryAmount
;
@ApiModelProperty
(
value
=
"微信支付订单编号"
,
example
=
"R202308191657303116170"
)
private
String
wechatPayOrderNumber
;
@ApiModelProperty
(
value
=
"支付方式,云享金:1,佣金:2,微信支付:3"
,
example
=
"1,2,3"
)
private
String
paymentType
;
@ApiModelProperty
(
value
=
"微信金额"
,
example
=
"10"
,
hidden
=
true
)
private
BigDecimal
weChat
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/infomation/vo/ServiceSettleAccountsVO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
infomation
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
/**
* @Author small
* @Date 2023/8/18 21:19
* @Version 1.0
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
ServiceSettleAccountsVO
implements
Serializable
{
private
Integer
id
;
@ApiModelProperty
(
value
=
"订单金额"
,
example
=
"100"
)
private
BigDecimal
orderAmount
;
@ApiModelProperty
(
value
=
"备注"
,
example
=
"项目延期"
)
private
String
remark
;
@ApiModelProperty
(
value
=
"需求id"
,
example
=
"83"
)
private
Integer
requirementsInfoId
;
@ApiModelProperty
(
value
=
"完成任务的用户"
,
example
=
"1"
,
hidden
=
true
)
private
Integer
userAccountId
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/infomation/vo/WalletFlowVO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
infomation
.
vo
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.math.BigDecimal
;
/**
* @Author small
* @Date 2023/8/19 10:24
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
WalletFlowVO
{
@ApiModelProperty
(
value
=
"用户ID"
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"支付方式 200结算(完成) 300冻结 100订单取消"
)
private
Integer
modeOfPayment
;
@ApiModelProperty
(
value
=
"云享金"
)
private
BigDecimal
cashAmount
;
@ApiModelProperty
(
value
=
"佣金"
)
private
BigDecimal
salaryAmount
;
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@JSONField
(
format
=
"yyyy-MM-dd HH:mm:ss"
)
private
String
timeOfPayment
;
@ApiModelProperty
(
value
=
"操作者用户ID"
)
private
Integer
operateUserAccountId
;
@ApiModelProperty
(
value
=
"微信金额"
)
private
BigDecimal
weChat
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/release/industry/CompanyInspectionDTO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
release
.
industry
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.List
;
/**
* @Author small
* @Date 2023/8/18 13:40
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
CompanyInspectionDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
7994243059824987869L
;
@ApiModelProperty
(
value
=
"id"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"单位id"
)
private
Integer
companyInfoId
;
@ApiModelProperty
(
value
=
"服务范围"
)
private
String
serviceArea
;
@ApiModelProperty
(
value
=
"服务id"
)
private
Integer
inspectionId
;
@ApiModelProperty
(
value
=
"服务标签"
)
private
Integer
inspectionTagId
;
@ApiModelProperty
(
value
=
"报价"
)
private
BigDecimal
price
;
@ApiModelProperty
(
value
=
"报价说明"
)
private
String
priceRemark
;
@ApiModelProperty
(
value
=
"价格单位"
)
private
Integer
inspectionPriceUnitId
;
@ApiModelProperty
(
value
=
"详情页"
)
private
String
detailPage
;
@ApiModelProperty
(
value
=
"销售状态,0停售,1在售"
)
private
Integer
saleState
;
@ApiModelProperty
(
value
=
"备注"
)
private
String
remark
;
@ApiModelProperty
(
value
=
"服务主图"
)
private
String
inspectionFirstImg
;
@ApiModelProperty
(
value
=
"作业团队"
)
private
String
CompanyName
;
@ApiModelProperty
(
value
=
"行业"
)
private
IndustryTypeDTO
industryTypeDTO
;
@ApiModelProperty
(
value
=
"服务"
)
private
InspectionDTO
inspectionDTO
;
@ApiModelProperty
(
value
=
"团队服务标签"
)
private
InspectionTagDTO
inspectionTagDTO
;
@ApiModelProperty
(
value
=
"团队服务图片/视频"
)
private
List
<
CompanyInspectionFileDTO
>
inspectionFileDTOS
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/release/industry/CompanyInspectionFileDTO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
release
.
industry
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* @Author small
* @Date 2023/8/18 13:40
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
CompanyInspectionFileDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
542881175952018418L
;
private
Integer
id
;
private
Integer
fileType
;
private
Integer
first
;
private
Integer
companyInspectionId
;
private
String
fileUrl
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/release/industry/IndustryTypeDTO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
release
.
industry
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.util.Date
;
import
java.util.List
;
/**
* @Author small
* @Date 2023/8/18 13:39
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
IndustryTypeDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
5832618357203415274L
;
@ApiModelProperty
(
value
=
"id"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"行业类型名称"
)
private
String
typeName
;
@ApiModelProperty
(
value
=
"行业图标"
)
private
String
typeImg
;
@ApiModelProperty
(
value
=
"行业描述"
)
private
String
description
;
@ApiModelProperty
(
value
=
"售卖状态,0停售,1在售"
)
private
Integer
saleState
;
@ApiModelProperty
(
value
=
"创建时间"
)
private
Date
createTime
;
@ApiModelProperty
(
value
=
"服务列表"
)
private
List
<
InspectionDTO
>
inspectionDTOS
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/release/industry/InspectionDTO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
release
.
industry
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.util.Date
;
import
java.util.List
;
/**
* @Author small
* @Date 2023/8/18 13:39
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
InspectionDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
8316723266007785996L
;
@ApiModelProperty
(
value
=
"id"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"服务编号"
)
private
String
inspectionNo
;
@ApiModelProperty
(
value
=
"服务名称"
)
private
String
inspectionName
;
@ApiModelProperty
(
value
=
"行业类型id"
)
private
Integer
industryTypeId
;
@ApiModelProperty
(
value
=
"服务图标"
)
private
String
inspectionImg
;
@ApiModelProperty
(
value
=
"服务描述"
)
private
String
inspectionDescription
;
@ApiModelProperty
(
value
=
"销售状态,0停售,1在售"
)
private
Integer
saleState
;
@ApiModelProperty
(
value
=
"案例图"
)
private
String
caseImg
;
@ApiModelProperty
(
value
=
"案例视频"
)
private
String
caseVideo
;
@ApiModelProperty
(
value
=
"创建时间"
)
private
Date
createTime
;
@ApiModelProperty
(
value
=
"团队服务列表"
)
List
<
CompanyInspectionDTO
>
companyInspectionDTOS
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/release/industry/InspectionTagDTO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
release
.
industry
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* @Author small
* @Date 2023/8/18 13:40
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
InspectionTagDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
2590417413375903686L
;
@ApiModelProperty
(
value
=
"id"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"标签名称"
)
private
String
tagName
;
@ApiModelProperty
(
value
=
"服务id"
)
private
Integer
inspectionId
;
}
csf-common/csf-common-util/src/main/java/com/mmc/csf/common/util/web/ResultEnum.java
浏览文件 @
a25f0ccf
...
@@ -407,7 +407,15 @@ public enum ResultEnum implements BaseErrorInfoInterface {
...
@@ -407,7 +407,15 @@ public enum ResultEnum implements BaseErrorInfoInterface {
YOU_CANNOT_MODIFY_REQUIREMENTS_PUBLISHED_BY_OTHERS
(
"60003"
,
"不能修改他(她)人发布的需求"
),
YOU_CANNOT_MODIFY_REQUIREMENTS_PUBLISHED_BY_OTHERS
(
"60003"
,
"不能修改他(她)人发布的需求"
),
YOU_CANNOT_DELETE_REQUIREMENTS_POSTED_BY_OTHERS
(
"60004"
,
"不能删除他(她)人发布的需求"
),
YOU_CANNOT_DELETE_REQUIREMENTS_POSTED_BY_OTHERS
(
"60004"
,
"不能删除他(她)人发布的需求"
),
THE_THIRD_PARTY_INTERFACE_IS_BEING_UPDATED
(
"60005"
,
"第三方接口在更新请联系开发人员"
),
THE_THIRD_PARTY_INTERFACE_IS_BEING_UPDATED
(
"60005"
,
"第三方接口在更新请联系开发人员"
),
THREE_FIELDS_CAN_BE_REPEATED
(
"60002"
,
"机型、等级、类型存在重复"
);
THREE_FIELDS_CAN_BE_REPEATED
(
"60002"
,
"机型、等级、类型存在重复"
),
FALL_OUTSIDE_OF
(
"60003"
,
"不在打卡范围之内"
),
OVER_THE_TOTAL
(
"60004"
,
"总金额大于云享金剩余的金额,发布失败"
),
SALARY_PAYMENT_FAILURE
(
"60005"
,
"总金额大于佣金剩余的金额,发布失败"
),
CASH_SALARY_PAYMENT_FAILURE
(
"60006"
,
"总金额大于佣金剩余的金额加上云享金剩余的金额,发布失败"
),
PLEASE_SELECT_PAYMENT
(
"60007"
,
"请选择支付方式,发布失败"
),
CASH_IS_ENOUGH
(
"60008"
,
"云享金额已足够,无需微信支付"
),
SALARY_IS_ENOUGH
(
"60009"
,
"佣金剩余金额已足够,无需微信支付"
),
;
/**
/**
* 错误码
* 错误码
...
...
pom.xml
浏览文件 @
a25f0ccf
...
@@ -171,4 +171,4 @@
...
@@ -171,4 +171,4 @@
<module>
release-service
</module>
<module>
release-service
</module>
<module>
csf-common
</module>
<module>
csf-common
</module>
</modules>
</modules>
</project>
</project>
\ No newline at end of file
release-service/pom.xml
浏览文件 @
a25f0ccf
...
@@ -69,6 +69,11 @@
...
@@ -69,6 +69,11 @@
<groupId>
mysql
</groupId>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<artifactId>
mysql-connector-java
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
org.redisson
</groupId>
<artifactId>
redisson-spring-boot-starter
</artifactId>
<version>
3.15.6
</version>
</dependency>
<!-- mybatis驱动&Druid数据源-end -->
<!-- mybatis驱动&Druid数据源-end -->
<dependency>
<dependency>
...
@@ -89,6 +94,15 @@
...
@@ -89,6 +94,15 @@
<version>
0.0.1-SNAPSHOT
</version>
<version>
0.0.1-SNAPSHOT
</version>
</dependency>
</dependency>
<!-- 定位打卡-->
<!--用于计算两点之间的距离-->
<dependency>
<groupId>
org.gavaghan
</groupId>
<artifactId>
geodesy
</artifactId>
<version>
1.1.3
</version>
</dependency>
<!-- <!– RabbitMQ –>-->
<!-- <!– RabbitMQ –>-->
<!-- <dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <groupId>org.springframework.boot</groupId>-->
...
...
release-service/src/main/java/com/mmc/csf/release/commit/NotRepeatSubmit.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
release
.
commit
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
/**
* @Author small
* @Date 2023/8/18 11:04
* @Version 1.0
*/
@Target
({
ElementType
.
TYPE
,
ElementType
.
METHOD
})
@Retention
(
RetentionPolicy
.
RUNTIME
)
public
@interface
NotRepeatSubmit
{
long
value
();
}
release-service/src/main/java/com/mmc/csf/release/commit/NotRepeatSubmitConfig.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
release
.
commit
;
import
com.mmc.csf.release.controller.BaseController
;
import
lombok.extern.slf4j.Slf4j
;
import
org.aspectj.lang.ProceedingJoinPoint
;
import
org.aspectj.lang.annotation.Around
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.annotation.Pointcut
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.concurrent.TimeUnit
;
/**
* @Author small
* @Date 2023/8/18 11:05
* @Version 1.0
*/
@Slf4j
@Component
@Aspect
public
class
NotRepeatSubmitConfig
extends
BaseController
{
@Autowired
private
RedissonClient
redissonClient
;
@Pointcut
(
"@within(notRepeatSubmit)||@annotation(notRepeatSubmit)"
)
public
void
pointcut
(
NotRepeatSubmit
notRepeatSubmit
)
{
}
@Around
(
value
=
"pointcut(notRepeatSubmit)"
)
public
Object
around
(
ProceedingJoinPoint
proceedingJoinPoint
,
NotRepeatSubmit
notRepeatSubmit
)
throws
Throwable
{
log
.
info
(
"提交之前---"
);
Object
result
=
null
;
long
leaseTime
=
notRepeatSubmit
.
value
();
log
.
info
(
"leaseTime:"
+
leaseTime
);
ServletRequestAttributes
attributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
HttpServletRequest
request
=
attributes
.
getRequest
();
Integer
userAccountId
=
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
();
String
accountUriLockKey
=
userAccountId
+
"-"
+
request
.
getServletPath
();
// 设置锁定资源名称,accountUriLock改为userid+uri作为标识,作为测试写死
// String accountUriLockKey = "accountUriLock";
RLock
accountUriLock
=
redissonClient
.
getLock
(
accountUriLockKey
);
boolean
tryLock
;
//尝试获取分布式锁
//-1为永久 leaseTime 最多等待几秒 上锁以后leaseTime秒自动解锁
tryLock
=
accountUriLock
.
tryLock
(-
1
,
leaseTime
,
TimeUnit
.
MILLISECONDS
);
log
.
info
(
"tryLock:"
+
tryLock
);
if
(
tryLock
)
{
try
{
// 查询订单库存判断是否大于0
// 大于0表示还有库存可以更新订单库存将库存数字减一更新到数据库中
// 不大于0表示没有库存了本次请求就终止
log
.
info
(
"正常提交:"
);
result
=
proceedingJoinPoint
.
proceed
();
}
catch
(
Exception
e
)
{
log
.
info
(
"主程序异常:"
+
e
);
throw
new
Exception
(
e
);
}
}
else
{
log
.
info
(
"重复提交:"
+
accountUriLockKey
);
}
log
.
info
(
"提交之后---"
);
return
result
;
}
}
release-service/src/main/java/com/mmc/csf/release/config/RestTemplateConfig.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
release
.
config
;
import
com.alibaba.fastjson.JSONObject
;
import
com.mmc.csf.common.util.web.ResultBody
;
import
com.mmc.csf.common.util.web.ResultEnum
;
import
com.mmc.csf.infomation.dto.PilotCertificationInteriorDTO
;
import
com.sun.org.glassfish.gmbal.NameValue
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.http.*
;
import
org.springframework.web.client.RestClientException
;
import
org.springframework.web.client.RestTemplate
;
import
javax.servlet.http.HttpServletRequest
;
/**
* @Author small
* @Date 2023/8/18 10:35
* @Version 1.0
*/
public
class
RestTemplateConfig
{
@Autowired
private
RestTemplate
restTemplate
;
@Value
(
"${iuav.pmsapp.url}"
)
@NameValue
()
private
String
pmsApp
;
@Value
(
"${iuav.userapp.url}"
)
private
String
userApp
;
public
ResultBody
releaseOrder
(
Integer
id
,
HttpServletRequest
request
)
{
String
token
=
request
.
getHeader
(
"token"
);
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setContentType
(
MediaType
.
APPLICATION_JSON
);
headers
.
add
(
"token"
,
token
);
HttpEntity
<
String
>
entity
=
new
HttpEntity
<>(
JSONObject
.
toJSONString
(
id
),
headers
);
ResponseEntity
<
Object
>
exchange
=
null
;
try
{
exchange
=
restTemplate
.
exchange
(
pmsApp
+
"/pms/industry/getIndustryTypeById?id="
+
id
,
HttpMethod
.
GET
,
entity
,
Object
.
class
);
}
catch
(
RestClientException
e
)
{
return
ResultBody
.
error
(
ResultEnum
.
THE_THIRD_PARTY_INTERFACE_IS_BEING_UPDATED
);
}
return
ResultBody
.
success
();
}
public
PilotCertificationInteriorDTO
feignInteriorDetailPilot
(
Integer
userAccountId
,
HttpServletRequest
request
)
{
String
token
=
request
.
getHeader
(
"token"
);
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setContentType
(
MediaType
.
APPLICATION_JSON
);
headers
.
add
(
"token"
,
token
);
HttpEntity
<
String
>
entity
=
new
HttpEntity
<>(
JSONObject
.
toJSONString
(
userAccountId
),
headers
);
ResponseEntity
<
Object
>
exchange
=
null
;
System
.
out
.
println
(
userApp
);
try
{
ResponseEntity
<
PilotCertificationInteriorDTO
>
exchange1
=
restTemplate
.
exchange
(
"http://localhost:35150"
+
"/userapp/pilot/interiorDetailPilot?userAccountId="
+
userAccountId
,
HttpMethod
.
GET
,
entity
,
PilotCertificationInteriorDTO
.
class
);
PilotCertificationInteriorDTO
body
=
exchange1
.
getBody
();
System
.
out
.
println
(
body
);
}
catch
(
RestClientException
e
)
{
// return ResultBody.error(ResultEnum.THE_THIRD_PARTY_INTERFACE_IS_BEING_UPDATED);
}
// return ResultBody.success();
return
null
;
}
}
release-service/src/main/java/com/mmc/csf/release/controller/RequirementsController.java
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
release
.
controller
;
package
com
.
mmc
.
csf
.
release
.
controller
;
import
com.mmc.csf.common.util.web.ResultBody
;
import
com.mmc.csf.common.util.web.ResultBody
;
import
com.mmc.csf.infomation.dto.*
;
import
com.mmc.csf.infomation.qo.IndustryCaseQO
;
import
com.mmc.csf.infomation.qo.IndustryCaseQO
;
import
com.mmc.csf.infomation.vo.
RequirementsInfoVO
;
import
com.mmc.csf.infomation.vo.
*
;
import
com.mmc.csf.
infomation.vo.RequirementsTypeVO
;
import
com.mmc.csf.
release.commit.NotRepeatSubmit
;
import
com.mmc.csf.release.model.group.Insert
;
import
com.mmc.csf.release.model.group.Insert
;
import
com.mmc.csf.release.model.group.Page
;
import
com.mmc.csf.release.model.group.Page
;
import
com.mmc.csf.release.model.group.Update
;
import
com.mmc.csf.release.model.group.Update
;
...
@@ -34,7 +35,7 @@ public class RequirementsController extends BaseController {
...
@@ -34,7 +35,7 @@ public class RequirementsController extends BaseController {
return
requirementsService
.
listType
(
id
);
return
requirementsService
.
listType
(
id
);
}
}
@ApiOperation
(
value
=
"小程序——
需求发布
"
)
@ApiOperation
(
value
=
"小程序——
发布需求信息
"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"publish"
)
@PostMapping
(
"publish"
)
public
ResultBody
publish
(
@RequestBody
@Validated
(
value
=
{
Insert
.
class
})
RequirementsInfoVO
requirementsInfoVO
,
HttpServletRequest
request
)
{
public
ResultBody
publish
(
@RequestBody
@Validated
(
value
=
{
Insert
.
class
})
RequirementsInfoVO
requirementsInfoVO
,
HttpServletRequest
request
)
{
...
@@ -42,6 +43,34 @@ public class RequirementsController extends BaseController {
...
@@ -42,6 +43,34 @@ public class RequirementsController extends BaseController {
return
requirementsService
.
publish
(
requirementsInfoVO
,
request
);
return
requirementsService
.
publish
(
requirementsInfoVO
,
request
);
}
}
@ApiOperation
(
value
=
"new——小程序发布服务-——抢单"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@NotRepeatSubmit
(
value
=
3000L
)
@PostMapping
(
"grabTheOrder"
)
public
ResultBody
grabTheOrder
(
@RequestBody
GrabTheOrderVO
grabTheOrderVO
,
HttpServletRequest
request
)
{
Integer
userAccountId
=
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
();
grabTheOrderVO
.
setUserAccountId
(
userAccountId
);
return
requirementsService
.
grabTheOrder
(
grabTheOrderVO
,
request
);
}
@ApiOperation
(
value
=
"小程序——发布服务需求"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"publishService"
)
public
ResultBody
publishService
(
@RequestBody
@Validated
(
value
=
{
Insert
.
class
})
ServiceRequirementsVO
serviceRequirementsVO
,
HttpServletRequest
request
)
{
serviceRequirementsVO
.
setUserAccountId
(
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
());
return
requirementsService
.
publishService
(
serviceRequirementsVO
,
request
);
}
@ApiOperation
(
value
=
"小程序——发布服务需求订单编号单独接口"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"publisherNumber"
)
public
ResultBody
<
GetOrderNumberDTO
>
publisherNumber
(
@RequestBody
GetOrderNumberVO
getOrderNumberVO
,
HttpServletRequest
request
)
{
Integer
userAccountId
=
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
();
getOrderNumberVO
.
setUserAccountId
(
userAccountId
);
return
requirementsService
.
publisherNumber
(
getOrderNumberVO
,
request
);
}
@ApiOperation
(
value
=
"小程序-编辑——需求发布"
)
@ApiOperation
(
value
=
"小程序-编辑——需求发布"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"updatePublish"
)
@PostMapping
(
"updatePublish"
)
...
@@ -64,6 +93,7 @@ public class RequirementsController extends BaseController {
...
@@ -64,6 +93,7 @@ public class RequirementsController extends BaseController {
return
requirementsService
.
appPublishList
();
return
requirementsService
.
appPublishList
();
}
}
@ApiOperation
(
value
=
"小程序-详情——需求发布"
)
@ApiOperation
(
value
=
"小程序-详情——需求发布"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@GetMapping
(
"detailPublish"
)
@GetMapping
(
"detailPublish"
)
...
@@ -71,6 +101,94 @@ public class RequirementsController extends BaseController {
...
@@ -71,6 +101,94 @@ public class RequirementsController extends BaseController {
return
requirementsService
.
detailPublish
(
id
,
request
,
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
());
return
requirementsService
.
detailPublish
(
id
,
request
,
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
());
}
}
@ApiOperation
(
value
=
"new——小程序-—服务订单--我的发布"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@GetMapping
(
"myPublish"
)
public
ResultBody
<
RequirementsInfoVO
>
myPublish
(
HttpServletRequest
request
)
{
return
requirementsService
.
myPublish
(
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
());
}
@ApiOperation
(
value
=
"new——小程序-—服务订单--我的抢单"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@GetMapping
(
"myPreempt"
)
public
ResultBody
<
RequirementsInfoVO
>
myPreempt
(
HttpServletRequest
request
)
{
return
requirementsService
.
myPreempt
(
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
());
}
@ApiOperation
(
value
=
"new——小程序-—飞手端--抵达现场"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"arriveAtTheScene"
)
public
ResultBody
arriveAtTheScene
(
HttpServletRequest
request
,
@RequestBody
@Validated
(
value
=
{
Insert
.
class
})
ServiceArriveSceneVO
serviceArriveSceneVO
)
{
serviceArriveSceneVO
.
setUserAccountId
(
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
());
return
requirementsService
.
arriveAtTheScene
(
serviceArriveSceneVO
);
}
@ApiOperation
(
value
=
"new——小程序-—飞手端--抵达现场详情"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"arriveAtTheSceneDetails"
)
public
ResultBody
<
ServiceArriveSceneDTO
>
arriveAtTheSceneDetails
(
HttpServletRequest
request
,
@ApiParam
(
value
=
"发布服务需求id"
,
required
=
true
)
@RequestParam
Integer
requirementsInfoId
)
{
Integer
userAccountId
=
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
();
return
requirementsService
.
arriveAtTheSceneDetails
(
requirementsInfoId
,
userAccountId
);
}
@ApiOperation
(
value
=
"new——小程序-—飞手端--完成任务"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"fulfilATask"
)
public
ResultBody
fulfilATask
(
HttpServletRequest
request
,
@RequestBody
@Validated
(
value
=
{
Insert
.
class
})
ServiceFulfilATaskVO
fulfilATaskVO
)
{
fulfilATaskVO
.
setUserAccountId
(
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
());
return
requirementsService
.
fulfilATask
(
fulfilATaskVO
);
}
@ApiOperation
(
value
=
"new——小程序-—飞手端--完成任务详情"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"fulfilATaskDetails"
)
public
ResultBody
<
ServiceFulfilATaskDTO
>
fulfilATaskDetails
(
HttpServletRequest
request
,
@ApiParam
(
value
=
"发布服务需求id"
,
required
=
true
)
@RequestParam
Integer
requirementsInfoId
)
{
Integer
userAccountId
=
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
();
return
requirementsService
.
fulfilATaskDetails
(
requirementsInfoId
,
userAccountId
);
}
@ApiOperation
(
value
=
"new——小程序-—发布者--订单结算"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"settleAccounts"
)
public
ResultBody
settleAccounts
(
HttpServletRequest
request
,
@RequestBody
@Validated
(
value
=
{
Insert
.
class
})
ServiceSettleAccountsVO
settleAccountsVO
)
{
settleAccountsVO
.
setUserAccountId
(
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
());
return
requirementsService
.
settleAccounts
(
settleAccountsVO
);
}
@ApiOperation
(
value
=
"new——小程序-—发布者--订单结算详情"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"settleAccountsDetails"
)
public
ResultBody
<
ServiceSettleAccountsDTO
>
settleAccountsDetails
(
HttpServletRequest
request
,
@ApiParam
(
value
=
"发布服务需求id"
,
required
=
true
)
@RequestParam
Integer
requirementsInfoId
)
{
Integer
userAccountId
=
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
();
return
requirementsService
.
settleAccountsDetails
(
requirementsInfoId
,
userAccountId
);
}
@ApiOperation
(
value
=
"new——小程序-—发布者对飞手--评价"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"evaluate"
)
public
ResultBody
evaluate
(
HttpServletRequest
request
,
@RequestBody
@Validated
(
value
=
{
Insert
.
class
})
ServiceEvaluateVO
evaluateVO
)
{
evaluateVO
.
setUserAccountId
(
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
());
return
requirementsService
.
evaluate
(
evaluateVO
);
}
@ApiOperation
(
value
=
"new——小程序-—发布者对飞手--评价详情"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"evaluateDetails"
)
public
ResultBody
<
ServiceEvaluateDTO
>
evaluateDetails
(
HttpServletRequest
request
,
@ApiParam
(
value
=
"发布服务需求id"
,
required
=
true
)
@RequestParam
Integer
requirementsInfoId
)
{
Integer
userAccountId
=
this
.
getUserLoginInfoFromRedis
(
request
).
getUserAccountId
();
return
requirementsService
.
evaluateDetails
(
requirementsInfoId
,
userAccountId
);
}
@ApiOperation
(
value
=
"后台管理-详情——需求发布"
)
@ApiOperation
(
value
=
"后台管理-详情——需求发布"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@GetMapping
(
"backDetailPublish"
)
@GetMapping
(
"backDetailPublish"
)
...
...
release-service/src/main/java/com/mmc/csf/release/dao/RequirementsDao.java
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
release
.
dao
;
package
com
.
mmc
.
csf
.
release
.
dao
;
import
com.mmc.csf.infomation.qo.IndustryCaseQO
;
import
com.mmc.csf.infomation.qo.IndustryCaseQO
;
import
com.mmc.csf.release.entity.requirements.RequirementsInfoDO
;
import
com.mmc.csf.release.entity.requirements.*
;
import
com.mmc.csf.release.entity.requirements.RequirementsTypeDO
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
import
java.util.List
;
...
@@ -77,4 +76,40 @@ public interface RequirementsDao {
...
@@ -77,4 +76,40 @@ public interface RequirementsDao {
List
<
RequirementsInfoDO
>
appPublishList
();
List
<
RequirementsInfoDO
>
appPublishList
();
RequirementsInfoDO
detailPublish
(
Integer
id
);
RequirementsInfoDO
detailPublish
(
Integer
id
);
void
addPublishService
(
ServiceRequirementsDO
requirementsInfoDO
);
ServiceRequirementsDO
grabTheOrder
(
String
publisherNumber
);
void
updateGrabTheOrder
(
String
publisherNumber
,
Integer
repertory
);
void
insertService
(
RequirementsServiceDO
requirementsServiceDO
);
void
arriveAtTheScene
(
ServiceArriveSceneDO
serviceArriveSceneDO
);
void
updateScene
(
Integer
requirementsInfoId
);
ServiceArriveSceneDO
arriveAtTheSceneDetails
(
Integer
requirementsInfoId
,
Integer
userAccountId
);
void
fulfilATask
(
ServiceFulfilATaskDO
serviceFulfilATaskDO
);
void
updateFulfilATask
(
Integer
requirementsInfoId
);
ServiceFulfilATaskDO
fulfilATaskDetails
(
Integer
requirementsInfoId
,
Integer
userAccountId
);
void
settleAccounts
(
ServiceSettleAccountsDO
settleAccountsDO
);
void
updatesettleAccounts
(
Integer
requirementsInfoId
);
ServiceSettleAccountsDO
settleAccountsDetails
(
Integer
requirementsInfoId
,
Integer
userAccountId
);
void
evaluate
(
ServiceEvaluateDO
serviceEvaluateDO
);
void
updateEvaluate
(
Integer
requirementsInfoId
);
ServiceEvaluateDO
evaluateDetails
(
Integer
requirementsInfoId
,
Integer
userAccountId
);
List
<
RequirementsInfoDO
>
myPublish
(
Integer
userAccountId
);
List
<
RequirementsInfoDO
>
myPreempt
(
Integer
userAccountId
);
}
}
release-service/src/main/java/com/mmc/csf/release/entity/requirements/RequirementsInfoDO.java
浏览文件 @
a25f0ccf
...
@@ -13,6 +13,7 @@ import javax.validation.constraints.NotBlank;
...
@@ -13,6 +13,7 @@ import javax.validation.constraints.NotBlank;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Size
;
import
javax.validation.constraints.Size
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.Date
;
/**
/**
...
@@ -77,6 +78,34 @@ public class RequirementsInfoDO implements Serializable {
...
@@ -77,6 +78,34 @@ public class RequirementsInfoDO implements Serializable {
@ApiModelProperty
(
value
=
"发布者订单编号"
)
@ApiModelProperty
(
value
=
"发布者订单编号"
)
private
String
publisherNumber
;
private
String
publisherNumber
;
@ApiModelProperty
(
value
=
"订单级别"
,
example
=
"订单级别"
,
required
=
true
)
@NotNull
(
message
=
"订单级别"
,
groups
=
{
Insert
.
class
})
private
String
orderLevel
;
@ApiModelProperty
(
value
=
"服务id"
,
example
=
"服务id"
,
required
=
true
)
private
Integer
serviceId
;
@ApiModelProperty
(
value
=
"服务名称"
,
example
=
"服务名称"
)
private
String
serviceName
;
@ApiModelProperty
(
value
=
"发布者支付总金额"
,
example
=
"发布者支付总金额"
)
private
BigDecimal
totalAmount
;
@ApiModelProperty
(
value
=
"允许几人抢单"
,
example
=
"允许几人抢单"
)
private
Integer
repertory
;
private
String
insurance
;
private
String
doing
;
private
String
waiting
;
private
String
userPort
;
private
String
flyerPort
;
private
String
orderStatus
;
private
Integer
publish
;
private
BigDecimal
preemptTotalAmount
;
public
RequirementsInfoVO
buildRequirementsInfoVO
()
{
public
RequirementsInfoVO
buildRequirementsInfoVO
()
{
return
RequirementsInfoVO
.
builder
().
id
(
this
.
id
).
requirementTypeId
(
this
.
requirementTypeId
).
userAccountId
(
this
.
userAccountId
).
publishName
(
this
.
publishName
)
return
RequirementsInfoVO
.
builder
().
id
(
this
.
id
).
requirementTypeId
(
this
.
requirementTypeId
).
userAccountId
(
this
.
userAccountId
).
publishName
(
this
.
publishName
)
...
@@ -87,7 +116,21 @@ public class RequirementsInfoDO implements Serializable {
...
@@ -87,7 +116,21 @@ public class RequirementsInfoDO implements Serializable {
.
latitude
(
this
.
latitude
)
.
latitude
(
this
.
latitude
)
.
requirementTypeName
(
this
.
requirementTypeName
)
.
requirementTypeName
(
this
.
requirementTypeName
)
.
publisherNumber
(
this
.
publisherNumber
)
.
publisherNumber
(
this
.
publisherNumber
)
.
requireUrl
(
this
.
requireUrl
).
build
();
.
requireUrl
(
this
.
requireUrl
)
.
orderLevelEnum
(
this
.
orderLevel
)
.
serviceId
(
this
.
serviceId
)
.
serviceName
(
this
.
serviceName
)
.
totalAmount
(
this
.
totalAmount
)
.
insurance
(
this
.
insurance
)
.
doing
(
this
.
doing
)
.
waiting
(
this
.
waiting
)
.
userPort
(
this
.
userPort
)
.
flyerPort
(
this
.
flyerPort
)
.
orderStatus
(
this
.
orderStatus
)
.
publish
(
this
.
publish
)
.
preemptTotalAmount
(
this
.
preemptTotalAmount
)
.
build
();
}
}
public
RequirementsInfoDO
(
RequirementsInfoVO
requirementsInfoVO
)
{
public
RequirementsInfoDO
(
RequirementsInfoVO
requirementsInfoVO
)
{
...
...
release-service/src/main/java/com/mmc/csf/release/entity/requirements/RequirementsServiceDO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
release
.
entity
.
requirements
;
import
com.mmc.csf.infomation.dto.PilotCertificationInteriorDTO
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
/**
* @Author small
* @Date 2023/8/18 17:23
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
RequirementsServiceDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
1811974173256250060L
;
@ApiModelProperty
(
value
=
"id"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"服务需求id"
)
private
Integer
requirementsInfoId
;
@ApiModelProperty
(
value
=
"字典id"
)
private
Integer
serviceDictionaryId
;
@ApiModelProperty
(
value
=
"抢单飞手id"
)
private
Integer
pilotCertificationId
;
@ApiModelProperty
(
value
=
"抢单飞手用户id"
)
private
Integer
pilotCertificationUserId
;
@ApiModelProperty
(
value
=
"抢单飞手团队id"
)
private
Integer
teamId
;
@ApiModelProperty
(
value
=
"抢单飞手团队用户id"
)
private
Integer
teamUserId
;
@ApiModelProperty
(
value
=
"云享金"
,
example
=
"10"
)
private
BigDecimal
cashAmount
;
@ApiModelProperty
(
value
=
"佣金"
,
example
=
"10"
)
private
BigDecimal
salaryAmount
;
@ApiModelProperty
(
value
=
"微信金额"
,
example
=
"10"
)
private
BigDecimal
weChat
;
@ApiModelProperty
(
value
=
"微信支付订单编号"
,
example
=
"R202308191657303116170"
)
private
String
wechatPayOrderNumber
;
@ApiModelProperty
(
value
=
"抢单支付的总金额"
,
example
=
"抢单支付的总金额"
)
private
BigDecimal
preemptTotalAmount
;
public
RequirementsServiceDO
(
PilotCertificationInteriorDTO
pilot
,
ServiceRequirementsDO
requirementsInfoDO
)
{
this
.
pilotCertificationId
=
pilot
.
getId
();
this
.
pilotCertificationUserId
=
pilot
.
getUserAccountId
();
this
.
requirementsInfoId
=
requirementsInfoDO
.
getId
();
this
.
serviceDictionaryId
=
2
;
}
}
release-service/src/main/java/com/mmc/csf/release/entity/requirements/ServiceArriveSceneDO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
release
.
entity
.
requirements
;
import
com.mmc.csf.infomation.dto.ServiceArriveSceneDTO
;
import
com.mmc.csf.infomation.vo.ServiceArriveSceneVO
;
import
com.mmc.csf.release.model.group.Update
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.NotNull
;
/**
* @Author small
* @Date 2023/8/18 19:29
* @Version 1.0
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
ServiceArriveSceneDO
{
@ApiModelProperty
(
value
=
"id"
)
@NotNull
(
message
=
"id不能为空"
,
groups
=
{
Update
.
class
})
private
Integer
id
;
@ApiModelProperty
(
value
=
"id"
)
private
Double
longitude
;
@ApiModelProperty
(
value
=
"id"
)
private
Double
latitude
;
@ApiModelProperty
(
value
=
"现场地址"
)
private
String
sceneAddress
;
@ApiModelProperty
(
value
=
"现场地址的url"
,
required
=
true
)
private
String
sceneUrl
;
@ApiModelProperty
(
value
=
"现场用户id"
,
hidden
=
true
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"服务需求id"
,
required
=
true
)
private
Integer
requirementsInfoId
;
public
ServiceArriveSceneDO
(
ServiceArriveSceneVO
serviceArriveSceneVO
)
{
this
.
longitude
=
serviceArriveSceneVO
.
getLongitude
();
this
.
latitude
=
serviceArriveSceneVO
.
getLatitude
();
this
.
sceneAddress
=
serviceArriveSceneVO
.
getSceneAddress
();
this
.
sceneUrl
=
serviceArriveSceneVO
.
getSceneUrl
();
this
.
userAccountId
=
serviceArriveSceneVO
.
getUserAccountId
();
this
.
requirementsInfoId
=
serviceArriveSceneVO
.
getRequirementsInfoId
();
}
public
ServiceArriveSceneDTO
buildServiceArriveSceneDTO
()
{
return
ServiceArriveSceneDTO
.
builder
()
.
longitude
(
this
.
longitude
)
.
latitude
(
this
.
latitude
)
.
sceneAddress
(
this
.
sceneAddress
)
.
sceneUrl
(
this
.
sceneUrl
)
.
userAccountId
(
this
.
userAccountId
)
.
requirementsInfoId
(
this
.
requirementsInfoId
)
.
build
();
}
}
release-service/src/main/java/com/mmc/csf/release/entity/requirements/ServiceEvaluateDO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
release
.
entity
.
requirements
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.mmc.csf.infomation.dto.ServiceEvaluateDTO
;
import
com.mmc.csf.infomation.vo.ServiceEvaluateVO
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Date
;
/**
* @Author small
* @Date 2023/8/18 22:08
* @Version 1.0
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
ServiceEvaluateDO
{
@ApiModelProperty
(
value
=
"id"
,
example
=
"1"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"需求id"
,
example
=
"83"
)
private
Integer
requirementsInfoId
;
@ApiModelProperty
(
value
=
"完成任务的用户"
,
example
=
"1"
,
hidden
=
true
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"评价内容"
,
example
=
"1"
)
private
String
evaluationContent
;
@ApiModelProperty
(
value
=
"星级"
,
example
=
"星"
)
private
String
starLevel
;
@ApiModelProperty
(
value
=
"评价图片"
,
example
=
"星"
)
private
String
evaluationUrl
;
@JSONField
(
format
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
createTime
;
@JSONField
(
format
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
updateTime
;
public
ServiceEvaluateDO
(
ServiceEvaluateVO
evaluateVO
)
{
this
.
requirementsInfoId
=
evaluateVO
.
getRequirementsInfoId
();
this
.
userAccountId
=
evaluateVO
.
getUserAccountId
();
this
.
evaluationContent
=
evaluateVO
.
getEvaluationContent
();
this
.
starLevel
=
evaluateVO
.
getStarLevel
();
this
.
evaluationUrl
=
evaluateVO
.
getEvaluationUrl
();
}
public
ServiceEvaluateDTO
buildServiceEvaluateDTO
()
{
return
ServiceEvaluateDTO
.
builder
()
.
id
(
this
.
id
)
.
requirementsInfoId
(
this
.
requirementsInfoId
)
.
userAccountId
(
this
.
userAccountId
)
.
starLevel
(
this
.
starLevel
)
.
evaluationContent
(
this
.
evaluationContent
)
.
evaluationUrl
(
this
.
evaluationUrl
)
.
createTime
(
this
.
createTime
)
.
updateTime
(
this
.
updateTime
)
.
build
();
}
}
release-service/src/main/java/com/mmc/csf/release/entity/requirements/ServiceFulfilATaskDO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
release
.
entity
.
requirements
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.mmc.csf.infomation.dto.ServiceFulfilATaskDTO
;
import
com.mmc.csf.infomation.vo.ServiceFulfilATaskVO
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Date
;
/**
* @Author small
* @Date 2023/8/18 20:40
* @Version 1.0
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
ServiceFulfilATaskDO
{
private
Integer
id
;
@ApiModelProperty
(
value
=
"完成任务描述"
,
example
=
"完成任务描述一下"
)
private
String
taskDescribe
;
@ApiModelProperty
(
value
=
"完成任务图片"
,
example
=
"http://"
)
private
String
taskUrl
;
@ApiModelProperty
(
value
=
"需求id"
,
example
=
"83"
)
private
Integer
requirementsInfoId
;
@ApiModelProperty
(
value
=
"完成任务的用户"
,
example
=
"1"
,
hidden
=
true
)
private
Integer
userAccountId
;
@JSONField
(
format
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
createTime
;
@JSONField
(
format
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
updateTime
;
public
ServiceFulfilATaskDO
(
ServiceFulfilATaskVO
serviceFulfilATaskVO
)
{
this
.
taskDescribe
=
serviceFulfilATaskVO
.
getTaskDescribe
();
this
.
taskUrl
=
serviceFulfilATaskVO
.
getTaskUrl
();
this
.
requirementsInfoId
=
serviceFulfilATaskVO
.
getRequirementsInfoId
();
this
.
userAccountId
=
serviceFulfilATaskVO
.
getUserAccountId
();
}
public
ServiceFulfilATaskDTO
buildServiceFulfilATaskDTO
()
{
return
ServiceFulfilATaskDTO
.
builder
()
.
id
(
this
.
id
)
.
taskDescribe
(
this
.
taskDescribe
)
.
taskUrl
(
this
.
taskUrl
)
.
requirementsInfoId
(
this
.
requirementsInfoId
)
.
userAccountId
(
this
.
userAccountId
)
.
createTime
(
this
.
createTime
)
.
updateTime
(
this
.
updateTime
)
.
build
();
}
}
release-service/src/main/java/com/mmc/csf/release/entity/requirements/ServiceRequirementsDO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
release
.
entity
.
requirements
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.mmc.csf.infomation.vo.OrderLevelEnum
;
import
com.mmc.csf.infomation.vo.ServiceRequirementsVO
;
import
com.mmc.csf.release.model.group.Insert
;
import
com.mmc.csf.release.model.group.Update
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.hibernate.validator.constraints.Length
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @Author small
* @Date 2023/8/17 10:54
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
ServiceRequirementsDO
{
private
static
final
long
serialVersionUID
=
-
447951390213113317L
;
@ApiModelProperty
(
value
=
"id"
)
@NotNull
(
message
=
"id不能为空"
,
groups
=
{
Update
.
class
})
private
Integer
id
;
@ApiModelProperty
(
value
=
"id"
)
@NotBlank
(
message
=
"服务类型id不能为空"
,
groups
=
{
Insert
.
class
,
Update
.
class
})
private
String
serviceId
;
@ApiModelProperty
(
value
=
"飞行日期——任务开始时间"
,
example
=
"2023-07-25"
,
required
=
true
)
@NotNull
(
message
=
"任务开始时间不能为空"
,
groups
=
{
Insert
.
class
,
Update
.
class
})
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
taskStartTime
;
@ApiModelProperty
(
value
=
"飞行日期——任务结束时间"
,
example
=
"2023-07-26"
,
required
=
true
)
@NotNull
(
message
=
"任务开始时间不能为空"
,
groups
=
{
Insert
.
class
,
Update
.
class
})
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
taskEndTime
;
@ApiModelProperty
(
value
=
"飞行位置——任务地址"
,
example
=
"广东省深圳市"
,
required
=
true
)
@NotBlank
(
message
=
"任务地址不能为空"
,
groups
=
{
Insert
.
class
,
Update
.
class
})
private
String
taskAddress
;
@ApiModelProperty
(
value
=
"飞行位置——任务经度"
,
example
=
"23.344324"
,
required
=
true
)
@NotNull
(
message
=
"任务经度不能为空"
,
groups
=
{
Insert
.
class
,
Update
.
class
})
private
Double
longitude
;
@ApiModelProperty
(
value
=
"飞行位置——任务纬度"
,
example
=
"44.344324"
,
required
=
true
)
@NotNull
(
message
=
"任务纬度不能为空"
,
groups
=
{
Insert
.
class
,
Update
.
class
})
private
Double
latitude
;
@ApiModelProperty
(
value
=
"需求描述"
,
example
=
"描述一下"
,
required
=
true
)
@NotNull
(
message
=
"需求描述不能为空"
,
groups
=
{
Insert
.
class
})
@Length
(
max
=
300
,
message
=
"字符过长"
)
private
String
requireDescription
;
@ApiModelProperty
(
value
=
"订单金额"
,
example
=
"订单金额"
,
required
=
true
)
@NotNull
(
message
=
"订单金额"
,
groups
=
{
Insert
.
class
})
private
BigDecimal
orderAmount
;
@ApiModelProperty
(
value
=
"飞手保险"
,
example
=
"飞手保险"
,
required
=
true
)
@NotNull
(
message
=
"飞手保险"
,
groups
=
{
Insert
.
class
})
private
String
insurance
;
@ApiModelProperty
(
value
=
"订单级别"
,
example
=
"订单级别"
,
required
=
true
)
@NotNull
(
message
=
"订单级别"
,
groups
=
{
Insert
.
class
})
private
OrderLevelEnum
orderLevelEnum
;
@ApiModelProperty
(
value
=
"后台获取token里面的用户id"
,
hidden
=
true
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"发布者姓名"
,
example
=
"张三"
)
private
String
publishName
;
@ApiModelProperty
(
value
=
"发布者电话"
,
example
=
"1892994543"
,
required
=
true
)
@NotNull
(
message
=
"发布者电话不能为空"
,
groups
=
{
Insert
.
class
})
private
String
publishPhone
;
@ApiModelProperty
(
value
=
"发布者订单编号"
)
private
String
publisherNumber
;
@ApiModelProperty
(
value
=
"0普通 100急单 300置顶"
)
private
BigDecimal
orderLevelAmount
;
@ApiModelProperty
(
value
=
"订单级别 REGULAR_ORDER,RUSH_ORDER,TOP_ORDER"
)
private
String
orderLevel
;
@ApiModelProperty
(
value
=
"总金额"
,
example
=
"100"
,
required
=
true
)
@NotNull
(
message
=
"总金额"
,
groups
=
{
Insert
.
class
})
private
BigDecimal
totalAmount
;
@ApiModelProperty
(
value
=
"云享金"
,
example
=
"10"
)
private
BigDecimal
cashAmount
;
@ApiModelProperty
(
value
=
"佣金"
,
example
=
"10"
)
private
BigDecimal
salaryAmount
;
@ApiModelProperty
(
value
=
"微信金额"
,
example
=
"10"
)
private
BigDecimal
weChat
;
@ApiModelProperty
(
value
=
"微信支付订单编号"
,
example
=
"R202308191657303116170"
)
private
String
wechatPayOrderNumber
;
private
Integer
repertory
;
@ApiModelProperty
(
value
=
"支付方式,云享金:1,佣金:2,微信支付:3"
,
example
=
"1,2,3"
)
private
String
paymentType
;
public
ServiceRequirementsDO
(
ServiceRequirementsVO
serviceRequirementsVO
)
{
this
.
id
=
serviceRequirementsVO
.
getId
();
this
.
userAccountId
=
serviceRequirementsVO
.
getUserAccountId
();
this
.
publishName
=
serviceRequirementsVO
.
getPublishName
();
this
.
publishPhone
=
serviceRequirementsVO
.
getPublishPhone
();
this
.
requireDescription
=
serviceRequirementsVO
.
getRequireDescription
();
this
.
taskStartTime
=
serviceRequirementsVO
.
getTaskStartTime
();
this
.
taskEndTime
=
serviceRequirementsVO
.
getTaskEndTime
();
this
.
taskAddress
=
serviceRequirementsVO
.
getTaskAddress
();
this
.
longitude
=
serviceRequirementsVO
.
getLongitude
();
this
.
latitude
=
serviceRequirementsVO
.
getLatitude
();
this
.
orderLevelAmount
=
OrderLevelEnum
.
match
(
serviceRequirementsVO
.
getOrderLevelEnum
().
getKey
()).
getValue
();
this
.
orderLevel
=
serviceRequirementsVO
.
getOrderLevelEnum
().
getKey
();
this
.
totalAmount
=
serviceRequirementsVO
.
getOrderAmount
().
add
(
OrderLevelEnum
.
match
(
serviceRequirementsVO
.
getOrderLevelEnum
().
getKey
()).
getValue
());
this
.
serviceId
=
serviceRequirementsVO
.
getServiceId
();
this
.
orderAmount
=
serviceRequirementsVO
.
getOrderAmount
();
this
.
insurance
=
serviceRequirementsVO
.
getInsurance
();
this
.
cashAmount
=
serviceRequirementsVO
.
getCashAmount
();
this
.
salaryAmount
=
serviceRequirementsVO
.
getSalaryAmount
();
this
.
wechatPayOrderNumber
=
serviceRequirementsVO
.
getWechatPayOrderNumber
();
this
.
weChat
=
serviceRequirementsVO
.
getWeChat
();
this
.
paymentType
=
serviceRequirementsVO
.
getPaymentType
();
}
}
release-service/src/main/java/com/mmc/csf/release/entity/requirements/ServiceSettleAccountsDO.java
0 → 100644
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
release
.
entity
.
requirements
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.mmc.csf.infomation.dto.ServiceSettleAccountsDTO
;
import
com.mmc.csf.infomation.vo.ServiceSettleAccountsVO
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @Author small
* @Date 2023/8/18 21:24
* @Version 1.0
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
ServiceSettleAccountsDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
447951390213113317L
;
private
Integer
id
;
@ApiModelProperty
(
value
=
"订单金额"
,
example
=
"100"
)
private
BigDecimal
orderAmount
;
@ApiModelProperty
(
value
=
"备注"
,
example
=
"项目延期"
)
private
String
remark
;
@ApiModelProperty
(
value
=
"需求id"
,
example
=
"83"
)
private
Integer
requirementsInfoId
;
@ApiModelProperty
(
value
=
"结算的用户id"
,
example
=
"1"
,
hidden
=
true
)
private
Integer
userAccountId
;
@JSONField
(
format
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
createTime
;
@JSONField
(
format
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
updateTime
;
public
ServiceSettleAccountsDO
(
ServiceSettleAccountsVO
accountsVO
)
{
this
.
id
=
accountsVO
.
getId
();
this
.
orderAmount
=
accountsVO
.
getOrderAmount
();
this
.
remark
=
accountsVO
.
getRemark
();
this
.
requirementsInfoId
=
accountsVO
.
getRequirementsInfoId
();
this
.
userAccountId
=
accountsVO
.
getUserAccountId
();
}
public
ServiceSettleAccountsDTO
buildServiceSettleAccountsDTO
()
{
return
ServiceSettleAccountsDTO
.
builder
()
.
id
(
this
.
id
)
.
orderAmount
(
this
.
orderAmount
)
.
remark
(
this
.
remark
)
.
requirementsInfoId
(
this
.
requirementsInfoId
)
.
userAccountId
(
this
.
userAccountId
)
.
createTime
(
this
.
createTime
)
.
updateTime
(
this
.
updateTime
)
.
build
();
}
}
release-service/src/main/java/com/mmc/csf/release/feign/PmsAppApi.java
浏览文件 @
a25f0ccf
...
@@ -2,6 +2,7 @@ package com.mmc.csf.release.feign;
...
@@ -2,6 +2,7 @@ package com.mmc.csf.release.feign;
import
com.mmc.csf.release.feign.hystrix.PmsAppApHystrix
;
import
com.mmc.csf.release.feign.hystrix.PmsAppApHystrix
;
import
com.mmc.csf.release.flyer.dto.AllCategoryDTO
;
import
com.mmc.csf.release.flyer.dto.AllCategoryDTO
;
import
com.mmc.csf.release.industry.IndustryTypeDTO
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestMethod
;
...
@@ -17,4 +18,9 @@ import java.util.List;
...
@@ -17,4 +18,9 @@ import java.util.List;
public
interface
PmsAppApi
{
public
interface
PmsAppApi
{
@RequestMapping
(
value
=
"/pms/classify/feignQqueryCategoryInfoByType"
,
method
=
RequestMethod
.
GET
)
@RequestMapping
(
value
=
"/pms/classify/feignQqueryCategoryInfoByType"
,
method
=
RequestMethod
.
GET
)
public
List
<
AllCategoryDTO
>
feignQqueryCategoryInfoByType
(
@RequestParam
Integer
type
);
public
List
<
AllCategoryDTO
>
feignQqueryCategoryInfoByType
(
@RequestParam
Integer
type
);
@RequestMapping
(
value
=
"/pms/industry/getIndustryTypeById"
,
method
=
RequestMethod
.
GET
)
public
IndustryTypeDTO
feignQquerygetIndustryTypeById
(
@RequestParam
Integer
id
);
}
}
release-service/src/main/java/com/mmc/csf/release/feign/UserAppApi.java
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
release
.
feign
;
package
com
.
mmc
.
csf
.
release
.
feign
;
import
com.mmc.csf.infomation.dto.PilotCertificationInteriorDTO
;
import
com.mmc.csf.infomation.dto.UserAccountSimpleDTO
;
import
com.mmc.csf.infomation.dto.UserAccountSimpleDTO
;
import
com.mmc.csf.release.auth.qo.BUserAccountQO
;
import
com.mmc.csf.release.auth.qo.BUserAccountQO
;
import
com.mmc.csf.release.auth.qo.UserAccountQO
;
import
com.mmc.csf.release.auth.qo.UserAccountQO
;
...
@@ -19,6 +21,7 @@ import java.util.List;
...
@@ -19,6 +21,7 @@ import java.util.List;
public
interface
UserAppApi
{
public
interface
UserAppApi
{
/**
/**
* 根据用户id获取基本信息
* 根据用户id获取基本信息
*
* @param userAccountId
* @param userAccountId
* @return
* @return
*/
*/
...
@@ -27,6 +30,7 @@ public interface UserAppApi {
...
@@ -27,6 +30,7 @@ public interface UserAppApi {
/**
/**
* 根据地区信息查询用户id
* 根据地区信息查询用户id
*
* @param provinceCode
* @param provinceCode
* @param cityCode
* @param cityCode
* @param districtCode
* @param districtCode
...
@@ -44,14 +48,26 @@ public interface UserAppApi {
...
@@ -44,14 +48,26 @@ public interface UserAppApi {
* @return {@link List}<{@link UserAccountSimpleDTO}>
* @return {@link List}<{@link UserAccountSimpleDTO}>
*/
*/
@PostMapping
(
"/userapp/back-user/feignListBAccountPage"
)
@PostMapping
(
"/userapp/back-user/feignListBAccountPage"
)
List
<
UserAccountSimpleDTO
>
feignListBAccountPage
(
@ApiParam
(
value
=
"账号查询QO"
,
required
=
true
)
@RequestBody
BUserAccountQO
bUserAccountQO
,
@RequestHeader
(
"token"
)
String
token
);
List
<
UserAccountSimpleDTO
>
feignListBAccountPage
(
@ApiParam
(
value
=
"账号查询QO"
,
required
=
true
)
@RequestBody
BUserAccountQO
bUserAccountQO
,
@RequestHeader
(
"token"
)
String
token
);
/**
/**
* 获取小程序用户集合列表页面
* 获取小程序用户集合列表页面
*
* @param userAccountQO
* @param userAccountQO
* @param token
* @param token
* @return
* @return
*/
*/
@PostMapping
(
"/userapp/user-account/feignListAppUserAccount"
)
@PostMapping
(
"/userapp/user-account/feignListAppUserAccount"
)
List
<
UserAccountSimpleDTO
>
feignListAppUserAccount
(
@ApiParam
(
value
=
"账号查询QO"
,
required
=
true
)
@RequestBody
UserAccountQO
userAccountQO
,
@RequestHeader
(
"token"
)
String
token
);
List
<
UserAccountSimpleDTO
>
feignListAppUserAccount
(
@ApiParam
(
value
=
"账号查询QO"
,
required
=
true
)
@RequestBody
UserAccountQO
userAccountQO
,
@RequestHeader
(
"token"
)
String
token
);
/**
* 根据用户id获取基本信息
*
* @param userAccountId
* @return
*/
@GetMapping
(
value
=
"/userapp/pilot/interiorDetailPilot"
)
public
PilotCertificationInteriorDTO
feignInteriorDetailPilot
(
@RequestParam
(
required
=
true
)
Integer
userAccountId
);
}
}
release-service/src/main/java/com/mmc/csf/release/feign/hystrix/PmsAppApHystrix.java
浏览文件 @
a25f0ccf
...
@@ -2,6 +2,7 @@ package com.mmc.csf.release.feign.hystrix;
...
@@ -2,6 +2,7 @@ package com.mmc.csf.release.feign.hystrix;
import
com.mmc.csf.release.feign.PmsAppApi
;
import
com.mmc.csf.release.feign.PmsAppApi
;
import
com.mmc.csf.release.flyer.dto.AllCategoryDTO
;
import
com.mmc.csf.release.flyer.dto.AllCategoryDTO
;
import
com.mmc.csf.release.industry.IndustryTypeDTO
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.List
;
import
java.util.List
;
...
@@ -17,4 +18,10 @@ public class PmsAppApHystrix implements PmsAppApi {
...
@@ -17,4 +18,10 @@ public class PmsAppApHystrix implements PmsAppApi {
log
.
info
(
"熔断--feignQqueryCategoryInfoByType:"
+
type
);
log
.
info
(
"熔断--feignQqueryCategoryInfoByType:"
+
type
);
return
null
;
return
null
;
}
}
@Override
public
IndustryTypeDTO
feignQquerygetIndustryTypeById
(
Integer
id
)
{
log
.
info
(
"熔断--feignQquerygetIndustryTypeById:"
+
id
);
return
null
;
}
}
}
release-service/src/main/java/com/mmc/csf/release/feign/hystrix/UserAppApiHystrix.java
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
release
.
feign
.
hystrix
;
package
com
.
mmc
.
csf
.
release
.
feign
.
hystrix
;
import
com.mmc.csf.infomation.dto.PilotCertificationInteriorDTO
;
import
com.mmc.csf.infomation.dto.UserAccountSimpleDTO
;
import
com.mmc.csf.infomation.dto.UserAccountSimpleDTO
;
import
com.mmc.csf.release.auth.qo.BUserAccountQO
;
import
com.mmc.csf.release.auth.qo.BUserAccountQO
;
import
com.mmc.csf.release.auth.qo.UserAccountQO
;
import
com.mmc.csf.release.auth.qo.UserAccountQO
;
...
@@ -37,4 +38,10 @@ public class UserAppApiHystrix implements UserAppApi {
...
@@ -37,4 +38,10 @@ public class UserAppApiHystrix implements UserAppApi {
log
.
error
(
"熔断:feignListAppUserAccount:{}"
,
userAccountQO
);
log
.
error
(
"熔断:feignListAppUserAccount:{}"
,
userAccountQO
);
return
null
;
return
null
;
}
}
@Override
public
PilotCertificationInteriorDTO
feignInteriorDetailPilot
(
Integer
userAccountId
)
{
log
.
error
(
"熔断:feignInteriorDetailPilot:{}"
,
userAccountId
);
return
null
;
}
}
}
release-service/src/main/java/com/mmc/csf/release/service/RequirementsService.java
浏览文件 @
a25f0ccf
package
com
.
mmc
.
csf
.
release
.
service
;
package
com
.
mmc
.
csf
.
release
.
service
;
import
com.mmc.csf.common.util.web.ResultBody
;
import
com.mmc.csf.common.util.web.ResultBody
;
import
com.mmc.csf.infomation.dto.ServiceArriveSceneDTO
;
import
com.mmc.csf.infomation.dto.ServiceEvaluateDTO
;
import
com.mmc.csf.infomation.dto.ServiceFulfilATaskDTO
;
import
com.mmc.csf.infomation.dto.ServiceSettleAccountsDTO
;
import
com.mmc.csf.infomation.qo.IndustryCaseQO
;
import
com.mmc.csf.infomation.qo.IndustryCaseQO
;
import
com.mmc.csf.infomation.vo.
RequirementsInfoVO
;
import
com.mmc.csf.infomation.vo.
*
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
...
@@ -63,4 +67,31 @@ public interface RequirementsService {
...
@@ -63,4 +67,31 @@ public interface RequirementsService {
ResultBody
detailPublish
(
Integer
id
,
HttpServletRequest
request
,
Integer
userAccountId
);
ResultBody
detailPublish
(
Integer
id
,
HttpServletRequest
request
,
Integer
userAccountId
);
ResultBody
backDetailPublish
(
Integer
id
,
HttpServletRequest
request
,
Integer
userAccountId
);
ResultBody
backDetailPublish
(
Integer
id
,
HttpServletRequest
request
,
Integer
userAccountId
);
ResultBody
publishService
(
ServiceRequirementsVO
serviceRequirementsVO
,
HttpServletRequest
request
);
ResultBody
<
RequirementsInfoVO
>
myPublish
(
Integer
userAccountId
);
ResultBody
<
RequirementsInfoVO
>
grabTheOrder
(
GrabTheOrderVO
grabTheOrderVO
,
HttpServletRequest
request
);
ResultBody
arriveAtTheScene
(
ServiceArriveSceneVO
serviceArriveSceneVO
);
ResultBody
<
ServiceArriveSceneDTO
>
arriveAtTheSceneDetails
(
Integer
requirementsInfoId
,
Integer
userAccountId
);
ResultBody
fulfilATask
(
ServiceFulfilATaskVO
fulfilATaskVO
);
ResultBody
<
ServiceFulfilATaskDTO
>
fulfilATaskDetails
(
Integer
requirementsInfoId
,
Integer
userAccountId
);
ResultBody
settleAccounts
(
ServiceSettleAccountsVO
settleAccountsVO
);
ResultBody
<
ServiceSettleAccountsDTO
>
settleAccountsDetails
(
Integer
requirementsInfoId
,
Integer
userAccountId
);
ResultBody
evaluate
(
ServiceEvaluateVO
evaluateVO
);
ResultBody
<
ServiceEvaluateDTO
>
evaluateDetails
(
Integer
requirementsInfoId
,
Integer
userAccountId
);
ResultBody
publisherNumber
(
GetOrderNumberVO
getOrderNumberVO
,
HttpServletRequest
request
);
ResultBody
<
RequirementsInfoVO
>
myPreempt
(
Integer
userAccountId
);
}
}
release-service/src/main/java/com/mmc/csf/release/service/impl/RequirementsServiceImpl.java
浏览文件 @
a25f0ccf
...
@@ -2,34 +2,38 @@ package com.mmc.csf.release.service.impl;
...
@@ -2,34 +2,38 @@ package com.mmc.csf.release.service.impl;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.mmc.csf.common.util.json.JsonUtil
;
import
com.mmc.csf.common.util.page.PageResult
;
import
com.mmc.csf.common.util.page.PageResult
;
import
com.mmc.csf.common.util.web.ResultBody
;
import
com.mmc.csf.common.util.web.ResultBody
;
import
com.mmc.csf.common.util.web.ResultEnum
;
import
com.mmc.csf.common.util.web.ResultEnum
;
import
com.mmc.csf.infomation.dto.*
;
import
com.mmc.csf.infomation.qo.IndustryCaseQO
;
import
com.mmc.csf.infomation.qo.IndustryCaseQO
;
import
com.mmc.csf.infomation.vo.RequirementsInfoVO
;
import
com.mmc.csf.infomation.vo.*
;
import
com.mmc.csf.infomation.vo.RequirementsTypeVO
;
import
com.mmc.csf.release.dao.RequirementsDao
;
import
com.mmc.csf.release.dao.RequirementsDao
;
import
com.mmc.csf.release.entity.requirements.
RequirementsInfoDO
;
import
com.mmc.csf.release.entity.requirements.
*
;
import
com.mmc.csf.release.
entity.requirements.RequirementsTypeDO
;
import
com.mmc.csf.release.
feign.PmsAppApi
;
import
com.mmc.csf.release.feign.UserAppApi
;
import
com.mmc.csf.release.feign.UserAppApi
;
import
com.mmc.csf.release.industry.IndustryTypeDTO
;
import
com.mmc.csf.release.service.RequirementsService
;
import
com.mmc.csf.release.service.RequirementsService
;
import
com.mmc.csf.release.util.RestTemplateUtil
;
import
com.mmc.csf.release.util.RestTemplateUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.gavaghan.geodesy.Ellipsoid
;
import
org.gavaghan.geodesy.GeodeticCalculator
;
import
org.gavaghan.geodesy.GeodeticCurve
;
import
org.gavaghan.geodesy.GlobalCoordinates
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.http.*
;
import
org.springframework.http.*
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.MultiValueMap
;
import
org.springframework.web.client.RestClientException
;
import
org.springframework.web.client.RestClientException
;
import
org.springframework.web.client.RestTemplate
;
import
org.springframework.web.client.RestTemplate
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.*
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Random
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
...
@@ -55,6 +59,15 @@ public class RequirementsServiceImpl implements RequirementsService {
...
@@ -55,6 +59,15 @@ public class RequirementsServiceImpl implements RequirementsService {
private
String
omsApp
;
private
String
omsApp
;
@Autowired
@Autowired
private
PmsAppApi
pmsAppApi
;
@Value
(
"${iuav.userapp.url}"
)
private
String
userApp
;
@Value
(
"${iuav.pmsapp.url}"
)
private
String
pmsApp
;
@Autowired
private
StringRedisTemplate
stringRedisTemplate
;
private
StringRedisTemplate
stringRedisTemplate
;
@Override
@Override
...
@@ -139,7 +152,16 @@ public class RequirementsServiceImpl implements RequirementsService {
...
@@ -139,7 +152,16 @@ public class RequirementsServiceImpl implements RequirementsService {
@Override
@Override
public
ResultBody
appPublishList
()
{
public
ResultBody
appPublishList
()
{
List
<
RequirementsInfoDO
>
requirementsInfoDOS
=
requirementsDao
.
appPublishList
();
List
<
RequirementsInfoDO
>
requirementsInfoDOS
=
requirementsDao
.
appPublishList
();
//远程调用服务一级分类
List
<
IndustryTypeDTO
>
industryTypeDTOS
=
listIndustry
();
List
<
RequirementsInfoVO
>
collect
=
requirementsInfoDOS
.
stream
().
map
(
RequirementsInfoDO:
:
buildRequirementsInfoVO
).
collect
(
Collectors
.
toList
());
List
<
RequirementsInfoVO
>
collect
=
requirementsInfoDOS
.
stream
().
map
(
RequirementsInfoDO:
:
buildRequirementsInfoVO
).
collect
(
Collectors
.
toList
());
for
(
RequirementsInfoVO
requirementsInfoVO
:
collect
)
{
for
(
IndustryTypeDTO
industryTypeDTO
:
industryTypeDTOS
)
{
if
(
requirementsInfoVO
.
getServiceId
()
!=
null
&&
requirementsInfoVO
.
getServiceId
().
equals
(
industryTypeDTO
.
getId
()))
{
requirementsInfoVO
.
setServiceName
(
industryTypeDTO
.
getTypeName
());
}
}
}
return
ResultBody
.
success
(
collect
);
return
ResultBody
.
success
(
collect
);
}
}
...
@@ -155,7 +177,8 @@ public class RequirementsServiceImpl implements RequirementsService {
...
@@ -155,7 +177,8 @@ public class RequirementsServiceImpl implements RequirementsService {
requirementsInfoVO
.
setOrderNumber
(
randomOrderCode
());
requirementsInfoVO
.
setOrderNumber
(
randomOrderCode
());
requirementsInfoVO
.
setPublishAccountId
(
requirementsInfoDO
.
getUserAccountId
());
requirementsInfoVO
.
setPublishAccountId
(
requirementsInfoDO
.
getUserAccountId
());
requirementsInfoVO
.
setRequirementsInfoId
(
requirementsInfoDO
.
getId
());
requirementsInfoVO
.
setRequirementsInfoId
(
requirementsInfoDO
.
getId
());
IndustryTypeDTO
industryTypeDTO
=
pmsAppApi
.
feignQquerygetIndustryTypeById
(
requirementsInfoVO
.
getServiceId
());
requirementsInfoVO
.
setServiceName
(
industryTypeDTO
.
getTypeName
());
//已经支付
//已经支付
String
s
=
stringRedisTemplate
.
opsForValue
().
get
(
requirementsInfoDO
.
getId
().
toString
());
String
s
=
stringRedisTemplate
.
opsForValue
().
get
(
requirementsInfoDO
.
getId
().
toString
());
RequirementsInfoVO
orderVO
=
JSON
.
parseObject
(
s
,
RequirementsInfoVO
.
class
);
RequirementsInfoVO
orderVO
=
JSON
.
parseObject
(
s
,
RequirementsInfoVO
.
class
);
...
@@ -167,13 +190,14 @@ public class RequirementsServiceImpl implements RequirementsService {
...
@@ -167,13 +190,14 @@ public class RequirementsServiceImpl implements RequirementsService {
return
ResultBody
.
success
(
requirementsInfoVO
);
return
ResultBody
.
success
(
requirementsInfoVO
);
}
}
}
}
//生成
//生成
ResultBody
resultBody
=
releaseOrder
(
requirementsInfoVO
,
request
.
getHeader
(
"token"
));
ResultBody
resultBody
=
releaseOrder
(
requirementsInfoVO
,
request
.
getHeader
(
"token"
));
if
(
resultBody
.
getCode
().
equals
(
ResultEnum
.
THE_THIRD_PARTY_INTERFACE_IS_BEING_UPDATED
.
getResultCode
()))
{
if
(
resultBody
.
getCode
().
equals
(
ResultEnum
.
THE_THIRD_PARTY_INTERFACE_IS_BEING_UPDATED
.
getResultCode
()))
{
return
resultBody
;
return
resultBody
;
}
}
requirementsInfoVO
.
setPublishPhone
(
""
);
if
(
requirementsInfoVO
.
getPublish
()
==
0
)
{
requirementsInfoVO
.
setPublishPhone
(
""
);
}
return
ResultBody
.
success
(
requirementsInfoVO
);
return
ResultBody
.
success
(
requirementsInfoVO
);
}
}
...
@@ -212,6 +236,857 @@ public class RequirementsServiceImpl implements RequirementsService {
...
@@ -212,6 +236,857 @@ public class RequirementsServiceImpl implements RequirementsService {
return
ResultBody
.
success
(
requirementsInfoVO
);
return
ResultBody
.
success
(
requirementsInfoVO
);
}
}
@Override
public
ResultBody
<
GetOrderNumberDTO
>
publisherNumber
(
GetOrderNumberVO
getOrderNumberVO
,
HttpServletRequest
request
)
{
//用户钱包信息接口
ResultBody
resultBody
=
getCurrentUserPayWalletInfo
(
request
);
GetOrderNumberDTO
orderNumberDTO
=
new
GetOrderNumberDTO
();
orderNumberDTO
.
setUserAccountId
(
getOrderNumberVO
.
getUserAccountId
());
PayWalletDTO
payWalletDTO
=
(
PayWalletDTO
)
resultBody
.
getResult
();
//用户云享金+用户佣金>总金额
//剩余后台云享金
BigDecimal
cashAmt
=
payWalletDTO
.
getCashAmt
();
//剩余佣金
BigDecimal
salaryAmt
=
payWalletDTO
.
getSalaryAmt
();
//用户云享金加上佣金的总金额
BigDecimal
cashAndSalary
=
cashAmt
.
add
(
salaryAmt
);
//需要支付的总金额
BigDecimal
totalAmount
=
getOrderNumberVO
.
getOrderAmount
().
add
(
OrderLevelEnum
.
match
(
getOrderNumberVO
.
getOrderLevelEnum
().
getKey
()).
getValue
());
if
(
getOrderNumberVO
.
getOrderMode
()
==
2
)
{
BigDecimal
bigDecimal
=
new
BigDecimal
(
0.3
);
totalAmount
=
totalAmount
.
multiply
(
bigDecimal
).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
);
}
//需要冻结的金额
WalletFlowVO
walletFlowVO
=
new
WalletFlowVO
();
BigDecimal
tempTotalAmount
=
totalAmount
;
String
paymentType
=
getOrderNumberVO
.
getPaymentType
();
String
[]
split
=
paymentType
.
split
(
","
);
Set
<
String
>
collect
=
Arrays
.
asList
(
split
).
stream
().
collect
(
Collectors
.
toSet
());
TreeSet
<
String
>
objects
=
new
TreeSet
<>(
collect
);
for
(
String
type
:
objects
)
{
switch
(
type
)
{
case
"1"
:
if
(!(
tempTotalAmount
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
))
{
if
(
cashAmt
.
compareTo
(
tempTotalAmount
)
==
1
||
cashAmt
.
compareTo
(
tempTotalAmount
)
==
0
)
{
walletFlowVO
.
setCashAmount
(
tempTotalAmount
);
tempTotalAmount
=
BigDecimal
.
ZERO
;
}
else
{
tempTotalAmount
=
tempTotalAmount
.
subtract
(
cashAmt
);
walletFlowVO
.
setCashAmount
(
cashAmt
);
}
}
break
;
case
"2"
:
if
(!(
tempTotalAmount
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
))
{
if
(
salaryAmt
.
compareTo
(
tempTotalAmount
)
==
1
||
salaryAmt
.
compareTo
(
tempTotalAmount
)
==
0
)
{
walletFlowVO
.
setSalaryAmount
(
tempTotalAmount
);
tempTotalAmount
=
BigDecimal
.
ZERO
;
}
else
{
tempTotalAmount
=
tempTotalAmount
.
subtract
(
salaryAmt
);
walletFlowVO
.
setSalaryAmount
(
salaryAmt
);
}
}
break
;
case
"3"
:
if
(!(
tempTotalAmount
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
))
{
walletFlowVO
.
setWeChat
(
tempTotalAmount
);
tempTotalAmount
=
BigDecimal
.
ZERO
;
}
break
;
default
:
break
;
}
}
if
(
tempTotalAmount
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
//表示订单计算完成,需要支付的钱都算出来了
walletFlowVO
.
toString
();
System
.
out
.
println
(
walletFlowVO
);
orderNumberDTO
.
setWeChatPay
(
walletFlowVO
.
getWeChat
());
if
(
orderNumberDTO
.
getWeChatPay
()
!=
null
)
{
orderNumberDTO
.
setPaymentOrderNumber
(
randomOrderCode
());
}
stringRedisTemplate
.
opsForValue
().
set
(
orderNumberDTO
.
getPaymentOrderNumber
(),
JsonUtil
.
parseObjToJson
(
orderNumberDTO
));
return
ResultBody
.
success
(
orderNumberDTO
);
}
else
{
//云享金和佣金扣除完成,但是还不足支付订单金额,并且没有选择微信支付,所以支付不合法
return
ResultBody
.
success
(
"下单失败"
);
}
/* //用户剩余总金额大于需要支付的总金额
if (cashAndSalary.compareTo(totalAmount) == 1) {
//优先扣除云享金
//如果用户选择了云享金没有选择佣金及微信支付
if (getOrderNumberVO.getCashAmount().compareTo(BigDecimal.ZERO) != 0 &&
getOrderNumberVO.getSalaryAmount().compareTo(BigDecimal.ZERO) == 0 &&
getOrderNumberVO.getWeChatPay().compareTo(BigDecimal.ZERO) == 0) {
//如果云享金足够
if (cashAmt.compareTo(totalAmount) == 1) {
//冻结需要支付的金额
walletFlowVO.setCashAmount(totalAmount);
BigDecimal cashAmount = walletFlowVO.getCashAmount();
}
//云享金不够
if (cashAmt.compareTo(totalAmount) == -1) {
return ResultBody.error("请选择多个支付方式,云享金余额不足");
}
}
//选择了佣金 未选择微信支付,云享金
if (getOrderNumberVO.getCashAmount().compareTo(BigDecimal.ZERO) == 0 &&
getOrderNumberVO.getSalaryAmount().compareTo(BigDecimal.ZERO) != 0 &&
getOrderNumberVO.getWeChatPay().compareTo(BigDecimal.ZERO) == 0) {
//佣金足够
if (salaryAmt.compareTo(totalAmount) == 1) {
walletFlowVO.setSalaryAmount(totalAmount);
BigDecimal salaryAmount = walletFlowVO.getSalaryAmount();
}
//佣金不够
if (salaryAmt.compareTo(totalAmount) == -1) {
return ResultBody.error("请选择多个支付方式,佣金余额不足");
}
}
if (getOrderNumberVO.getCashAmount().compareTo(BigDecimal.ZERO) == 0 &&
getOrderNumberVO.getSalaryAmount().compareTo(BigDecimal.ZERO) == 0 &&
getOrderNumberVO.getWeChatPay().compareTo(BigDecimal.ZERO) != 0) {
return ResultBody.error("云享金加上佣金大于需要支付的金额无需使用微信支付");
}
//选择了 云享金及佣金支付 没有选择微信支付
if (getOrderNumberVO.getCashAmount().compareTo(BigDecimal.ZERO) != 0 &&
getOrderNumberVO.getSalaryAmount().compareTo(BigDecimal.ZERO) != 0 &&
getOrderNumberVO.getWeChatPay().compareTo(BigDecimal.ZERO) == 0) {
//如果云享金大于总金额
if (cashAmt.compareTo(totalAmount) == 1) {
//云享金就冻结
walletFlowVO.setCashAmount(totalAmount.negate());
System.out.println(walletFlowVO.getCashAmount());
}
//如果云享金不够就扣除佣金
if (cashAmt.compareTo(totalAmount) == -1) {
//总金额减去云享金剩余未扣除的钱
BigDecimal subtract = totalAmount.subtract(cashAmt);
walletFlowVO.setCashAmount(cashAmt.negate());
walletFlowVO.setSalaryAmount(subtract.negate());
}
return ResultBody.success("用户剩余总金额足够,需要微信支付");
}
//前提是云享金加上佣金大于总金额 选择了云享金 +微信支付
if (getOrderNumberVO.getCashAmount().compareTo(BigDecimal.ZERO) != 0 &&
getOrderNumberVO.getSalaryAmount().compareTo(BigDecimal.ZERO) == 0 &&
getOrderNumberVO.getWeChatPay().compareTo(BigDecimal.ZERO) != 0) {
return ResultBody.error("云享金加上佣金大于需要支付的金额无需使用微信支付");
}
//前提是云享金加上佣金大于总金额 选择了佣金+选择了微信支付
if (getOrderNumberVO.getCashAmount().compareTo(BigDecimal.ZERO) == 0 &&
getOrderNumberVO.getSalaryAmount().compareTo(BigDecimal.ZERO) != 0 &&
getOrderNumberVO.getWeChatPay().compareTo(BigDecimal.ZERO) != 0) {
return ResultBody.error("云享金加上佣金大于需要支付的金额无需使用微信支付");
}
if (getOrderNumberVO.getCashAmount().compareTo(BigDecimal.ZERO) != 0 &&
getOrderNumberVO.getSalaryAmount().compareTo(BigDecimal.ZERO) != 0 &&
getOrderNumberVO.getWeChatPay().compareTo(BigDecimal.ZERO) != 0) {
return ResultBody.error("云享金加上佣金大于需要支付的金额,请取消微信支付");
}
}
//用户剩余总金额小于需要支付的总金额
if (cashAndSalary.compareTo(totalAmount) == -1) {
//用户剩余的总金额小于需要支付的总金额 只选择了云享金支付
if (getOrderNumberVO.getCashAmount().compareTo(BigDecimal.ZERO) != 0 &&
getOrderNumberVO.getSalaryAmount().compareTo(BigDecimal.ZERO) == 0 &&
getOrderNumberVO.getWeChatPay().compareTo(BigDecimal.ZERO) == 0) {
//云享金不够
if (cashAmt.compareTo(totalAmount) == -1) {
return ResultBody.error("请选择多个支付方式,云享金余额不足");
}
}
//用户剩余的总金额小于需要支付的总金额 选择了佣金 未选择微信支付,云享金
if (getOrderNumberVO.getCashAmount().compareTo(BigDecimal.ZERO) == 0 &&
getOrderNumberVO.getSalaryAmount().compareTo(BigDecimal.ZERO) != 0 &&
getOrderNumberVO.getWeChatPay().compareTo(BigDecimal.ZERO) == 0) {
//佣金不够
if (salaryAmt.compareTo(totalAmount) == -1) {
return ResultBody.error("请选择多个支付方式,佣金余额不足");
}
}
if (getOrderNumberVO.getCashAmount().compareTo(BigDecimal.ZERO) == 0 &&
getOrderNumberVO.getSalaryAmount().compareTo(BigDecimal.ZERO) == 0 &&
getOrderNumberVO.getWeChatPay().compareTo(BigDecimal.ZERO) != 0) {
//微信实际需要全部支付
orderNumberDTO.setWeChatPay(totalAmount);
orderNumberDTO.setPaymentOrderNumber(randomOrderCode());
stringRedisTemplate.opsForValue().set(orderNumberDTO.getPaymentOrderNumber(), JsonUtil.parseObjToJson(orderNumberDTO));
return ResultBody.success(orderNumberDTO);
}
//用户剩余的总金额小于需要支付的总金额 云享金及佣金支付 没有选择微信支付
if (getOrderNumberVO.getCashAmount().compareTo(BigDecimal.ZERO) != 0 &&
getOrderNumberVO.getSalaryAmount().compareTo(BigDecimal.ZERO) != 0 &&
getOrderNumberVO.getWeChatPay().compareTo(BigDecimal.ZERO) == 0) {
return ResultBody.error("云享金加上佣金小于需要总金额,需要加上微信支付");
}
//用户剩余的总金额小于需要支付的总金额 选择了云享金 +微信支付
if (getOrderNumberVO.getCashAmount().compareTo(BigDecimal.ZERO) != 0 &&
getOrderNumberVO.getSalaryAmount().compareTo(BigDecimal.ZERO) == 0 &&
getOrderNumberVO.getWeChatPay().compareTo(BigDecimal.ZERO) != 0) {
BigDecimal weChat = totalAmount.subtract(cashAmt);
//微信实际需要全部支付
//云享金需要冻结的金额
walletFlowVO.setCashAmount(cashAmt);
orderNumberDTO.setWeChatPay(weChat);
orderNumberDTO.setPaymentOrderNumber(randomOrderCode());
stringRedisTemplate.opsForValue().set(orderNumberDTO.getPaymentOrderNumber(), JsonUtil.parseObjToJson(orderNumberDTO));
return ResultBody.success(orderNumberDTO);
}
//用户剩余的总金额小于需要支付的总金额 选择了佣金+选择了微信支付
if (getOrderNumberVO.getCashAmount().compareTo(BigDecimal.ZERO) == 0 &&
getOrderNumberVO.getSalaryAmount().compareTo(BigDecimal.ZERO) != 0 &&
getOrderNumberVO.getWeChatPay().compareTo(BigDecimal.ZERO) != 0) {
BigDecimal weChat = totalAmount.subtract(salaryAmt);
//需要冻结的佣金是
walletFlowVO.setSalaryAmount(salaryAmt);
//微信需要支付的金额
orderNumberDTO.setWeChatPay(weChat);
stringRedisTemplate.opsForValue().set(orderNumberDTO.getPaymentOrderNumber(), JsonUtil.parseObjToJson(orderNumberDTO));
return ResultBody.success(orderNumberDTO);
}
if (getOrderNumberVO.getCashAmount().compareTo(BigDecimal.ZERO) != 0 &&
getOrderNumberVO.getSalaryAmount().compareTo(BigDecimal.ZERO) != 0 &&
getOrderNumberVO.getWeChatPay().compareTo(BigDecimal.ZERO) != 0) {
//优先扣除云享金
BigDecimal totalSubtract = totalAmount.subtract(cashAmt);
BigDecimal salarySubtract = totalSubtract.subtract(salaryAmt);
walletFlowVO.setWeChat(salarySubtract);
orderNumberDTO.setWeChatPay(salarySubtract);
orderNumberDTO.setPaymentOrderNumber(randomOrderCode());
stringRedisTemplate.opsForValue().set(orderNumberDTO.getPaymentOrderNumber(), JsonUtil.parseObjToJson(orderNumberDTO));
return ResultBody.success(orderNumberDTO);
}
}
*/
/* //云享金
BigDecimal cashAmount = getOrderNumberVO.getCashAmount();
//佣金
BigDecimal salaryAmount = getOrderNumberVO.getSalaryAmount();
//微信金额
BigDecimal weChat = getOrderNumberVO.getWeChatPay();
String randomOrder = randomOrderCode();
if (cashAmount.equals(BigDecimal.ZERO) && salaryAmount.equals(BigDecimal.ZERO) && weChat.equals(BigDecimal.ZERO)) {
return ResultBody.error(ResultEnum.PLEASE_SELECT_PAYMENT);
}
if (!cashAmount.equals(BigDecimal.ZERO) && salaryAmount.equals(BigDecimal.ZERO) && weChat.equals(BigDecimal.ZERO)) {
//总金额大于云享金剩余的金额
if (totalAmount.compareTo(cashAmt) == 1) {
return ResultBody.error(ResultEnum.OVER_THE_TOTAL);
}
}
if (cashAmount.equals(BigDecimal.ZERO) && !salaryAmount.equals(BigDecimal.ZERO) && weChat.equals(BigDecimal.ZERO)) {
//总金额大于佣金剩余的金额
if (totalAmount.compareTo(salaryAmt) == 1) {
return ResultBody.error(ResultEnum.SALARY_PAYMENT_FAILURE);
}
}
//单独微信微信 可以进行支付
if (cashAmount.equals(BigDecimal.ZERO) && salaryAmount.equals(BigDecimal.ZERO) && !weChat.equals(BigDecimal.ZERO)) {
orderNumberDTO.setWeChatPay(totalAmount);
orderNumberDTO.setPaymentOrderNumber(randomOrder);
return ResultBody.success(orderNumberDTO);
}
if (!cashAmount.equals(BigDecimal.ZERO) && !salaryAmount.equals(BigDecimal.ZERO) && weChat.equals(BigDecimal.ZERO)) {
BigDecimal add = cashAmt.add(salaryAmt);
if (totalAmount.compareTo(add) == 1) {
return ResultBody.error(ResultEnum.CASH_SALARY_PAYMENT_FAILURE);
}
}
if (!cashAmount.equals(BigDecimal.ZERO) && salaryAmount.equals(BigDecimal.ZERO) && !weChat.equals(BigDecimal.ZERO)) {
BigDecimal subtract = totalAmount.subtract(cashAmt);
orderNumberDTO.setWeChatPay(subtract);
orderNumberDTO.setPaymentOrderNumber(randomOrder);
return ResultBody.success(orderNumberDTO);
}
if (cashAmount.equals(BigDecimal.ZERO) && !salaryAmount.equals(BigDecimal.ZERO) && !weChat.equals(BigDecimal.ZERO)) {
BigDecimal subtract = totalAmount.subtract(salaryAmt);
orderNumberDTO.setWeChatPay(subtract);
orderNumberDTO.setPaymentOrderNumber(randomOrder);
return ResultBody.success(orderNumberDTO);
}
if (!cashAmount.equals(BigDecimal.ZERO) && !salaryAmount.equals(BigDecimal.ZERO) && !weChat.equals(BigDecimal.ZERO)) {
BigDecimal cashAndSalary = cashAmt.add(salaryAmt);
BigDecimal cash = totalAmount.subtract(cashAmt);
if (cash.compareTo(BigDecimal.ZERO) == 0) {
return ResultBody.error(ResultEnum.CASH_IS_ENOUGH);
}
BigDecimal salary = cash.subtract(salaryAmt);
if (salary.compareTo(BigDecimal.ZERO) == 0) {
return ResultBody.error(ResultEnum.SALARY_IS_ENOUGH);
}
return ResultBody.success(orderNumberDTO);
}*/
}
@Override
public
ResultBody
<
RequirementsInfoVO
>
myPreempt
(
Integer
userAccountId
)
{
List
<
RequirementsInfoDO
>
requirementsInfoDOS
=
requirementsDao
.
myPreempt
(
userAccountId
);
List
<
RequirementsInfoVO
>
collect
=
requirementsInfoDOS
.
stream
().
map
(
RequirementsInfoDO:
:
buildRequirementsInfoVO
).
collect
(
Collectors
.
toList
());
return
ResultBody
.
success
(
collect
);
}
@Override
public
ResultBody
publishService
(
ServiceRequirementsVO
serviceRequirementsVO
,
HttpServletRequest
request
)
{
//需要冻结的金额
WalletFlowVO
walletFlowVO
=
new
WalletFlowVO
();
ServiceRequirementsDO
requirementsInfoDO
=
new
ServiceRequirementsDO
(
serviceRequirementsVO
);
requirementsInfoDO
.
setPublisherNumber
(
randomOrderCode
());
//获取用户钱包
ResultBody
resultBody
=
getCurrentUserPayWalletInfo
(
request
);
PayWalletDTO
payWalletDTO
=
(
PayWalletDTO
)
resultBody
.
getResult
();
//需要支付的总金额
BigDecimal
totalAmount
=
requirementsInfoDO
.
getTotalAmount
();
//云享金
BigDecimal
cashAmt
=
payWalletDTO
.
getCashAmt
();
//佣金
BigDecimal
salaryAmt
=
payWalletDTO
.
getSalaryAmt
();
String
json
=
stringRedisTemplate
.
opsForValue
().
get
(
requirementsInfoDO
.
getWechatPayOrderNumber
()
+
requirementsInfoDO
.
getUserAccountId
());
GetOrderNumberDTO
orderNumberDTO
=
JSONObject
.
parseObject
(
json
,
GetOrderNumberDTO
.
class
);
BigDecimal
tempTotalAmount
=
totalAmount
;
String
paymentType
=
requirementsInfoDO
.
getPaymentType
();
String
[]
split
=
paymentType
.
split
(
","
);
Set
<
String
>
collect
=
Arrays
.
asList
(
split
).
stream
().
collect
(
Collectors
.
toSet
());
TreeSet
<
String
>
objects
=
new
TreeSet
<>(
collect
);
for
(
String
type
:
objects
)
{
switch
(
type
)
{
case
"1"
:
if
(!(
tempTotalAmount
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
))
{
if
(
cashAmt
.
compareTo
(
tempTotalAmount
)
==
1
||
cashAmt
.
compareTo
(
tempTotalAmount
)
==
0
)
{
walletFlowVO
.
setCashAmount
(
tempTotalAmount
);
tempTotalAmount
=
BigDecimal
.
ZERO
;
}
else
{
tempTotalAmount
=
tempTotalAmount
.
subtract
(
cashAmt
);
walletFlowVO
.
setCashAmount
(
cashAmt
);
}
}
break
;
case
"2"
:
if
(!(
tempTotalAmount
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
))
{
if
(
salaryAmt
.
compareTo
(
tempTotalAmount
)
==
1
||
salaryAmt
.
compareTo
(
tempTotalAmount
)
==
0
)
{
walletFlowVO
.
setSalaryAmount
(
tempTotalAmount
);
tempTotalAmount
=
BigDecimal
.
ZERO
;
}
else
{
tempTotalAmount
=
tempTotalAmount
.
subtract
(
salaryAmt
);
walletFlowVO
.
setSalaryAmount
(
salaryAmt
);
}
}
break
;
case
"3"
:
if
(!(
tempTotalAmount
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
))
{
walletFlowVO
.
setWeChat
(
tempTotalAmount
);
tempTotalAmount
=
BigDecimal
.
ZERO
;
}
break
;
default
:
break
;
}
}
if
(
tempTotalAmount
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
//表示订单计算完成,需要支付的钱都算出来了
walletFlowVO
.
toString
();
System
.
out
.
println
(
walletFlowVO
);
//orderNumberDTO.setWeChatPay(walletFlowVO.getWeChat());
/*if (orderNumberDTO.getWeChatPay() != null) {
orderNumberDTO.setPaymentOrderNumber(randomOrderCode());
}*/
requirementsInfoDO
.
setCashAmount
(
walletFlowVO
.
getCashAmount
());
requirementsInfoDO
.
setSalaryAmount
(
walletFlowVO
.
getSalaryAmount
());
requirementsInfoDO
.
setWeChat
(
walletFlowVO
.
getWeChat
());
if
(
orderNumberDTO
!=
null
)
{
requirementsInfoDO
.
setWechatPayOrderNumber
(
orderNumberDTO
.
getPaymentOrderNumber
());
}
else
if
(
orderNumberDTO
==
null
)
{
requirementsInfoDO
.
setWechatPayOrderNumber
(
null
);
}
requirementsDao
.
addPublishService
(
requirementsInfoDO
);
return
ResultBody
.
success
();
}
else
{
//云享金和佣金扣除完成,但是还不足支付订单金额,并且没有选择微信支付,所以支付不合法
return
ResultBody
.
success
(
"下单失败"
);
}
/* if (cashAmount.equals(BigDecimal.ZERO) && salaryAmount.equals(BigDecimal.ZERO) && weChat.equals(BigDecimal.ZERO)) {
return ResultBody.error(ResultEnum.PLEASE_SELECT_PAYMENT);
}
if (!cashAmount.equals(BigDecimal.ZERO) && salaryAmount.equals(BigDecimal.ZERO) && weChat.equals(BigDecimal.ZERO)) {
//总金额大于云享金剩余的金额
if (totalAmount.compareTo(cashAmt) == 1) {
return ResultBody.error(ResultEnum.OVER_THE_TOTAL);
}
//总金额小于云享金剩余的金额
if (totalAmount.compareTo(cashAmt) == -1) {
walletFlowVO.setCashAmount(totalAmount);
}
walletFlowVO.setCashAmount(totalAmount.negate());
//冻结云享金
extracted(walletFlowVO, requirementsInfoDO);
}
if (cashAmount.equals(BigDecimal.ZERO) && !salaryAmount.equals(BigDecimal.ZERO) && weChat.equals(BigDecimal.ZERO)) {
//总金额大于佣金剩余的金额
if (totalAmount.compareTo(salaryAmt) == 1) {
return ResultBody.error(ResultEnum.SALARY_PAYMENT_FAILURE);
}
//总金额小于佣金剩余的金额
if (totalAmount.compareTo(salaryAmount) == -1) {
walletFlowVO.setSalaryAmount(totalAmount);
}
walletFlowVO.setSalaryAmount(totalAmount.negate());
extracted(walletFlowVO, requirementsInfoDO);
}
//单独微信制度 可以进行支付
if (cashAmount.equals(BigDecimal.ZERO) && salaryAmount.equals(BigDecimal.ZERO) && !weChat.equals(BigDecimal.ZERO)) {
BigDecimal weChatPay = orderNumberDTO.getWeChatPay().negate();
walletFlowVO.setWeChat(weChatPay);
extracted(walletFlowVO, requirementsInfoDO);
}
//云享金与佣金剩余金额足够及不足够
if (!cashAmount.equals(BigDecimal.ZERO) && !salaryAmount.equals(BigDecimal.ZERO) && weChat.equals(BigDecimal.ZERO)) {
BigDecimal add = cashAmt.add(salaryAmt);
if (totalAmount.compareTo(add) == 1) {
return ResultBody.error(ResultEnum.CASH_SALARY_PAYMENT_FAILURE);
}
//云享金不足佣金可以补上
if (totalAmount.compareTo(add) == -1) {
BigDecimal cash = cashAmt.subtract(totalAmount);
if (cash.compareTo(BigDecimal.ZERO) <= 0) {
BigDecimal salary = salaryAmt.subtract(cash.negate());
System.out.println(salary);
//云享金
walletFlowVO.setCashAmount(cashAmt.negate());
walletFlowVO.setSalaryAmount(cashAmt.negate());
extracted(walletFlowVO, requirementsInfoDO);
}
//云享金足够 不扣除佣金剩余的金额
if (cash.compareTo(BigDecimal.ZERO) > 0) {
walletFlowVO.setCashAmount(cash.negate());
extracted(walletFlowVO, requirementsInfoDO);
}
}
}
//选择佣金或者微信支付
if (cashAmount.equals(BigDecimal.ZERO) && !salaryAmount.equals(BigDecimal.ZERO) && !weChat.equals(BigDecimal.ZERO)) {
BigDecimal salary = salaryAmt.subtract(totalAmount);
if (salary.compareTo(BigDecimal.ZERO) >= 0) {
walletFlowVO.setSalaryAmount(totalAmount);
extracted(walletFlowVO, requirementsInfoDO);
}
if (salary.compareTo(BigDecimal.ZERO) < 0) {
BigDecimal weChatPay = orderNumberDTO.getWeChatPay();
walletFlowVO.setSalaryAmount(salary);
walletFlowVO.setWeChat(weChatPay.negate());
extracted(walletFlowVO, requirementsInfoDO);
}
return ResultBody.success(orderNumberDTO);
}
if (!cashAmount.equals(BigDecimal.ZERO) && !salaryAmount.equals(BigDecimal.ZERO) && !weChat.equals(BigDecimal.ZERO)) {
BigDecimal cash = cashAmt.subtract(totalAmount);
BigDecimal salary = salaryAmt.subtract(cash.negate());
// 如果云享金充足
if (cash.compareTo(BigDecimal.ZERO) >= 0) {
walletFlowVO.setCashAmount(totalAmount);
}
if (cash.compareTo(BigDecimal.ZERO) < 0 && salary.compareTo(BigDecimal.ZERO) >= 0) {
walletFlowVO.setCashAmount(cashAmt.negate());
walletFlowVO.setSalaryAmount(cash);
extracted(walletFlowVO, requirementsInfoDO);
}
if (cash.compareTo(BigDecimal.ZERO) < 0 && salary.compareTo(BigDecimal.ZERO) < 0) {
walletFlowVO.setCashAmount(cashAmt);
walletFlowVO.setSalaryAmount(salaryAmt);
walletFlowVO.setWeChat(orderNumberDTO.getWeChatPay());
}
}
*/
}
private
void
extracted
(
WalletFlowVO
walletFlowVO
,
ServiceRequirementsDO
requirementsInfoDO
)
{
SimpleDateFormat
df
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
// 设置日期格式
walletFlowVO
.
setWeChat
(
walletFlowVO
.
getWeChat
());
walletFlowVO
.
setModeOfPayment
(
300
);
walletFlowVO
.
setTimeOfPayment
(
df
.
format
(
new
Date
()));
walletFlowVO
.
setUserAccountId
(
requirementsInfoDO
.
getUserAccountId
());
walletFlowVO
.
setOperateUserAccountId
(
requirementsInfoDO
.
getUserAccountId
());
walletFlowVO
.
setCashAmount
(
walletFlowVO
.
getCashAmount
());
walletFlowVO
.
setSalaryAmount
(
walletFlowVO
.
getSalaryAmount
());
System
.
out
.
println
(
walletFlowVO
);
}
/**
* 获取用户钱包信息
*
* @param
* @param request
* @return
*/
public
ResultBody
getCurrentUserPayWalletInfo
(
HttpServletRequest
request
)
{
String
token
=
request
.
getHeader
(
"token"
);
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setContentType
(
MediaType
.
APPLICATION_JSON
);
headers
.
add
(
"token"
,
token
);
HttpEntity
<
MultiValueMap
<
String
,
Object
>>
formEntity
=
new
HttpEntity
<
MultiValueMap
<
String
,
Object
>>(
headers
);
ResponseEntity
<
String
>
exchange
=
null
;
try
{
exchange
=
restTemplate
.
exchange
(
userApp
+
"/userapp/pay/getCurrentUserPayWalletInfo"
,
HttpMethod
.
GET
,
formEntity
,
String
.
class
);
}
catch
(
RestClientException
e
)
{
return
ResultBody
.
error
(
ResultEnum
.
THE_THIRD_PARTY_INTERFACE_IS_BEING_UPDATED
);
}
Object
body
=
exchange
.
getBody
();
JSONObject
jsonObject
=
JSONObject
.
parseObject
((
String
)
body
);
JSONObject
result1
=
(
JSONObject
)
jsonObject
.
get
(
"result"
);
PayWalletDTO
payWalletDTO
=
JSON
.
parseObject
(
result1
.
toJSONString
(),
PayWalletDTO
.
class
);
return
ResultBody
.
success
(
payWalletDTO
);
}
@Override
public
ResultBody
<
RequirementsInfoVO
>
myPublish
(
Integer
userAccountId
)
{
List
<
RequirementsInfoDO
>
requirementsInfoDOS
=
requirementsDao
.
myPublish
(
userAccountId
);
List
<
RequirementsInfoVO
>
collect
=
requirementsInfoDOS
.
stream
().
map
(
RequirementsInfoDO:
:
buildRequirementsInfoVO
).
collect
(
Collectors
.
toList
());
return
ResultBody
.
success
(
collect
);
}
@Override
public
ResultBody
grabTheOrder
(
GrabTheOrderVO
grabTheOrderVO
,
HttpServletRequest
request
)
{
ServiceRequirementsDO
requirementsInfoDO
=
requirementsDao
.
grabTheOrder
(
grabTheOrderVO
.
getPublisherNumber
());
if
(
grabTheOrderVO
.
getPublisherNumber
().
equals
(
requirementsInfoDO
.
getPublisherNumber
())
&&
grabTheOrderVO
.
getUserAccountId
().
equals
(
requirementsInfoDO
.
getUserAccountId
()))
{
return
ResultBody
.
error
(
"自己不能抢自己发布的需求"
);
}
//飞手
PilotCertificationInteriorDTO
pilot
=
feignInteriorDetailPilot
(
grabTheOrderVO
.
getUserAccountId
(),
request
);
if
(
pilot
==
null
)
{
return
ResultBody
.
error
(
"只能飞手或者飞手团队抢单"
);
}
Integer
repertory
=
requirementsInfoDO
.
getRepertory
();
if
(
repertory
<=
0
)
{
return
ResultBody
.
error
(
"需求已被其他人抢走"
);
}
// requirementsInfoDO.setPublisherNumber(randomOrderCode());
ResultBody
resultBody
=
getCurrentUserPayWalletInfo
(
request
);
PayWalletDTO
payWalletDTO
=
(
PayWalletDTO
)
resultBody
.
getResult
();
//用户云享金+用户佣金>总金额
//剩余后台云享金
BigDecimal
cashAmt
=
payWalletDTO
.
getCashAmt
();
//剩余佣金
BigDecimal
salaryAmt
=
payWalletDTO
.
getSalaryAmt
();
//用户云享金加上佣金的总金额
BigDecimal
cashAndSalary
=
cashAmt
.
add
(
salaryAmt
);
//需要支付的总金额
BigDecimal
totalAmount
=
requirementsInfoDO
.
getTotalAmount
();
BigDecimal
bigDecimal
=
new
BigDecimal
(
0.3
);
totalAmount
=
totalAmount
.
multiply
(
bigDecimal
).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
);
String
json
=
stringRedisTemplate
.
opsForValue
().
get
(
requirementsInfoDO
.
getWechatPayOrderNumber
()
+
requirementsInfoDO
.
getUserAccountId
());
GetOrderNumberDTO
orderNumberDTO
=
JSONObject
.
parseObject
(
json
,
GetOrderNumberDTO
.
class
);
//需要冻结的金额
WalletFlowVO
walletFlowVO
=
new
WalletFlowVO
();
BigDecimal
tempTotalAmount
=
totalAmount
;
String
paymentType
=
grabTheOrderVO
.
getPaymentType
();
String
[]
split
=
paymentType
.
split
(
","
);
Set
<
String
>
collect
=
Arrays
.
asList
(
split
).
stream
().
collect
(
Collectors
.
toSet
());
TreeSet
<
String
>
objects
=
new
TreeSet
<>(
collect
);
for
(
String
type
:
objects
)
{
switch
(
type
)
{
case
"1"
:
if
(!(
tempTotalAmount
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
))
{
if
(
cashAmt
.
compareTo
(
tempTotalAmount
)
==
1
||
cashAmt
.
compareTo
(
tempTotalAmount
)
==
0
)
{
walletFlowVO
.
setCashAmount
(
tempTotalAmount
);
tempTotalAmount
=
BigDecimal
.
ZERO
;
}
else
{
tempTotalAmount
=
tempTotalAmount
.
subtract
(
cashAmt
);
walletFlowVO
.
setCashAmount
(
cashAmt
);
}
}
break
;
case
"2"
:
if
(!(
tempTotalAmount
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
))
{
if
(
salaryAmt
.
compareTo
(
tempTotalAmount
)
==
1
||
salaryAmt
.
compareTo
(
tempTotalAmount
)
==
0
)
{
walletFlowVO
.
setSalaryAmount
(
tempTotalAmount
);
tempTotalAmount
=
BigDecimal
.
ZERO
;
}
else
{
tempTotalAmount
=
tempTotalAmount
.
subtract
(
salaryAmt
);
walletFlowVO
.
setSalaryAmount
(
salaryAmt
);
}
}
break
;
case
"3"
:
if
(!(
tempTotalAmount
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
))
{
walletFlowVO
.
setWeChat
(
tempTotalAmount
);
tempTotalAmount
=
BigDecimal
.
ZERO
;
}
break
;
default
:
break
;
}
}
if
(
tempTotalAmount
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
//表示订单计算完成,需要支付的钱都算出来了
walletFlowVO
.
toString
();
System
.
out
.
println
(
walletFlowVO
);
/* orderNumberDTO.setWeChatPay(walletFlowVO.getWeChat());
if (orderNumberDTO.getWeChatPay() != null) {
orderNumberDTO.setPaymentOrderNumber(randomOrderCode());
}*/
// return ResultBody.success(orderNumberDTO);
/* //云享金
BigDecimal cashAmount = requirementsInfoDO.getCashAmount();
//佣金
BigDecimal salaryAmount = requirementsInfoDO.getSalaryAmount();
//微信金额
BigDecimal weChat = requirementsInfoDO.getWeChat();
//需要支付的总金额
BigDecimal totalAmount = requirementsInfoDO.getTotalAmount();
System.out.println(totalAmount);
totalAmount = totalAmount.multiply(new BigDecimal(0.3));
//云享金
BigDecimal cashAmt = payWalletDTO.getCashAmt();
//佣金
BigDecimal salaryAmt = payWalletDTO.getSalaryAmt();
String json = stringRedisTemplate.opsForValue().get(requirementsInfoDO.getWechatPayOrderNumber() + requirementsInfoDO.getUserAccountId());
GetOrderNumberDTO orderNumberDTO = JSONObject.parseObject(json, GetOrderNumberDTO.class);
if (cashAmount.equals(BigDecimal.ZERO) && salaryAmount.equals(BigDecimal.ZERO) && weChat.equals(BigDecimal.ZERO)) {
return ResultBody.error(ResultEnum.PLEASE_SELECT_PAYMENT);
}
if (!cashAmount.equals(BigDecimal.ZERO) && salaryAmount.equals(BigDecimal.ZERO) && weChat.equals(BigDecimal.ZERO)) {
//总金额大于云享金剩余的金额
if (totalAmount.compareTo(cashAmt) == 1) {
return ResultBody.error(ResultEnum.OVER_THE_TOTAL);
}
//总金额小于云享金剩余的金额
if (totalAmount.compareTo(cashAmt) == -1) {
walletFlowVO.setCashAmount(totalAmount);
}
walletFlowVO.setCashAmount(totalAmount.negate());
//冻结云享金
extracted(walletFlowVO, requirementsInfoDO);
}
if (cashAmount.equals(BigDecimal.ZERO) && !salaryAmount.equals(BigDecimal.ZERO) && weChat.equals(BigDecimal.ZERO)) {
//总金额大于佣金剩余的金额
if (totalAmount.compareTo(salaryAmt) == 1) {
return ResultBody.error(ResultEnum.SALARY_PAYMENT_FAILURE);
}
//总金额小于佣金剩余的金额
if (totalAmount.compareTo(salaryAmount) == -1) {
walletFlowVO.setSalaryAmount(totalAmount);
}
walletFlowVO.setSalaryAmount(totalAmount.negate());
extracted(walletFlowVO, requirementsInfoDO);
}
//单独微信制度 可以进行支付
if (cashAmount.equals(BigDecimal.ZERO) && salaryAmount.equals(BigDecimal.ZERO) && !weChat.equals(BigDecimal.ZERO)) {
BigDecimal weChatPay = orderNumberDTO.getWeChatPay().negate();
walletFlowVO.setWeChat(weChatPay);
extracted(walletFlowVO, requirementsInfoDO);
}
//云享金与佣金剩余金额足够及不足够
if (!cashAmount.equals(BigDecimal.ZERO) && !salaryAmount.equals(BigDecimal.ZERO) && weChat.equals(BigDecimal.ZERO)) {
BigDecimal add = cashAmt.add(salaryAmt);
if (totalAmount.compareTo(add) == 1) {
return ResultBody.error(ResultEnum.CASH_SALARY_PAYMENT_FAILURE);
}
//云享金不足佣金可以补上
if (totalAmount.compareTo(add) == -1) {
BigDecimal cash = cashAmt.subtract(totalAmount);
if (cash.compareTo(BigDecimal.ZERO) <= 0) {
BigDecimal salary = salaryAmt.subtract(cash.negate());
System.out.println(salary);
//云享金
walletFlowVO.setCashAmount(cashAmt.negate());
walletFlowVO.setSalaryAmount(cashAmt.negate());
extracted(walletFlowVO, requirementsInfoDO);
}
//云享金足够 不扣除佣金剩余的金额
if (cash.compareTo(BigDecimal.ZERO) > 0) {
walletFlowVO.setCashAmount(cash.negate());
extracted(walletFlowVO, requirementsInfoDO);
}
}
}
//选择佣金或者微信支付
if (cashAmount.equals(BigDecimal.ZERO) && !salaryAmount.equals(BigDecimal.ZERO) && !weChat.equals(BigDecimal.ZERO)) {
BigDecimal salary = salaryAmt.subtract(totalAmount);
if (salary.compareTo(BigDecimal.ZERO) >= 0) {
walletFlowVO.setSalaryAmount(totalAmount);
extracted(walletFlowVO, requirementsInfoDO);
}
if (salary.compareTo(BigDecimal.ZERO) < 0) {
BigDecimal weChatPay = orderNumberDTO.getWeChatPay();
walletFlowVO.setSalaryAmount(salary);
walletFlowVO.setWeChat(weChatPay.negate());
extracted(walletFlowVO, requirementsInfoDO);
}
return ResultBody.success(orderNumberDTO);
}
if (!cashAmount.equals(BigDecimal.ZERO) && !salaryAmount.equals(BigDecimal.ZERO) && !weChat.equals(BigDecimal.ZERO)) {
BigDecimal cash = cashAmt.subtract(totalAmount);
BigDecimal salary = salaryAmt.subtract(cash.negate());
// 如果云享金充足
if (cash.compareTo(BigDecimal.ZERO) >= 0) {
walletFlowVO.setCashAmount(totalAmount);
}
if (cash.compareTo(BigDecimal.ZERO) < 0 && salary.compareTo(BigDecimal.ZERO) >= 0) {
walletFlowVO.setCashAmount(cashAmt.negate());
walletFlowVO.setSalaryAmount(cash);
extracted(walletFlowVO, requirementsInfoDO);
}
if (cash.compareTo(BigDecimal.ZERO) < 0 && salary.compareTo(BigDecimal.ZERO) < 0) {
walletFlowVO.setCashAmount(cashAmt);
walletFlowVO.setSalaryAmount(salaryAmt);
walletFlowVO.setWeChat(orderNumberDTO.getWeChatPay());
}
}*/
RequirementsServiceDO
requirementsServiceDO
=
new
RequirementsServiceDO
(
pilot
,
requirementsInfoDO
);
requirementsServiceDO
.
setCashAmount
(
walletFlowVO
.
getCashAmount
());
requirementsServiceDO
.
setSalaryAmount
(
walletFlowVO
.
getSalaryAmount
());
requirementsServiceDO
.
setWeChat
(
orderNumberDTO
.
getWeChatPay
());
requirementsServiceDO
.
setWechatPayOrderNumber
(
orderNumberDTO
.
getPaymentOrderNumber
());
BigDecimal
cashAndSalaryAmount
=
walletFlowVO
.
getCashAmount
().
add
(
walletFlowVO
.
getSalaryAmount
());
BigDecimal
preemptTotalAmount
=
cashAndSalaryAmount
.
add
(
orderNumberDTO
.
getWeChatPay
());
requirementsServiceDO
.
setPreemptTotalAmount
(
preemptTotalAmount
);
requirementsDao
.
insertService
(
requirementsServiceDO
);
requirementsInfoDO
.
setRepertory
(
repertory
-
1
);
requirementsDao
.
updateGrabTheOrder
(
grabTheOrderVO
.
getPublisherNumber
(),
requirementsInfoDO
.
getRepertory
());
return
ResultBody
.
success
();
}
else
{
//云享金和佣金扣除完成,但是还不足支付订单金额,并且没有选择微信支付,所以支付不合法
return
ResultBody
.
success
(
"抢单失败"
);
}
}
@Override
public
ResultBody
arriveAtTheScene
(
ServiceArriveSceneVO
serviceArriveSceneVO
)
{
ServiceArriveSceneDO
serviceArriveSceneDO
=
new
ServiceArriveSceneDO
(
serviceArriveSceneVO
);
RequirementsInfoDO
requirementsInfoDO
=
requirementsDao
.
detailPublish
(
serviceArriveSceneDO
.
getRequirementsInfoId
());
GlobalCoordinates
source
=
new
GlobalCoordinates
(
Double
.
parseDouble
(
String
.
valueOf
(
requirementsInfoDO
.
getLatitude
())),
Double
.
parseDouble
(
String
.
valueOf
(
requirementsInfoDO
.
getLongitude
())));
GlobalCoordinates
target
=
new
GlobalCoordinates
(
Double
.
parseDouble
(
String
.
valueOf
(
serviceArriveSceneDO
.
getLatitude
())),
Double
.
parseDouble
(
String
.
valueOf
(
serviceArriveSceneDO
.
getLongitude
())));
double
geoCurve
=
getDistanceMeter
(
source
,
target
,
Ellipsoid
.
Sphere
);
//100米
if
(
geoCurve
>
100
)
{
return
ResultBody
.
error
(
ResultEnum
.
FALL_OUTSIDE_OF
);
}
else
{
requirementsDao
.
arriveAtTheScene
(
serviceArriveSceneDO
);
requirementsDao
.
updateScene
(
serviceArriveSceneDO
.
getRequirementsInfoId
());
}
return
ResultBody
.
success
();
}
/* 经纬度计算工具类*/
public
static
double
getDistanceMeter
(
GlobalCoordinates
gpsFrom
,
GlobalCoordinates
gpsTo
,
Ellipsoid
ellipsoid
)
{
//创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离
GeodeticCurve
geoCurve
=
new
GeodeticCalculator
().
calculateGeodeticCurve
(
ellipsoid
,
gpsFrom
,
gpsTo
);
return
geoCurve
.
getEllipsoidalDistance
();
}
@Override
public
ResultBody
<
ServiceArriveSceneDTO
>
arriveAtTheSceneDetails
(
Integer
requirementsInfoId
,
Integer
userAccountId
)
{
ServiceArriveSceneDO
serviceArriveSceneDO
=
requirementsDao
.
arriveAtTheSceneDetails
(
requirementsInfoId
,
userAccountId
);
ServiceArriveSceneDTO
serviceArriveSceneDTO
=
serviceArriveSceneDO
.
buildServiceArriveSceneDTO
();
return
ResultBody
.
success
(
serviceArriveSceneDTO
);
}
@Override
public
ResultBody
fulfilATask
(
ServiceFulfilATaskVO
fulfilATaskVO
)
{
ServiceFulfilATaskDO
serviceFulfilATaskDO
=
new
ServiceFulfilATaskDO
(
fulfilATaskVO
);
requirementsDao
.
fulfilATask
(
serviceFulfilATaskDO
);
requirementsDao
.
updateFulfilATask
(
fulfilATaskVO
.
getRequirementsInfoId
());
return
ResultBody
.
success
();
}
@Override
public
ResultBody
<
ServiceFulfilATaskDTO
>
fulfilATaskDetails
(
Integer
requirementsInfoId
,
Integer
userAccountId
)
{
ServiceFulfilATaskDO
serviceFulfilATaskDO
=
requirementsDao
.
fulfilATaskDetails
(
requirementsInfoId
,
userAccountId
);
ServiceFulfilATaskDTO
serviceFulfilATaskDTO
=
serviceFulfilATaskDO
.
buildServiceFulfilATaskDTO
();
return
ResultBody
.
success
(
serviceFulfilATaskDTO
);
}
@Override
public
ResultBody
settleAccounts
(
ServiceSettleAccountsVO
settleAccountsVO
)
{
ServiceSettleAccountsDO
settleAccountsDO
=
new
ServiceSettleAccountsDO
(
settleAccountsVO
);
requirementsDao
.
settleAccounts
(
settleAccountsDO
);
requirementsDao
.
updatesettleAccounts
(
settleAccountsVO
.
getRequirementsInfoId
());
return
ResultBody
.
success
();
}
@Override
public
ResultBody
<
ServiceSettleAccountsDTO
>
settleAccountsDetails
(
Integer
requirementsInfoId
,
Integer
userAccountId
)
{
ServiceSettleAccountsDO
settleAccountsDO
=
requirementsDao
.
settleAccountsDetails
(
requirementsInfoId
,
userAccountId
);
ServiceSettleAccountsDTO
settleAccountsDTO
=
settleAccountsDO
.
buildServiceSettleAccountsDTO
();
return
ResultBody
.
success
(
settleAccountsDTO
);
}
@Override
public
ResultBody
evaluate
(
ServiceEvaluateVO
evaluateVO
)
{
ServiceEvaluateDO
serviceEvaluateDO
=
new
ServiceEvaluateDO
(
evaluateVO
);
requirementsDao
.
evaluate
(
serviceEvaluateDO
);
requirementsDao
.
updateEvaluate
(
evaluateVO
.
getRequirementsInfoId
());
return
ResultBody
.
success
();
}
@Override
public
ResultBody
<
ServiceEvaluateDTO
>
evaluateDetails
(
Integer
requirementsInfoId
,
Integer
userAccountId
)
{
ServiceEvaluateDO
serviceEvaluateDO
=
requirementsDao
.
evaluateDetails
(
requirementsInfoId
,
userAccountId
);
ServiceEvaluateDTO
serviceEvaluateDTO
=
serviceEvaluateDO
.
buildServiceEvaluateDTO
();
return
ResultBody
.
success
(
serviceEvaluateDTO
);
}
public
PilotCertificationInteriorDTO
feignInteriorDetailPilot
(
Integer
userAccountId
,
HttpServletRequest
request
)
{
String
token
=
request
.
getHeader
(
"token"
);
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setContentType
(
MediaType
.
APPLICATION_JSON
);
headers
.
add
(
"token"
,
token
);
HttpEntity
<
String
>
entity
=
new
HttpEntity
<>(
JSONObject
.
toJSONString
(
userAccountId
),
headers
);
ResponseEntity
<
PilotCertificationInteriorDTO
>
exchange1
=
restTemplate
.
exchange
(
userApp
+
"/userapp/pilot/interiorDetailPilot?userAccountId="
+
userAccountId
,
HttpMethod
.
GET
,
entity
,
PilotCertificationInteriorDTO
.
class
);
PilotCertificationInteriorDTO
body
=
exchange1
.
getBody
();
return
body
;
}
public
ResultBody
releaseOrder
(
RequirementsInfoVO
requirementsInfoVO
,
String
token
)
{
public
ResultBody
releaseOrder
(
RequirementsInfoVO
requirementsInfoVO
,
String
token
)
{
HttpHeaders
headers
=
new
HttpHeaders
();
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setContentType
(
MediaType
.
APPLICATION_JSON
);
headers
.
setContentType
(
MediaType
.
APPLICATION_JSON
);
...
@@ -227,6 +1102,21 @@ public class RequirementsServiceImpl implements RequirementsService {
...
@@ -227,6 +1102,21 @@ public class RequirementsServiceImpl implements RequirementsService {
}
}
public
List
<
IndustryTypeDTO
>
listIndustry
()
{
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setContentType
(
MediaType
.
APPLICATION_JSON
);
HttpEntity
<
String
>
entity
=
new
HttpEntity
<>(
null
,
headers
);
ResponseEntity
<
List
>
exchange
=
restTemplate
.
exchange
(
pmsApp
+
"/pms/industry/listIndustry"
,
HttpMethod
.
GET
,
entity
,
List
.
class
);
List
<
IndustryTypeDTO
>
body
=
(
List
<
IndustryTypeDTO
>)
exchange
.
getBody
();
String
s
=
JSON
.
toJSONString
(
body
);
List
<
IndustryTypeDTO
>
industryTypeDTOS
=
JSONObject
.
parseArray
(
s
,
IndustryTypeDTO
.
class
);
ArrayList
<
IndustryTypeDTO
>
list
=
new
ArrayList
<>();
for
(
IndustryTypeDTO
industryTypeDTO
:
industryTypeDTOS
)
{
list
.
add
(
industryTypeDTO
);
}
return
list
;
}
public
String
randomOrderCode
()
{
public
String
randomOrderCode
()
{
SimpleDateFormat
dmDate
=
new
SimpleDateFormat
(
"yyyyMMddHHmmss"
);
SimpleDateFormat
dmDate
=
new
SimpleDateFormat
(
"yyyyMMddHHmmss"
);
String
ranData
=
getRandom
(
6
);
String
ranData
=
getRandom
(
6
);
...
...
release-service/src/main/resources/mapper/requirements/RequirementsDao.xml
浏览文件 @
a25f0ccf
...
@@ -222,22 +222,221 @@
...
@@ -222,22 +222,221 @@
</delete>
</delete>
<select
id=
"appPublishList"
resultType=
"com.mmc.csf.release.entity.requirements.RequirementsInfoDO"
>
<select
id=
"appPublishList"
resultType=
"com.mmc.csf.release.entity.requirements.RequirementsInfoDO"
>
SELECT id,
SELECT ri.id,
task_title,
ri.task_title,
task_start_time,
ri.task_start_time,
task_end_time,
ri.task_end_time,
task_address,
ri.task_address,
ri.longitude,
ri.latitude,
ri.require_url,
ri.require_description,
ri.requirement_type_id,
ri.user_account_id,
ri.order_level,
ri.service_id,
ri.total_amount,
ri.insurance
FROM requirements_info ri
WHERE NOT EXISTS(
SELECT rs.requirements_info_id FROM requirements_service rs WHERE ri.id = rs.requirements_info_id)
ORDER BY ri.order_level_amount DESC,
ri.id DESC
</select>
<select
id=
"detailPublish"
resultType=
"com.mmc.csf.release.entity.requirements.RequirementsInfoDO"
>
SELECT ri.id,
ri.task_title,
ri.task_start_time,
ri.task_end_time,
ri.task_address,
ri.longitude,
ri.latitude,
ri.require_url,
ri.require_description,
ri.requirement_type_id,
ri.user_account_id,
rt.type_name AS requirementTypeName,
ri.publish_phone,
ri.publisher_number,
ri.service_id,
ri.total_amount,
ri.insurance,
sf.doing,
sf.waiting,
sf.user_port,
sf.flyer_port,
sf.order_status,
ri.publish
FROM requirements_info ri
LEFT JOIN requirements_type rt
ON rt.id = ri.requirement_type_id
LEFT JOIN service_flow sf ON sf.order_status = ri.service_flow_id
WHERE ri.id = #{id}
</select>
<insert
id=
"addPublishService"
parameterType=
"com.mmc.csf.release.entity.requirements.ServiceRequirementsDO"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
INSERT INTO requirements_info(service_id, user_account_id, publish_name, publish_phone,
require_description, create_time,
update_time, task_start_time, task_end_time, task_address, longitude,
latitude, publisher_number, order_amount, insurance, total_amount, publish,
order_level_amount, order_level, cash_amount, we_chat, salary_amount,
wechat_pay_order_number, service_flow_id)
VALUES (#{serviceId}, #{userAccountId}, #{publishName}, #{publishPhone},
#{requireDescription}, NOW(),
NOW(), #{taskStartTime}, #{taskEndTime}, #{taskAddress}, #{longitude},
#{latitude}, #{publisherNumber}, #{orderAmount}, #{insurance}, #{totalAmount}, 1,
#{orderLevelAmount}, #{orderLevel}, #{cashAmount}, #{weChat}, #{salaryAmount}, #{wechatPayOrderNumber},
100);
</insert>
<select
id=
"grabTheOrder"
resultType=
"com.mmc.csf.release.entity.requirements.ServiceRequirementsDO"
>
SELECT ri.id,
ri.task_title,
ri.task_start_time,
ri.task_end_time,
ri.task_address,
ri.longitude,
ri.latitude,
ri.require_url,
ri.require_description,
ri.requirement_type_id,
ri.user_account_id,
rt.type_name AS requirementTypeName,
ri.publish_phone,
ri.publisher_number,
ri.service_id,
ri.total_amount,
ri.repertory,
ri.order_level,
ri.cash_amount,
ri.we_chat,
ri.salary_amount,
ri.wechat_pay_order_number
FROM requirements_info ri
LEFT JOIN requirements_type rt ON rt.id = ri.requirement_type_id
WHERE ri.publisher_number = #{publisherNumber}
</select>
<update
id=
"updateGrabTheOrder"
>
UPDATE requirements_info
set repertory=#{repertory},
update_time=NOW()
where publisher_number = #{publisherNumber}
</update>
<insert
id=
"insertService"
parameterType=
"com.mmc.csf.release.entity.requirements.RequirementsServiceDO"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
INSERT INTO requirements_service(requirements_info_id, service_dictionary_id, pilot_certification_id,
pilot_certification_user_id, team_id, team_user_id, cash_amount, we_chat,
salary_amount,
wechat_pay_order_number, service_flow_id, preempt_total_amount)
VALUES (#{requirementsInfoId}, #{serviceDictionaryId}, #{pilotCertificationId}, #{pilotCertificationUserId},
#{teamId}, #{teamUserId}, #{cashAmount}, #{weChat}, #{salaryAmount}, #{wechatPayOrderNumber}, 200,
preemptTotalAmount);
</insert>
<insert
id=
"arriveAtTheScene"
parameterType=
"com.mmc.csf.release.entity.requirements.ServiceArriveSceneDO"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
INSERT INTO service_arrive_scene(longitude, latitude, scene_address, scene_url, user_account_id, create_time,
requirements_info_id, update_time)
VALUES (#{longitude}, #{latitude}, #{sceneAddress}, #{sceneUrl}, #{userAccountId}, NOW(),
#{requirementsInfoId}, NOW());
</insert>
<update
id=
"updateScene"
>
UPDATE requirements_service
set service_dictionary_id=5,
service_flow_id=1,
update_time=NOW()
where requirements_info_id = #{requirementsInfoId}
</update>
<select
id=
"arriveAtTheSceneDetails"
resultType=
"com.mmc.csf.release.entity.requirements.ServiceArriveSceneDO"
>
select id,
longitude,
longitude,
latitude,
latitude,
require_url,
scene_address,
require_description,
scene_url,
requirement_type_id,
user_account_id,
create_time,
update_time,
requirements_info_id
from service_arrive_scene
where requirements_info_id = #{requirementsInfoId}
and user_account_id = #{userAccountId}
</select>
<insert
id=
"fulfilATask"
parameterType=
"com.mmc.csf.release.entity.requirements.ServiceFulfilATaskDO"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
INSERT INTO service_fulfil_a_task(task_describe, task_url, create_time, update_time, user_account_id,
requirements_info_id)
VALUES (#{taskDescribe}, #{taskUrl}, NOW(), NOW(), #{userAccountId},
#{requirementsInfoId});
</insert>
<update
id=
"updateFulfilATask"
>
UPDATE requirements_service
set service_dictionary_id=5,
service_flow_id=2,
update_time=NOW()
where requirements_info_id = #{requirementsInfoId}
</update>
<select
id=
"fulfilATaskDetails"
resultType=
"com.mmc.csf.release.entity.requirements.ServiceFulfilATaskDO"
>
select id, task_describe, task_url, create_time, update_time, requirements_info_id, user_account_id
from service_fulfil_a_task
where requirements_info_id = #{requirementsInfoId}
and user_account_id = #{userAccountId}
</select>
<insert
id=
"settleAccounts"
parameterType=
"com.mmc.csf.release.entity.requirements.ServiceSettleAccountsDO"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
INSERT INTO service_settle_accounts(order_amount, requirements_info_id, remark, create_time, update_time)
VALUES (#{orderAmount}, #{requirementsInfoId}, #{remark}, NOW(), NOW());
</insert>
<update
id=
"updatesettleAccounts"
>
UPDATE requirements_service
set service_dictionary_id=4,
service_flow_id=3,
update_time=NOW()
where requirements_info_id = #{requirementsInfoId}
</update>
<select
id=
"settleAccountsDetails"
resultType=
"com.mmc.csf.release.entity.requirements.ServiceSettleAccountsDO"
>
select id, order_amount, requirements_info_id, remark, create_time, update_time
from service_settle_accounts
where requirements_info_id = #{requirementsInfoId}
and user_account_id = #{userAccountId}
</select>
<insert
id=
"evaluate"
parameterType=
"com.mmc.csf.release.entity.requirements.ServiceEvaluateDO"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
INSERT INTO service_evaluate(evaluation_content, star_level, evaluation_url, create_time, update_time,
requirements_info_id, user_account_id)
VALUES (#{evaluationContent}, #{starLevel}, #{evaluationUrl}, NOW(), NOW(), #{requirementsInfoId},
#{userAccountId});
</insert>
<update
id=
"updateEvaluate"
>
UPDATE requirements_service
set service_dictionary_id=4,
service_flow_id= 4,
update_time=NOW()
where requirements_info_id = #{requirementsInfoId}
</update>
<select
id=
"evaluateDetails"
resultType=
"com.mmc.csf.release.entity.requirements.ServiceEvaluateDO"
>
select id,
evaluation_content,
star_level,
evaluation_url,
create_time,
update_time,
requirements_info_id,
user_account_id
user_account_id
FROM requirements_info
from service_evaluate
order by create_time desc
where requirements_info_id = #{requirementsInfoId}
and user_account_id = #{userAccountId}
</select>
</select>
<select
id=
"
detail
Publish"
resultType=
"com.mmc.csf.release.entity.requirements.RequirementsInfoDO"
>
<select
id=
"
my
Publish"
resultType=
"com.mmc.csf.release.entity.requirements.RequirementsInfoDO"
>
SELECT ri.id,
SELECT ri.id,
ri.task_title,
ri.task_title,
ri.task_start_time,
ri.task_start_time,
...
@@ -251,10 +450,56 @@
...
@@ -251,10 +450,56 @@
ri.user_account_id,
ri.user_account_id,
rt.type_name AS requirementTypeName,
rt.type_name AS requirementTypeName,
ri.publish_phone,
ri.publish_phone,
ri.publisher_number
ri.publisher_number,
ri.service_id,
ri.total_amount,
ri.insurance,
sf.doing,
sf.waiting,
sf.user_port,
sf.flyer_port,
sf.order_status,
ri.publish
FROM requirements_info ri
FROM requirements_info ri
LEFT JOIN requirements_type rt
LEFT JOIN requirements_type rt
ON rt.id = ri.requirement_type_id
ON rt.id = ri.requirement_type_id
WHERE ri.id = #{id}
LEFT JOIN service_flow sf ON sf.order_status = ri.service_flow_id
WHERE ri.user_account_id = #{userAccountId}
ORDER BY ri.order_level_amount desc,
ri.id desc
</select>
<select
id=
"myPreempt"
resultType=
"com.mmc.csf.release.entity.requirements.RequirementsInfoDO"
>
SELECT ri.id,
ri.task_title,
ri.task_start_time,
ri.task_end_time,
ri.task_address,
ri.longitude,
ri.latitude,
ri.require_url,
ri.require_description,
ri.requirement_type_id,
ri.user_account_id,
rt.type_name AS requirementTypeName,
ri.publish_phone,
ri.publisher_number,
ri.service_id,
ri.total_amount,
ri.insurance,
sf.doing,
sf.waiting,
sf.user_port,
sf.flyer_port,
sf.order_status,
ri.publish,
rs.preempt_total_amount
FROM requirements_info ri
LEFT JOIN requirements_type rt ON rt.id = ri.requirement_type_id
LEFT JOIN service_flow sf ON sf.order_status = ri.service_flow_id
INNER JOIN requirements_service rs ON ri.id = rs.requirements_info_id
WHERE rs.pilot_certification_user_id = #{userAccountId}
ORDER BY ri.order_level_amount desc,
rs.id desc
</select>
</select>
</mapper>
</mapper>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论