记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
董敬伟
liquidnet-bus-v1
Commits
db014985
Commit
db014985
authored
May 19, 2021
by
洪全海
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交代码,会员下单接口
parent
31e2b788
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
465 additions
and
47 deletions
+465
-47
AdamMemberOrderCallbackResult.java
...idnet/service/adam/dto/AdamMemberOrderCallbackResult.java
+30
-0
AdamMemberOrderParam.java
.../com/liquidnet/service/adam/dto/AdamMemberOrderParam.java
+2
-0
AdamMemberPriceParam.java
.../com/liquidnet/service/adam/dto/AdamMemberPriceParam.java
+0
-12
AdamMemberCodeVo.java
...a/com/liquidnet/service/adam/dto/vo/AdamMemberCodeVo.java
+6
-1
AdamMemberOrderVo.java
.../com/liquidnet/service/adam/dto/vo/AdamMemberOrderVo.java
+36
-2
AdamUserMemberVo.java
...a/com/liquidnet/service/adam/dto/vo/AdamUserMemberVo.java
+5
-1
IAdamMemberOrderService.java
...quidnet/service/adam/service/IAdamMemberOrderService.java
+8
-0
IAdamUserMemberService.java
...iquidnet/service/adam/service/IAdamUserMemberService.java
+18
-0
AdamMemberOrderConst.java
...liquidnet/service/adam/constant/AdamMemberOrderConst.java
+34
-0
AdamRedisConst.java
...a/com/liquidnet/service/adam/constant/AdamRedisConst.java
+5
-0
AdamMemberController.java
...quidnet/service/adam/controller/AdamMemberController.java
+20
-0
AdamMemberOrderServiceImpl.java
...service/adam/service/impl/AdamMemberOrderServiceImpl.java
+250
-23
AdamMemberServiceImpl.java
...dnet/service/adam/service/impl/AdamMemberServiceImpl.java
+1
-1
AdamUserMemberServiceImpl.java
.../service/adam/service/impl/AdamUserMemberServiceImpl.java
+48
-1
AdamMemberPriceServiceImpl.java
...e/adam/service/impl/admin/AdamMemberPriceServiceImpl.java
+2
-6
No files found.
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/dto/AdamMemberOrderCallbackResult.java
0 → 100644
View file @
db014985
package
com
.
liquidnet
.
service
.
adam
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
@ApiModel
(
value
=
"AdamMemberOrderCallbackResult"
,
description
=
"购买会员或会员码的支付回调"
)
@Data
public
class
AdamMemberOrderCallbackResult
implements
Serializable
{
private
static
final
long
serialVersionUID
=
3219448286221952517L
;
@ApiModelProperty
(
position
=
0
,
required
=
true
,
value
=
"订单状态"
)
private
Integer
status
;
@ApiModelProperty
(
position
=
1
,
required
=
true
,
value
=
"订单号"
)
private
String
orderCode
;
@ApiModelProperty
(
position
=
2
,
required
=
true
,
value
=
"支付单号"
)
private
String
code
;
@ApiModelProperty
(
position
=
3
,
required
=
true
,
value
=
"购买类型"
)
private
String
type
;
@ApiModelProperty
(
position
=
4
,
required
=
true
,
value
=
"金额"
)
private
BigDecimal
price
;
@ApiModelProperty
(
position
=
5
,
required
=
true
,
value
=
"支付类型"
)
private
String
paymentType
;
@ApiModelProperty
(
position
=
6
,
required
=
true
,
value
=
"支付时间"
)
private
LocalDateTime
paymentAt
;
}
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/dto/AdamMemberOrderParam.java
View file @
db014985
...
...
@@ -44,5 +44,7 @@ public class AdamMemberOrderParam implements Serializable {
private
String
productId
;
@ApiModelProperty
(
position
=
10
,
required
=
true
,
value
=
"支付用的openId"
)
private
String
openId
;
@ApiModelProperty
(
position
=
11
,
required
=
false
,
value
=
"ip地址"
)
private
String
clientIp
;
}
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/dto/AdamMemberPriceParam.java
View file @
db014985
...
...
@@ -73,16 +73,4 @@ public class AdamMemberPriceParam implements Serializable {
*/
@ApiModelProperty
(
position
=
8
,
required
=
false
,
value
=
"会员包须知"
,
example
=
"会员包须知"
)
private
String
detail
;
/**
* 创建时间
*/
@ApiModelProperty
(
position
=
9
,
required
=
false
,
value
=
"创建时间"
,
example
=
"2021-05-10 13:13:13"
)
private
LocalDateTime
createdAt
;
/**
* 更新时间
*/
@ApiModelProperty
(
position
=
10
,
required
=
false
,
value
=
"更新时间"
,
example
=
"2021-05-10 13:13:13"
)
private
LocalDateTime
updatedAt
;
}
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/dto/vo/AdamMemberCodeVo.java
View file @
db014985
...
...
@@ -61,8 +61,13 @@ public class AdamMemberCodeVo implements Serializable, Cloneable {
/**
* 使用时间
*/
@ApiModelProperty
(
position
=
1
,
value
=
"使用时间"
)
@ApiModelProperty
(
position
=
1
1
,
value
=
"使用时间"
)
private
String
useAt
;
/**
* 会员码id
*/
@ApiModelProperty
(
position
=
12
,
value
=
"会员码id"
)
private
String
memberCodeId
;
private
String
createdAt
;
private
String
updatedAt
;
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/dto/vo/AdamMemberOrderVo.java
View file @
db014985
package
com
.
liquidnet
.
service
.
adam
.
dto
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.springframework.security.core.parameters.P
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
@ApiModel
(
value
=
"AdamMemberOrderVo"
,
description
=
"订单详情展示"
)
@Data
public
class
AdamMemberOrderVo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
5258094625450569125L
;
@ApiModelProperty
(
position
=
0
,
value
=
"订单号"
)
private
String
orderNo
;
@ApiModelProperty
(
position
=
1
,
value
=
"用户uid"
)
private
String
uid
;
@ApiModelProperty
(
position
=
2
,
value
=
"购买方式:0-购买会员 1-购买会员码,2-使用会员码"
)
private
Integer
mode
;
@ApiModelProperty
(
position
=
3
,
value
=
"会员id"
)
private
String
memberId
;
@ApiModelProperty
(
position
=
4
,
value
=
"会员名"
)
private
String
memberName
;
@ApiModelProperty
(
position
=
5
,
value
=
"会员价格id"
)
private
String
memberPriceId
;
@ApiModelProperty
(
position
=
6
,
value
=
"购买天数"
)
private
Integer
days
;
@ApiModelProperty
(
position
=
7
,
value
=
"订单状态:0未支付 1已支付 2已超时 5已退款"
)
private
Integer
state
;
@ApiModelProperty
(
position
=
8
,
value
=
"会员号"
)
private
String
memberNo
;
@ApiModelProperty
(
position
=
9
,
value
=
"支付类型"
)
private
String
payChannel
;
@ApiModelProperty
(
position
=
10
,
value
=
"支付单号"
)
private
String
payNo
;
@ApiModelProperty
(
position
=
11
,
value
=
"支付时间"
)
private
String
paymentAt
;
@ApiModelProperty
(
position
=
12
,
value
=
"生日"
)
private
String
birthday
;
@ApiModelProperty
(
position
=
13
,
value
=
"创建时间"
)
private
String
createdAt
;
@ApiModelProperty
(
position
=
14
,
value
=
"兑换码"
)
private
String
memberCode
;
@ApiModelProperty
(
position
=
15
,
value
=
"兑换码"
)
private
BigDecimal
price
;
public
static
final
AdamMemberOrderVo
obj
=
new
AdamMemberOrderVo
();
private
static
AdamMemberOrderVo
getNew
(){
private
static
AdamMemberOrderVo
getNew
()
{
try
{
return
(
AdamMemberOrderVo
)
obj
.
clone
();
}
catch
(
CloneNotSupportedException
e
)
{
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/dto/vo/AdamUserMemberVo.java
View file @
db014985
...
...
@@ -3,11 +3,13 @@ package com.liquidnet.service.adam.dto.vo;
import
com.liquidnet.service.adam.entity.AdamUserMember
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
@ApiModel
(
value
=
"AdamUserMemberVo"
,
description
=
"会员用户信息"
)
@Data
public
class
AdamUserMemberVo
implements
Serializable
,
Cloneable
{
private
static
final
long
serialVersionUID
=
5258094625450569125L
;
...
...
@@ -16,7 +18,7 @@ public class AdamUserMemberVo implements Serializable, Cloneable {
@ApiModelProperty
(
position
=
1
,
value
=
"会员类型id"
,
example
=
"0"
)
private
String
memberId
;
@ApiModelProperty
(
position
=
2
,
value
=
"会员号"
,
example
=
"0"
)
private
Integer
memberNo
;
private
String
memberNo
;
@ApiModelProperty
(
position
=
3
,
value
=
"用户会员状态"
,
example
=
"1"
)
private
Integer
state
;
@ApiModelProperty
(
position
=
4
,
value
=
"会员过期时间"
)
...
...
@@ -25,6 +27,8 @@ public class AdamUserMemberVo implements Serializable, Cloneable {
private
String
createdAt
;
@ApiModelProperty
(
position
=
6
,
value
=
"更新时间"
)
private
String
updatedAt
;
@ApiModelProperty
(
position
=
7
,
value
=
"会员用户id"
)
private
String
memberUserId
;
private
static
final
AdamUserMemberVo
obj
=
new
AdamUserMemberVo
();
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/service/IAdamMemberOrderService.java
View file @
db014985
package
com
.
liquidnet
.
service
.
adam
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.liquidnet.service.adam.dto.AdamMemberOrderCallbackResult
;
import
com.liquidnet.service.adam.dto.AdamMemberOrderCodeParam
;
import
com.liquidnet.service.adam.dto.AdamMemberOrderParam
;
import
com.liquidnet.service.adam.dto.AdamMemberOrderResult
;
...
...
@@ -32,4 +33,11 @@ public interface IAdamMemberOrderService extends IService<AdamMemberOrder> {
* @return
*/
AdamMemberOrderVo
getMemberOrderInfo
(
String
orderNo
);
/**
* 支付回调
* @return
*/
boolean
memberNotifyCallBack
(
AdamMemberOrderCallbackResult
result
);
}
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/service/IAdamUserMemberService.java
View file @
db014985
package
com
.
liquidnet
.
service
.
adam
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.liquidnet.service.adam.dto.vo.AdamUserMemberVo
;
import
com.liquidnet.service.adam.entity.AdamUserMember
;
/**
...
...
@@ -10,4 +11,21 @@ public interface IAdamUserMemberService extends IService<AdamUserMember> {
void
createUserMemberInfo
(
String
memberId
);
String
getMaxMemberNo
(
String
memberId
);
// 获取用户会员信息
AdamUserMemberVo
getUserMemberInfo
(
String
uid
);
/**
* 获取会员库存
* @param memberId
* @return
*/
boolean
getOneFromRepertory
(
String
memberId
);
/**
* 限购数量
* @param memberId
* @return
*/
Integer
getRepertoryCount
(
String
memberId
);
}
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/constant/AdamMemberOrderConst.java
0 → 100644
View file @
db014985
package
com
.
liquidnet
.
service
.
adam
.
constant
;
/**
* 订单
*/
public
class
AdamMemberOrderConst
{
// 订单状态
public
static
final
Integer
STATUS_UNPAID
=
0
;
// 待支付
public
static
final
Integer
STATUS_PAID
=
1
;
// 已支付
public
static
final
Integer
STATUS_EXPIRED
=
2
;
// 已过期(限时10分钟支付,20分钟回滚卡号,变更为已过期)
public
static
final
Integer
STATUS_LATE
=
3
;
// 超时付(超过20分钟支付,此时卡号已回滚)
public
static
final
Integer
STATUS_REFUNDING
=
4
;
// 退款中
public
static
final
Integer
STATUS_REFUND
=
5
;
// 退款完成
public
static
final
String
TYPE_BUY
=
"buy"
;
// 购买会员、会员码
public
static
final
String
TYPE_CODE
=
"code"
;
// 使用会员码
public
static
final
String
TYPE_VIP
=
"VIP"
;
public
static
final
String
TYPE_CLUB
=
"CLUB"
;
public
static
final
Integer
TIME_LIMIT
=
5
;
public
static
final
Integer
TIME_OUT
=
10
;
public
static
final
Integer
SUB_TYPE_BUY_VIP
=
0
;
public
static
final
Integer
SUB_TYPE_BUY_VIP_CODE
=
1
;
// 购买会员码(不需要填写地址)
public
static
final
Integer
SUB_TYPE_USE_VIP_CODE
=
2
;
// 使用会员码(购买的)(仅限从未购买过会员的用户使用,需要填写地址)
public
static
final
Integer
SUB_TYPE_USE_GIFT_CODE
=
3
;
// 使用会员码(赠送的)(仅限从未购买过会员的用户使用,不需要填写地址)
// 用户会员状态
public
static
final
Integer
STATE_VALID
=
1
;
// 正常
public
static
final
Integer
STATE_EXPIRED
=
2
;
// 已失效
}
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/constant/AdamRedisConst.java
View file @
db014985
...
...
@@ -26,6 +26,11 @@ public class AdamRedisConst {
public
static
final
String
MEMBER_MEMBER_NO_MAX_KEY
=
ADAM
.
concat
(
":members:member_no_max:"
);
public
static
final
String
INFO_MEMBERS_USER_INFO
=
ADAM
.
concat
(
":list:members:user:info:"
);
public
static
final
String
INFO_MEMBERS_REPERTORY_INFO
=
ADAM
.
concat
(
":list:members:repertory:"
);
public
static
final
String
INFO_MEMBERS_ORDER_INFO
=
ADAM
.
concat
(
":list:members:order:"
);
// public static final String USER_CONFIRM_SMS_CODE_KEY = ADAM + ":user:sms_confirm:";
//
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/controller/AdamMemberController.java
View file @
db014985
...
...
@@ -2,6 +2,9 @@ package com.liquidnet.service.adam.controller;
import
com.github.xiaoymin.knife4j.annotations.ApiOperationSupport
;
import
com.github.xiaoymin.knife4j.annotations.ApiSupport
;
import
com.liquidnet.service.adam.dto.AdamMemberOrderParam
;
import
com.liquidnet.service.adam.dto.AdamMemberOrderResult
;
import
com.liquidnet.service.adam.service.IAdamMemberOrderService
;
import
com.liquidnet.service.base.ErrorMapping
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.adam.dto.vo.AdamMemberVo
;
...
...
@@ -11,6 +14,7 @@ import io.swagger.annotations.ApiOperation;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
...
...
@@ -23,6 +27,8 @@ public class AdamMemberController {
@Autowired
IAdamMemberService
adamMemberService
;
@Autowired
IAdamMemberOrderService
adamMemberOrderService
;
@ApiOperationSupport
(
order
=
0
)
@ApiOperation
(
value
=
"会员信息"
)
...
...
@@ -31,4 +37,18 @@ public class AdamMemberController {
AdamMemberVo
info
=
adamMemberService
.
queryMemberInfo
();
return
ResponseDto
.
success
(
info
);
}
@ApiOperationSupport
(
order
=
1
)
@ApiOperation
(
value
=
"购买会员或会员码"
)
@PostMapping
(
"buy/member"
)
public
ResponseDto
<
AdamMemberOrderResult
>
buyMemberOrCode
(
AdamMemberOrderParam
param
)
{
AdamMemberOrderResult
adamMemberOrderResult
=
null
;
try
{
adamMemberOrderResult
=
adamMemberOrderService
.
buyMemberOrMemberCode
(
param
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
ResponseDto
.
failure
();
}
return
ResponseDto
.
success
(
adamMemberOrderResult
);
}
}
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/service/impl/AdamMemberOrderServiceImpl.java
View file @
db014985
package
com
.
liquidnet
.
service
.
adam
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.commons.lang.util.HttpUtil
;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.service.adam.constant.AdamMemberOrderConst
;
import
com.liquidnet.service.adam.constant.AdamRedisConst
;
import
com.liquidnet.service.adam.dto.AdamMemberOrderCallbackResult
;
import
com.liquidnet.service.adam.dto.AdamMemberOrderCodeParam
;
import
com.liquidnet.service.adam.dto.AdamMemberOrderParam
;
import
com.liquidnet.service.adam.dto.AdamMemberOrderResult
;
import
com.liquidnet.service.adam.dto.vo.AdamMemberOrderVo
;
import
com.liquidnet.service.adam.dto.vo.AdamMemberPriceVo
;
import
com.liquidnet.service.adam.dto.vo.AdamMemberVo
;
import
com.liquidnet.service.adam.dto.vo.*
;
import
com.liquidnet.service.adam.entity.AdamMemberOrder
;
import
com.liquidnet.service.adam.entity.AdamMemberPrice
;
import
com.liquidnet.service.adam.mapper.AdamMemberOrderMapper
;
import
com.liquidnet.service.adam.mapper.AdamMemberPriceMapper
;
import
com.liquidnet.service.adam.service.IAdamMemberOrderService
;
import
com.liquidnet.service.adam.service.IAdamMemberService
;
import
com.liquidnet.service.adam.service.IAdamUserMemberService
;
import
com.liquidnet.service.adam.service.admin.IAdamMemberPriceService
;
import
com.liquidnet.service.adam.util.MemberUtil
;
import
com.mongodb.BasicDBObject
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.convert.MongoConverter
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.LinkedMultiValueMap
;
import
org.springframework.util.MultiValueMap
;
import
java.util.List
;
import
java.math.BigDecimal
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.*
;
@Slf4j
@Service
...
...
@@ -31,6 +50,10 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
@Autowired
AdamMemberPriceMapper
adamMemberPriceMapper
;
@Autowired
IAdamUserMemberService
adamUserMemberService
;
@Autowired
IAdamMemberPriceService
adamMemberPriceService
;
@Autowired
MongoTemplate
mongoTemplate
;
@Autowired
MongoConverter
mongoConverter
;
...
...
@@ -43,42 +66,101 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
@Override
public
AdamMemberOrderResult
buyMemberOrMemberCode
(
AdamMemberOrderParam
param
)
throws
Exception
{
String
memberId
=
param
.
getMemberId
();
String
memberPriceId
=
param
.
getMemberPriceId
();
AdamMemberOrderResult
result
=
new
AdamMemberOrderResult
();
// 判断黑名单,待定(暂不做)
// 验证会员是否有效
AdamMemberVo
adamMemberVo
=
adamMemberService
.
queryMemberInfo
();
if
(
adamMemberVo
.
getMemberId
()
!=
param
.
getMemberId
()
)
{
if
(
adamMemberVo
.
getMemberId
()
!=
memberId
)
{
result
.
setState
(
0
);
return
result
;
}
// 验证价格是否有效
List
<
AdamMemberPriceVo
>
adamMemberPrice
=
adamMemberVo
.
getAdamMemberPrice
();
AdamMemberPriceVo
priceVo
=
null
;
for
(
int
i
=
0
;
i
<
adamMemberPrice
.
size
();
i
++)
{
AdamMemberPriceVo
adamMemberPriceVo
=
adamMemberPrice
.
get
(
i
);
if
(
adamMemberPriceVo
.
getMemberPriceId
().
equals
(
param
.
getMemberPriceId
()))
{
priceVo
=
adamMemberPriceVo
;
break
;
}
}
// 获取会员编号
if
(
null
==
priceVo
)
{
result
.
setState
(
0
);
return
result
;
}
String
cardNumber
=
""
;
// 查询用户是否是会员 获取会员编号
AdamUserMemberVo
userMemberInfo
=
adamUserMemberService
.
getUserMemberInfo
(
param
.
getUid
());
AdamMemberPriceVo
memberPrice
=
(
AdamMemberPriceVo
)
redisUtil
.
hget
(
AdamRedisConst
.
INFO_MEMBERS_PRICE_INFO
.
concat
(
memberId
),
memberPriceId
);
if
(
null
==
memberPrice
)
{
memberPrice
=
(
AdamMemberPriceVo
)
mongoTemplate
.
find
(
Query
.
query
(
Criteria
.
where
(
"memberPriceId"
).
is
(
memberPriceId
)),
AdamMemberPriceVo
.
class
,
AdamMemberPriceVo
.
class
.
getSimpleName
());
}
String
createdAt
=
DateUtil
.
format
(
LocalDateTime
.
now
(),
DateUtil
.
Formatter
.
yyyyMMddHHmmss
);
// 生成订单信息
AdamMemberOrderVo
orderVo
=
new
AdamMemberOrderVo
();
String
orderNo
=
IDGenerator
.
nextSnowId
().
toString
().
concat
(
"V"
);
orderVo
.
setOrderNo
(
orderNo
);
orderVo
.
setMemberNo
(
cardNumber
);
orderVo
.
setMemberId
(
memberId
);
orderVo
.
setBirthday
(
DateUtil
.
format
(
param
.
getBirthday
(),
DateUtil
.
Formatter
.
yyyyMMddHHmmss
));
orderVo
.
setDays
(
memberPrice
.
getDays
());
orderVo
.
setMemberPriceId
(
memberPriceId
);
orderVo
.
setCreatedAt
(
createdAt
);
orderVo
.
setMemberName
(
adamMemberVo
.
getName
());
orderVo
.
setMode
(
param
.
getMode
());
orderVo
.
setPayChannel
(
param
.
getPayChannel
());
orderVo
.
setState
(
AdamMemberOrderConst
.
STATUS_UNPAID
);
orderVo
.
setUid
(
param
.
getUid
());
orderVo
.
setPrice
(
param
.
getPrice
());
// todo 此处调用MQ通知mysql
// List<Object> mqList = new ArrayList<>();
mongoTemplate
.
insert
(
orderVo
);
redisUtil
.
hset
(
AdamRedisConst
.
INFO_MEMBERS_ORDER_INFO
.
concat
(
param
.
getUid
()),
orderNo
,
orderVo
);
// 创建订单
int
buyType
=
param
.
getMode
();
// 判断购买情况
// 调取对应支付接口
String
a
=
""
;
LinkedMultiValueMap
<
String
,
String
>
payParam
=
new
LinkedMultiValueMap
<>();
payParam
.
add
(
"type"
,
AdamMemberOrderConst
.
TYPE_VIP
);
payParam
.
add
(
"price"
,
String
.
valueOf
(
priceVo
.
getPrice
()));
payParam
.
add
(
"name"
,
orderVo
.
getMemberName
());
payParam
.
add
(
"order_code"
,
orderVo
.
getOrderNo
());
payParam
.
add
(
"client_ip"
,
param
.
getClientIp
());
payParam
.
add
(
"notify_url"
,
"回调地址"
);
payParam
.
add
(
"create_date"
,
createdAt
);
payParam
.
add
(
"expire_time"
,
AdamMemberOrderConst
.
TIME_LIMIT
.
toString
());
if
(
null
!=
param
.
getAuthCode
())
{
payParam
.
add
(
"auth_code"
,
param
.
getAuthCode
());
}
if
(
null
!=
param
.
getOpenId
())
{
payParam
.
add
(
"open_id"
,
param
.
getOpenId
());
}
if
(
null
!=
param
.
getProductId
())
{
payParam
.
add
(
"product_id"
,
param
.
getProductId
());
}
Map
<
String
,
String
>
payResult
=
null
;
switch
(
buyType
)
{
case
0
:
a
=
"1"
;
payParam
.
add
(
"detail"
,
"正在现场 - 购买会员"
);
payResult
=
this
.
callPayServer
(
param
.
getPayChannel
(),
payParam
);
result
.
setOrderId
(
payResult
.
get
(
"order_id"
));
break
;
case
1
:
a
=
"2"
;
break
;
default
:
a
=
"3"
;
payParam
.
add
(
"detail"
,
"正在现场 - 购买会员码"
);
payResult
=
this
.
callPayServer
(
param
.
getPayChannel
(),
payParam
);
result
.
setOrderId
(
payResult
.
get
(
"order_id"
));
break
;
}
result
.
setPayObject
(
payResult
);
return
result
;
}
...
...
@@ -96,25 +178,170 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
}
/**
*
购买会员
*
调用支付中心接口,获取支付信息
*
* @param payType 支付类型
* @param payParam 支付参数
* @return
*/
private
Object
buyMember
()
{
private
Map
<
String
,
String
>
callPayServer
(
String
payType
,
LinkedMultiValueMap
<
String
,
String
>
payParam
)
{
String
url
=
"http://testpay.zhengzai.tv"
;
switch
(
payType
)
{
case
"APPALIPAY"
:
url
+=
"/app/alipay"
;
break
;
case
"APPWEPAY"
:
url
+=
"/app/wepay"
;
break
;
case
"WAPALIPAY"
:
url
+=
"/wap/alipay"
;
break
;
case
"WAPWEPAY"
:
url
+=
"/wap/wepay"
;
break
;
case
"JSWEPAY"
:
url
+=
"/js/wepay"
;
break
;
case
"APPLETWEPAY"
:
url
+=
"/applet/wepay"
;
break
;
}
String
json
=
HttpUtil
.
post
(
url
,
payParam
);
HashMap
<
String
,
String
>
result
=
(
HashMap
<
String
,
String
>)
JSONObject
.
parse
(
json
);
return
result
;
}
@Override
public
AdamMemberOrderVo
getMemberOrderInfo
(
String
orderNo
)
{
return
null
;
}
@Override
public
boolean
memberNotifyCallBack
(
AdamMemberOrderCallbackResult
result
)
{
if
(
1
!=
result
.
getStatus
()
||
result
.
getType
()
!=
AdamMemberOrderConst
.
TYPE_VIP
||
null
==
result
.
getOrderCode
()
||
null
==
result
.
getCode
())
{
return
false
;
}
AdamMemberOrderVo
orderVo
=
mongoTemplate
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"orderNo"
).
is
(
result
.
getOrderCode
())),
AdamMemberOrderVo
.
class
,
AdamMemberOrderVo
.
class
.
getSimpleName
());
int
state
=
orderVo
.
getState
();
if
(
AdamMemberOrderConst
.
STATUS_PAID
==
state
||
AdamMemberOrderConst
.
STATUS_LATE
==
state
)
{
// 订单已经处理过
return
false
;
}
if
(
result
.
getPrice
().
compareTo
(
orderVo
.
getPrice
())
!=
0
)
{
// 金额不一致
return
false
;
}
String
currentDateTime
=
DateUtil
.
getNowTime
();
// 获取购买天数
AdamMemberPrice
priceVo
=
adamMemberPriceService
.
query
(
orderVo
.
getMemberPriceId
());
String
cardNumber
=
""
;
int
day
=
priceVo
.
getDays
();
try
{
if
(
AdamMemberOrderConst
.
SUB_TYPE_BUY_VIP
==
orderVo
.
getMode
())
{
// 购买会员
mongoTemplate
.
findOne
(
Query
.
query
(
Criteria
.
where
(
""
).
is
(
""
)),
null
,
null
);
AdamUserMemberVo
userMemberInfo
=
adamUserMemberService
.
getUserMemberInfo
(
orderVo
.
getUid
());
if
(
null
==
userMemberInfo
)
{
// 创建会员
cardNumber
=
adamUserMemberService
.
getMaxMemberNo
(
orderVo
.
getMemberId
());
AdamUserMemberVo
createMemberUser
=
AdamUserMemberVo
.
getNew
();
createMemberUser
.
setMemberUserId
(
IDGenerator
.
nextSnowId
().
toString
());
createMemberUser
.
setMemberId
(
orderVo
.
getMemberId
());
createMemberUser
.
setMemberNo
(
orderVo
.
getMemberNo
());
createMemberUser
.
setState
(
AdamMemberOrderConst
.
STATE_VALID
);
createMemberUser
.
setUid
(
orderVo
.
getUid
());
createMemberUser
.
setCreatedAt
(
currentDateTime
);
createMemberUser
.
setUpdatedAt
(
currentDateTime
);
createMemberUser
.
setMemberNo
(
cardNumber
);
Date
expiryAt
=
DateUtil
.
getBeforeDayEnd
(
Calendar
.
getInstance
(),
day
);
String
expiryAtStr
=
DateUtil
.
format
(
expiryAt
,
DateUtil
.
Formatter
.
yyyyMMddHHmmss
);
createMemberUser
.
setExpiryAt
(
expiryAtStr
);
// todo vip card code 记录 自动创建并使用
AdamMemberCodeVo
codeVo
=
this
.
getAdamMemberCodeVo
(
orderVo
,
result
.
getCode
(),
0
,
currentDateTime
);
codeVo
.
setState
(
1
);
codeVo
.
setUseUid
(
orderVo
.
getUid
());
codeVo
.
setUseOrderNo
(
orderVo
.
getMemberCode
());
codeVo
.
setMemberNo
(
orderVo
.
getMemberNo
());
codeVo
.
setUseAt
(
currentDateTime
);
codeVo
.
setMemberCodeId
(
IDGenerator
.
nextSnowId
().
toString
());
// 订单写入MongoDB和Redis中
mongoTemplate
.
insert
(
createMemberUser
);
redisUtil
.
set
(
AdamRedisConst
.
INFO_MEMBERS_USER_INFO
.
concat
(
orderVo
.
getUid
()),
createMemberUser
);
// 会员码使用记录
mongoTemplate
.
insert
(
codeVo
);
redisUtil
.
hset
(
AdamRedisConst
.
INFO_MEMBERS_CODE_INFO
.
concat
(
codeVo
.
getBuyUid
()),
codeVo
.
getMemberCodeId
(),
codeVo
);
// todo mq 发送数据到队列中
}
else
{
// 续费
String
currentExpiryAt
=
userMemberInfo
.
getExpiryAt
();
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
DateUtil
.
parse
(
currentExpiryAt
,
"yyyy-MM-dd HH:mm:ss"
));
Date
expiryAt
=
DateUtil
.
getBeforeDayEnd
(
calendar
,
day
);
String
expiryAtStr
=
DateUtil
.
format
(
expiryAt
,
DateUtil
.
Formatter
.
yyyyMMddHHmmss
);
userMemberInfo
.
setExpiryAt
(
expiryAtStr
);
BasicDBObject
object
=
new
BasicDBObject
(
"$set"
,
JSON
.
parse
(
JsonUtils
.
toJson
(
userMemberInfo
)));
mongoTemplate
.
getCollection
(
AdamUserMemberVo
.
class
.
getSimpleName
())
.
updateOne
(
Query
.
query
(
Criteria
.
where
(
"uid"
).
is
(
userMemberInfo
.
getUid
())).
getQueryObject
(),
object
);
redisUtil
.
set
(
AdamRedisConst
.
INFO_MEMBERS_USER_INFO
.
concat
(
orderVo
.
getUid
()),
userMemberInfo
);
}
}
if
(
AdamMemberOrderConst
.
SUB_TYPE_BUY_VIP_CODE
==
orderVo
.
getMode
())
{
// 购买会员码
cardNumber
=
adamUserMemberService
.
getMaxMemberNo
(
orderVo
.
getMemberId
());
AdamMemberCodeVo
codeVo
=
this
.
getAdamMemberCodeVo
(
orderVo
,
result
.
getCode
(),
0
,
currentDateTime
);
codeVo
.
setState
(
0
);
codeVo
.
setMemberNo
(
cardNumber
);
mongoTemplate
.
insert
(
codeVo
);
redisUtil
.
hset
(
AdamRedisConst
.
INFO_MEMBERS_CODE_INFO
.
concat
(
codeVo
.
getBuyUid
()),
codeVo
.
getMemberCodeId
(),
codeVo
);
}
// 更新订单信息
orderVo
.
setPayChannel
(
result
.
getPaymentType
());
orderVo
.
setPaymentAt
(
DateUtil
.
format
(
result
.
getPaymentAt
(),
DateUtil
.
Formatter
.
yyyyMMddHHmmss
));
orderVo
.
setState
(
AdamMemberOrderConst
.
STATUS_PAID
);
orderVo
.
setPayNo
(
result
.
getCode
());
orderVo
.
setMemberNo
(
cardNumber
);
// 回调中给会员卡号 or 下单时给
BasicDBObject
object
=
new
BasicDBObject
(
"$set"
,
JSON
.
parse
(
JsonUtils
.
toJson
(
orderVo
)));
mongoTemplate
.
getCollection
(
AdamMemberOrderVo
.
class
.
getSimpleName
())
.
updateOne
(
Query
.
query
(
Criteria
.
where
(
"orderNo"
).
is
(
orderVo
.
getOrderNo
())).
getQueryObject
(),
object
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
return
true
;
}
/**
*
购买会员码
*
组装会员码对象
*
* @param orderVo 会员订单
* @param orderCode 订单号
* @param type 会员码类型
* @param currentDateTime 创建时间
* @return
*/
private
Object
buyMemberCode
()
{
return
null
;
}
@Override
public
AdamMemberOrderVo
getMemberOrderInfo
(
String
orderNo
)
{
return
null
;
private
AdamMemberCodeVo
getAdamMemberCodeVo
(
AdamMemberOrderVo
orderVo
,
String
orderCode
,
int
type
,
String
currentDateTime
)
{
AdamMemberCodeVo
codeVo
=
new
AdamMemberCodeVo
();
codeVo
.
setMemberId
(
orderVo
.
getMemberId
());
codeVo
.
setMemberPriceId
(
orderVo
.
getMemberPriceId
());
codeVo
.
setBuyAt
(
currentDateTime
);
codeVo
.
setBuyOrderNo
(
orderCode
);
codeVo
.
setType
(
AdamMemberOrderConst
.
TYPE_BUY
);
codeVo
.
setMemberNo
(
orderVo
.
getMemberNo
());
codeVo
.
setCode
(
MemberUtil
.
getMemberCode
(
type
));
codeVo
.
setCreatedAt
(
currentDateTime
);
codeVo
.
setUpdatedAt
(
currentDateTime
);
return
codeVo
;
}
}
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/service/impl/AdamMemberServiceImpl.java
View file @
db014985
...
...
@@ -62,7 +62,7 @@ public class AdamMemberServiceImpl extends ServiceImpl<AdamMemberMapper, AdamMem
memberPrice
=
mongoTemplate
.
find
(
Query
.
query
(
Criteria
.
where
(
"memberId"
).
is
(
memberId
)),
AdamMemberPriceVo
.
class
,
AdamMemberPriceVo
.
class
.
getSimpleName
());
}
if
(
memberPrice
.
size
()
>
0
)
{
if
(
null
!=
info
&&
memberPrice
.
size
()
>
0
)
{
info
.
setAdamMemberPrice
(
memberPrice
);
}
return
info
;
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/service/impl/AdamUserMemberServiceImpl.java
View file @
db014985
...
...
@@ -3,6 +3,8 @@ package com.liquidnet.service.adam.service.impl;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.service.adam.constant.AdamRedisConst
;
import
com.liquidnet.service.adam.dto.vo.AdamMemberVo
;
import
com.liquidnet.service.adam.dto.vo.AdamUserMemberVo
;
import
com.liquidnet.service.adam.entity.AdamUserMember
;
import
com.liquidnet.service.adam.mapper.AdamMemberCodeMapper
;
import
com.liquidnet.service.adam.mapper.AdamUserMemberMapper
;
...
...
@@ -12,6 +14,8 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.convert.MongoConverter
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
java.util.regex.Pattern
;
...
...
@@ -47,7 +51,7 @@ public class AdamUserMemberServiceImpl extends ServiceImpl<AdamUserMemberMapper,
String
memberNoMaxKey
=
AdamRedisConst
.
MEMBER_MEMBER_NO_MAX_KEY
.
concat
(
memberId
);
Object
maxNumber
=
redisUtil
.
get
(
memberNoMaxKey
);
if
(
null
!=
maxNumber
)
{
if
(
null
!=
maxNumber
)
{
maxNumber
=
maxNumber
.
toString
();
String
newNumber
=
String
.
valueOf
(
redisUtil
.
incr
(
memberNoMaxKey
,
1
));
Integer
newNumberInt
=
newNumber
.
length
()
-
1
;
...
...
@@ -65,4 +69,47 @@ public class AdamUserMemberServiceImpl extends ServiceImpl<AdamUserMemberMapper,
return
redisUtil
.
get
(
memberNoMaxKey
).
toString
();
}
}
@Override
public
AdamUserMemberVo
getUserMemberInfo
(
String
uid
)
{
AdamUserMemberVo
adamUserMemberVo
=
(
AdamUserMemberVo
)
redisUtil
.
hget
(
AdamRedisConst
.
INFO_MEMBERS_USER_INFO
.
concat
(
uid
),
uid
);
if
(
null
==
adamUserMemberVo
)
{
adamUserMemberVo
=
mongoTemplate
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"uid"
).
is
(
uid
)),
AdamUserMemberVo
.
class
,
AdamUserMemberVo
.
class
.
getSimpleName
());
}
return
adamUserMemberVo
;
}
@Override
public
boolean
getOneFromRepertory
(
String
memberId
)
{
AdamMemberVo
adamMemberVo
=
(
AdamMemberVo
)
redisUtil
.
hget
(
AdamRedisConst
.
INFO_MEMBERS_INFO
.
concat
(
memberId
),
memberId
);
if
(
null
==
adamMemberVo
)
{
adamMemberVo
=
mongoTemplate
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"memberId"
).
is
(
memberId
)),
AdamMemberVo
.
class
,
AdamMemberVo
.
class
.
getSimpleName
());
}
if
(
0
==
adamMemberVo
.
getLimitation
())
{
return
true
;
}
String
repertoryKey
=
AdamRedisConst
.
INFO_MEMBERS_REPERTORY_INFO
.
concat
(
memberId
);
Object
repertory
=
redisUtil
.
get
(
repertoryKey
);
// 判断,如果没有从redis中拿到库存数量,则把MongoDB中查出的库存插入redis
if
(
null
==
repertory
)
{
redisUtil
.
set
(
repertoryKey
,
adamMemberVo
.
getLimitation
());
repertory
=
adamMemberVo
.
getLimitation
();
}
Long
limitation
=
Long
.
parseLong
(
repertory
.
toString
());
limitation
=
redisUtil
.
decr
(
repertoryKey
,
limitation
);
// 库存大于0 正常返回,否则回滚一位库存
if
(
limitation
>=
0
)
{
return
true
;
}
else
{
redisUtil
.
incr
(
repertoryKey
,
1
);
return
false
;
}
}
@Override
public
Integer
getRepertoryCount
(
String
memberId
)
{
return
0
;
}
}
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/service/impl/admin/AdamMemberPriceServiceImpl.java
View file @
db014985
...
...
@@ -68,9 +68,7 @@ public class AdamMemberPriceServiceImpl extends ServiceImpl<AdamMemberPriceMappe
mongoTemplate
.
insert
(
vo
,
AdamMemberPriceVo
.
class
.
getSimpleName
());
// redis
Map
<
String
,
Object
>
redisMap
=
new
HashMap
<>();
redisMap
.
put
(
AdamRedisConst
.
INFO_MEMBERS_PRICE_INFO
.
concat
(
info
.
getMemberPriceId
()),
vo
);
redisUtil
.
hmset
(
AdamRedisConst
.
INFO_MEMBERS_PRICE_INFO
.
concat
(
info
.
getMemberId
()),
redisMap
);
redisUtil
.
hset
(
AdamRedisConst
.
INFO_MEMBERS_PRICE_INFO
.
concat
(
info
.
getMemberId
()),
vo
.
getMemberPriceId
(),
vo
);
}
@Override
...
...
@@ -96,9 +94,7 @@ public class AdamMemberPriceServiceImpl extends ServiceImpl<AdamMemberPriceMappe
new
FindOneAndUpdateOptions
().
returnDocument
(
ReturnDocument
.
AFTER
)
);
// reids
Map
<
String
,
Object
>
redisMap
=
new
HashMap
<>();
redisMap
.
put
(
AdamRedisConst
.
INFO_MEMBERS_PRICE_INFO
.
concat
(
info
.
getMemberPriceId
()),
info
);
redisUtil
.
hmset
(
AdamRedisConst
.
INFO_MEMBERS_PRICE_INFO
.
concat
(
info
.
getMemberId
()),
redisMap
);
redisUtil
.
hset
(
AdamRedisConst
.
INFO_MEMBERS_PRICE_INFO
.
concat
(
info
.
getMemberId
()),
info
.
getMemberPriceId
(),
info
);
}
catch
(
Exception
e
){
return
false
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment