Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
O
oms
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
iuav
oms
Commits
8c9b6d94
提交
8c9b6d94
authored
8月 23, 2023
作者:
xiaowang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
充值订单的生成
上级
959de3c7
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
16 个修改的文件
包含
277 行增加
和
160 行删除
+277
-160
pom.xml
pom.xml
+13
-1
TDateUtil.java
src/main/java/com/mmc/oms/common/util/TDateUtil.java
+1
-0
TopUpOrderDao.java
src/main/java/com/mmc/oms/dao/topup/TopUpOrderDao.java
+18
-0
TopUpOrderDO.java
src/main/java/com/mmc/oms/entity/topup/TopUpOrderDO.java
+35
-0
UserAppApi.java
src/main/java/com/mmc/oms/feign/UserAppApi.java
+9
-77
FeignConfiguration.java
...ain/java/com/mmc/oms/feign/config/FeignConfiguration.java
+7
-1
UserAppApiHystrix.java
...ain/java/com/mmc/oms/feign/hystrix/UserAppApiHystrix.java
+5
-49
CommonPaymentVO.java
...ain/java/com/mmc/oms/model/vo/demand/CommonPaymentVO.java
+5
-2
OrderRequestParamsVO.java
...ava/com/mmc/oms/model/vo/demand/OrderRequestParamsVO.java
+2
-0
TopUpOrderVO.java
src/main/java/com/mmc/oms/model/vo/wallet/TopUpOrderVO.java
+29
-0
RabbitmqConstant.java
src/main/java/com/mmc/oms/mq/constant/RabbitmqConstant.java
+13
-0
MqConsumer.java
src/main/java/com/mmc/oms/mq/listener/MqConsumer.java
+50
-0
DemandReleaseOrderServiceImpl.java
...ms/service/demand/Impl/DemandReleaseOrderServiceImpl.java
+55
-30
application-dev.yml
src/main/resources/application-dev.yml
+7
-0
application-prod.yml
src/main/resources/application-prod.yml
+8
-0
TopUpOrderDao.xml
src/main/resources/mapper/topup/TopUpOrderDao.xml
+20
-0
没有找到文件。
pom.xml
浏览文件 @
8c9b6d94
...
...
@@ -30,7 +30,7 @@
<artifactId>
java-emoji-converter
</artifactId>
<version>
0.1.1
</version>
</dependency>
<dependency>
<groupId>
org.apache.httpcomponents
</groupId>
<artifactId>
httpcore
</artifactId>
...
...
@@ -51,6 +51,18 @@
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-openfeign
</artifactId>
</dependency>
<!-- RabbitMQ -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-amqp
</artifactId>
</dependency>
<dependency>
<groupId>
com.rabbitmq
</groupId>
<artifactId>
amqp-client
</artifactId>
<version>
5.5.0
</version>
<!-- 支持开源所有版本 -->
</dependency>
<!-- 使用okhttp-feign-连接池技术 -->
<dependency>
<groupId>
io.github.openfeign
</groupId>
...
...
src/main/java/com/mmc/oms/common/util/TDateUtil.java
浏览文件 @
8c9b6d94
...
...
@@ -15,6 +15,7 @@ public class TDateUtil {
public
static
final
String
THREE_MONTH
=
"threemonth"
;
public
static
final
String
SIX_MONTH
=
"sixmonth"
;
public
static
final
String
ONE_YEAR
=
"oneyear"
;
public
static
final
String
TYPE
=
"yyyyMMddHHmmss"
;
public
static
String
getCurrentDate
()
{
SimpleDateFormat
df
=
new
SimpleDateFormat
(
"yyyy/MM/dd HH:mm"
);
// 设置日期格式
...
...
src/main/java/com/mmc/oms/dao/topup/TopUpOrderDao.java
0 → 100644
浏览文件 @
8c9b6d94
package
com
.
mmc
.
oms
.
dao
.
topup
;
import
com.mmc.oms.entity.topup.TopUpOrderDO
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* @Author LW
* @date 2023/8/23 14:22
* 概要:
*/
@Mapper
public
interface
TopUpOrderDao
{
void
insertTopUpOrder
(
TopUpOrderDO
topUpOrderDO
);
void
updateTopUpOrderInfo
(
TopUpOrderDO
topUpOrderDO
);
}
src/main/java/com/mmc/oms/entity/topup/TopUpOrderDO.java
0 → 100644
浏览文件 @
8c9b6d94
package
com
.
mmc
.
oms
.
entity
.
topup
;
import
com.mmc.oms.model.vo.demand.OrderRequestParamsVO
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Date
;
/**
* @Author LW
* @date 2023/8/19 13:38
* 概要:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
TopUpOrderDO
{
private
Integer
id
;
private
Integer
version
;
private
Integer
userAccountId
;
private
String
orderNo
;
private
Integer
amount
;
private
String
tradeState
;
private
String
tradeStateDesc
;
private
String
description
;
private
Date
createTime
;
private
Date
updateTime
;
public
TopUpOrderDO
(
OrderRequestParamsVO
orderRequestParamsVO
,
Integer
userAccountId
)
{
this
.
userAccountId
=
userAccountId
;
this
.
orderNo
=
orderRequestParamsVO
.
getOrderNo
();
this
.
amount
=
orderRequestParamsVO
.
getAmount
();
}
}
src/main/java/com/mmc/oms/feign/UserAppApi.java
浏览文件 @
8c9b6d94
package
com
.
mmc
.
oms
.
feign
;
import
com.mmc.oms.model.dto.mall.CooperationTagVO
;
import
com.mmc.oms.model.dto.user.UserAccountSimpleDTO
;
import
com.mmc.oms.model.qo.mall.BUserAccountQO
;
//import io.swagger.annotations.ApiParam;
//import org.springframework.cloud.openfeign.FeignClient;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
import
com.mmc.oms.common.result.ResultBody
;
import
com.mmc.oms.feign.hystrix.UserAppApiHystrix
;
import
com.mmc.oms.model.vo.wallet.TopUpOrderVO
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
/**
* @author: zj
* @Date: 2023/5/18 17:06
*/
//
@FeignClient(url = "${userapp.url}", name = "cms-svc", fallback = UserAppApiHystrix.class)
@FeignClient
(
url
=
"${userapp.url}"
,
name
=
"cms-svc"
,
fallback
=
UserAppApiHystrix
.
class
)
public
interface
UserAppApi
{
/**
* 根据用户id获取基本信息
* @param userAccountId
* @return
*/
@RequestMapping
(
value
=
"user-account/feignGetUserSimpleInfo"
,
method
=
RequestMethod
.
GET
)
public
UserAccountSimpleDTO
feignGetUserSimpleInfo
(
@RequestParam
Integer
userAccountId
,
@RequestHeader
(
"token"
)
String
token
);
/**
* 根据地区信息查询用户id
* @param provinceCode
* @param cityCode
* @param districtCode
* @return
*/
@GetMapping
(
"user-account/feignListUserAccountIds"
)
List
<
Integer
>
feignListUserAccountIds
(
@RequestParam
Integer
provinceCode
,
@RequestParam
(
required
=
false
)
Integer
cityCode
,
@RequestParam
(
required
=
false
)
Integer
districtCode
,
@RequestHeader
(
value
=
"token"
,
required
=
false
)
String
token
);
/**
* 获取用户集合列表页面
*
* @param bUserAccountQO 问:b用户帐户
* @return {@link List}<{@link UserAccountSimpleDTO}>
*/
@PostMapping
(
"back-user/feignListBAccountPage"
)
List
<
UserAccountSimpleDTO
>
feignListBAccountPage
(
@RequestBody
BUserAccountQO
bUserAccountQO
,
@RequestHeader
(
"token"
)
String
token
);
/**
* 根据用户id查询用户信息
* @param ids
* @param token
* @return
*/
@PostMapping
(
"user-account/feignListUserAccountByIds"
)
List
<
UserAccountSimpleDTO
>
feignListUserAccountByIds
(
@RequestBody
List
<
Integer
>
ids
,
@RequestHeader
(
"token"
)
String
token
);
/**
* 查询推荐人信息
* @param userIds
* @return
*/
@PostMapping
(
"user-account/feignListRcdUserInfo"
)
List
<
UserAccountSimpleDTO
>
feignListRcdUserInfo
(
@RequestBody
List
<
Integer
>
userIds
);
/**
* 查询上级id
* @param userAccountId
* @return
*/
@GetMapping
(
"user-account/feignGetSuperiorRef"
)
Integer
feignGetSuperiorRef
(
@RequestParam
Integer
userAccountId
);
/**
* 查询上级推荐人信息
* @param userAccountId
* @return
*/
@GetMapping
(
"user-account/feignGetUserRcdInfo"
)
UserAccountSimpleDTO
feignGetUserRcdInfo
(
@RequestParam
Integer
userAccountId
);
/**
* 用户合作标签
* @return
*/
@GetMapping
(
"cooperation/feignListCooperationTag"
)
List
<
CooperationTagVO
>
feignListCooperationTag
();
@GetMapping
(
"pay/feignTopUpCash"
)
public
ResultBody
feignTopUpCash
(
@RequestBody
TopUpOrderVO
topUpOrderVO
);
}
src/main/java/com/mmc/oms/feign/config/FeignConfiguration.java
浏览文件 @
8c9b6d94
package
com
.
mmc
.
oms
.
feign
.
config
;
import
com.mmc.oms.feign.hystrix.PmsAppApiHystrix
;
import
com.mmc.oms.feign.hystrix.UserAppApiHystrix
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.context.annotation.Configuration
;
...
...
@@ -14,8 +15,13 @@ import org.springframework.context.annotation.Configuration;
public
class
FeignConfiguration
{
@Bean
(
name
=
"pmsAppApiHystrix"
)
public
PmsAppApiHystrix
P
msAppApi
()
{
public
PmsAppApiHystrix
p
msAppApi
()
{
return
new
PmsAppApiHystrix
();
}
@Bean
(
name
=
"userAppApiHystrix"
)
public
UserAppApiHystrix
userApp
()
{
return
new
UserAppApiHystrix
();
}
}
src/main/java/com/mmc/oms/feign/hystrix/UserAppApiHystrix.java
浏览文件 @
8c9b6d94
package
com
.
mmc
.
oms
.
feign
.
hystrix
;
import
com.mmc.oms.common.result.ResultBody
;
import
com.mmc.oms.feign.UserAppApi
;
import
com.mmc.oms.model.dto.mall.CooperationTagVO
;
import
com.mmc.oms.model.dto.user.UserAccountSimpleDTO
;
import
com.mmc.oms.model.qo.mall.BUserAccountQO
;
import
com.mmc.oms.model.vo.wallet.TopUpOrderVO
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.List
;
/**
* @author: zj
* @Date: 2023/5/18 17:08
*/
@Slf4j
public
class
UserAppApiHystrix
implements
UserAppApi
{
@Override
public
UserAccountSimpleDTO
feignGetUserSimpleInfo
(
Integer
userAccountId
,
String
token
)
{
log
.
error
(
"熔断:feignGetUserSimpleInfo:{}"
,
userAccountId
);
return
null
;
}
@Override
public
List
<
Integer
>
feignListUserAccountIds
(
Integer
provinceCode
,
Integer
cityCode
,
Integer
districtCode
,
String
token
)
{
log
.
error
(
"熔断:feignListUserAccountIds:{}, {}, {}"
,
provinceCode
,
cityCode
,
districtCode
);
return
null
;
}
@Override
public
List
<
UserAccountSimpleDTO
>
feignListBAccountPage
(
BUserAccountQO
bUserAccountQO
,
String
token
)
{
log
.
error
(
"熔断:feignListBAccountPage:{}"
,
bUserAccountQO
);
return
null
;
}
@Override
public
List
<
UserAccountSimpleDTO
>
feignListUserAccountByIds
(
List
<
Integer
>
ids
,
String
token
)
{
log
.
error
(
"熔断:feignListUserAccountByIds:{}"
,
ids
);
return
null
;
}
@Override
public
List
<
UserAccountSimpleDTO
>
feignListRcdUserInfo
(
List
<
Integer
>
userIds
)
{
log
.
error
(
"熔断:feignListRcdUserInfo:{}"
,
userIds
);
return
null
;
}
@Override
public
Integer
feignGetSuperiorRef
(
Integer
userAccountId
)
{
log
.
error
(
"熔断:feignGetSuperiorRef:{}"
,
userAccountId
);
return
null
;
}
@Override
public
UserAccountSimpleDTO
feignGetUserRcdInfo
(
Integer
userAccountId
)
{
log
.
error
(
"熔断:feignGetUserRcdInfo:{}"
,
userAccountId
);
return
null
;
}
@Override
public
List
<
CooperationTagVO
>
feignListCooperationTag
(
)
{
log
.
error
(
"熔断:
feignListCooperationTag:{}"
);
return
null
;
public
ResultBody
feignTopUpCash
(
TopUpOrderVO
topUpOrderVO
)
{
log
.
error
(
"熔断:
UserAppApiHystrix.feignTopUpCash==error==>param:{}"
,
topUpOrderVO
);
return
ResultBody
.
error
(
"-1"
,
"远程调用失败"
)
;
}
}
src/main/java/com/mmc/oms/model/vo/demand/CommonPaymentVO.java
浏览文件 @
8c9b6d94
...
...
@@ -18,10 +18,13 @@ import lombok.NoArgsConstructor;
public
class
CommonPaymentVO
{
@ApiModelProperty
(
value
=
"订单编号"
,
example
=
"R202307251459553408130"
)
@ApiModelProperty
(
value
=
"订单编号"
,
example
=
"R202307251459553408130"
)
private
String
orderNumber
;
@ApiModelProperty
(
value
=
"订单来源 0:产品商城 1:租赁订单 2:培训订单 3发布需求 4服务需求发布 ...其他后续加"
)
@ApiModelProperty
(
value
=
"订单来源 0:产品商城 1:租赁订单 2:培训订单 3发布需求 4服务需求发布
5充值
...其他后续加"
)
private
Integer
orderPort
;
@ApiModelProperty
(
value
=
"金额:单位(分)"
)
private
Integer
amount
;
}
src/main/java/com/mmc/oms/model/vo/demand/OrderRequestParamsVO.java
浏览文件 @
8c9b6d94
...
...
@@ -26,4 +26,6 @@ public class OrderRequestParamsVO implements Serializable {
private
Integer
amount
;
@ApiModelProperty
(
value
=
"订单来源 0:产品商城 1:租赁订单 2:培训订单 ...其他后续加"
)
private
Integer
orderPort
;
@ApiModelProperty
(
value
=
"附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用,实际情况下只有支付完成状态才会返回该字段。"
)
private
String
attach
;
}
src/main/java/com/mmc/oms/model/vo/wallet/TopUpOrderVO.java
0 → 100644
浏览文件 @
8c9b6d94
package
com
.
mmc
.
oms
.
model
.
vo
.
wallet
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @Author LW
* @date 2023/8/23 13:37
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
TopUpOrderVO
{
@ApiModelProperty
(
value
=
"支付用户的openid"
)
private
String
openid
;
@ApiModelProperty
(
value
=
"订单编号"
)
private
String
orderNo
;
@ApiModelProperty
(
value
=
"金额(分)"
)
private
Integer
amount
;
@ApiModelProperty
(
value
=
"订单状态"
)
private
String
tradeState
;
@ApiModelProperty
(
value
=
"交易状态描述"
)
private
String
tradeStateDesc
;
}
src/main/java/com/mmc/oms/mq/constant/RabbitmqConstant.java
0 → 100644
浏览文件 @
8c9b6d94
package
com
.
mmc
.
oms
.
mq
.
constant
;
/**
* @author: lw
* @Date: 2023/8/23 11:26
*/
public
class
RabbitmqConstant
{
public
final
static
String
USER_TOP_UP_DIRECT_EXCHANGE
=
"USER_TOP_UP_DIRECT_EXCHANGE"
;
public
final
static
String
USER_TOP_UP_DIRECT_QUEUE
=
"USER_TOP_UP_DIRECT_QUEUE"
;
public
final
static
String
USER_TOP_UP_ROUTING_KEY
=
"USER_TOP_UP_ROUTING_KEY"
;
}
src/main/java/com/mmc/oms/mq/listener/MqConsumer.java
0 → 100644
浏览文件 @
8c9b6d94
package
com
.
mmc
.
oms
.
mq
.
listener
;
import
com.alibaba.fastjson.JSONObject
;
import
com.mmc.oms.common.result.ResultBody
;
import
com.mmc.oms.dao.topup.TopUpOrderDao
;
import
com.mmc.oms.entity.topup.TopUpOrderDO
;
import
com.mmc.oms.feign.UserAppApi
;
import
com.mmc.oms.model.vo.wallet.TopUpOrderVO
;
import
com.mmc.oms.mq.constant.RabbitmqConstant
;
import
com.rabbitmq.client.Channel
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.messaging.handler.annotation.Payload
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
/**
* @Author LW
* @date 2023/6/29 10:35 概要:
*/
@Slf4j
@Component
public
class
MqConsumer
{
@Resource
TopUpOrderDao
topUpOrderDao
;
@Resource
UserAppApi
userAppApi
;
@RabbitListener
(
queues
=
RabbitmqConstant
.
USER_TOP_UP_DIRECT_QUEUE
)
public
void
subscribeFanoutQueue
(
@Payload
String
topUpOrder
,
Channel
channel
,
Message
message
)
{
TopUpOrderVO
topUpOrderVO
=
JSONObject
.
parseObject
(
topUpOrder
,
TopUpOrderVO
.
class
);
log
.
info
(
"==========用户充值====>用户充值消费者消费开始:订单信息是---->{}"
,
topUpOrderVO
);
// 根据消费的消息修改充值订单的信息
TopUpOrderDO
topUpOrderDO
=
new
TopUpOrderDO
();
topUpOrderDO
.
setTradeState
(
topUpOrderVO
.
getTradeState
());
topUpOrderDO
.
setTradeStateDesc
(
topUpOrderVO
.
getTradeStateDesc
());
topUpOrderDO
.
setOrderNo
(
topUpOrderVO
.
getOrderNo
());
topUpOrderDao
.
updateTopUpOrderInfo
(
topUpOrderDO
);
if
(
"SUCCESS"
.
equals
(
topUpOrderVO
.
getTradeState
()))
{
// 远程调用用户钱包信息进行云享金增加操作
ResultBody
resultBody
=
userAppApi
.
feignTopUpCash
(
topUpOrderVO
);
if
(
"-1"
.
equals
(
resultBody
.
getCode
()))
{
log
.
error
(
"===========用户支付成功,但由于远程调用失败,导致用户充值未到账,请手动处理该事件!param:{}=======>"
,
topUpOrderVO
);
}
}
log
.
info
(
"=========用户充值====>用户充值消费者消费结束。"
);
}
}
src/main/java/com/mmc/oms/service/demand/Impl/DemandReleaseOrderServiceImpl.java
浏览文件 @
8c9b6d94
差异被折叠。
点击展开。
src/main/resources/application-dev.yml
浏览文件 @
8c9b6d94
...
...
@@ -13,6 +13,13 @@ spring:
jedis
:
pool
:
max-active
:
2
#rabbitMQ
rabbitmq
:
host
:
amqp-cn-zvp2ozhnj001.cn-shenzhen.amqp-0.vpc.mq.amqp.aliyuncs.com
port
:
5672
username
:
MjphbXFwLWNuLXp2cDJvemhuajAwMTpMVEFJNEZ6Q3B5ckEzM1BlZ254V1M2WFY=
password
:
${RABBITMQ_PASSWORD}
virtual-host
:
dev
main
:
allow-circular-references
:
true
...
...
src/main/resources/application-prod.yml
浏览文件 @
8c9b6d94
...
...
@@ -16,6 +16,14 @@ spring:
main
:
allow-circular-references
:
true
#rabbitMQ
rabbitmq
:
host
:
amqp-cn-zvp2ozhnj001.cn-shenzhen.amqp-0.vpc.mq.amqp.aliyuncs.com
port
:
5672
username
:
MjphbXFwLWNuLXp2cDJvemhuajAwMTpMVEFJNEZ6Q3B5ckEzM1BlZ254V1M2WFY=
password
:
${RABBITMQ_PASSWORD}
virtual-host
:
prod
springfox
:
documentation
:
swagger-ui
:
...
...
src/main/resources/mapper/topup/TopUpOrderDao.xml
0 → 100644
浏览文件 @
8c9b6d94
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.mmc.oms.dao.topup.TopUpOrderDao"
>
<insert
id=
"insertTopUpOrder"
>
insert into top_up_order (user_account_id,
order_no,
amount,
trade_state,
description)
values (#{userAccountId}, #{orderNo}, #{amount}, #{tradeState}, #{description})
</insert>
<update
id=
"updateTopUpOrderInfo"
>
update top_up_order
set trade_state = #{tradeState},
trade_state_desc = #{tradeStateDesc}
where order_no = #{orderNo}
</update>
</mapper>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论