Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
I
ims
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
iuav
ims
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
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论