Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gogirl-miniapp-backend
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
huluobin
gogirl-miniapp-backend
Commits
16a28fa1
Commit
16a28fa1
authored
Jun 10, 2020
by
huluobin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
0d112cd3
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
518 additions
and
13 deletions
+518
-13
CouponService.java
...a/com/gogirl/application/market/coupon/CouponService.java
+22
-0
ICouponExcludeDetailedService.java
...lication/market/coupon/ICouponExcludeDetailedService.java
+16
-0
ICouponStoreService.java
...gogirl/application/market/coupon/ICouponStoreService.java
+16
-0
CouponCustomerRelevanceServiceImpl.java
...arket/coupon/impl/CouponCustomerRelevanceServiceImpl.java
+9
-9
CouponExcludeDetailedServiceImpl.java
.../market/coupon/impl/CouponExcludeDetailedServiceImpl.java
+20
-0
CouponServiceImpl.java
...irl/application/market/coupon/impl/CouponServiceImpl.java
+70
-3
CouponStoreServiceImpl.java
...pplication/market/coupon/impl/CouponStoreServiceImpl.java
+20
-0
MarketServiceImpl.java
...irl/application/market/coupon/impl/MarketServiceImpl.java
+21
-0
CouponExcludeDetailed.java
...om/gogirl/domain/market/coupon/CouponExcludeDetailed.java
+34
-0
CouponStore.java
...ain/java/com/gogirl/domain/market/coupon/CouponStore.java
+34
-0
RRException.java
...m/gogirl/infrastructure/common/exception/RRException.java
+5
-0
Combine.java
...n/java/com/gogirl/infrastructure/common/util/Combine.java
+62
-0
Arrange.java
...com/gogirl/infrastructure/common/util/thread/Arrange.java
+57
-0
CouponCustomerRelevanceMapper.java
...e/mapper/market/coupon/CouponCustomerRelevanceMapper.java
+9
-0
CouponExcludeDetailedMapper.java
...ure/mapper/market/coupon/CouponExcludeDetailedMapper.java
+25
-0
CouponMapper.java
...irl/infrastructure/mapper/market/coupon/CouponMapper.java
+3
-0
CouponStoreMapper.java
...nfrastructure/mapper/market/coupon/CouponStoreMapper.java
+16
-0
CouponExcludeDetailedController.java
...rfaces/market/coupon/CouponExcludeDetailedController.java
+19
-0
CouponStoreController.java
...ogirl/interfaces/market/coupon/CouponStoreController.java
+19
-0
CouponExcludeDetailedMapper.xml
src/main/resources/mapper/CouponExcludeDetailedMapper.xml
+13
-0
CouponStoreMapper.xml
src/main/resources/mapper/CouponStoreMapper.xml
+5
-0
CouponCustomerRelevanceMapper.xml
...resources/mapper/market/CouponCustomerRelevanceMapper.xml
+15
-1
CouponMapper.xml
src/main/resources/mapper/market/CouponMapper.xml
+8
-0
No files found.
src/main/java/com/gogirl/application/market/coupon/CouponService.java
View file @
16a28fa1
...
...
@@ -2,7 +2,9 @@ package com.gogirl.application.market.coupon;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.gogirl.domain.market.coupon.Coupon
;
import
com.gogirl.infrastructure.common.exception.RRException
;
import
java.util.Collection
;
import
java.util.List
;
...
...
@@ -49,4 +51,24 @@ public interface CouponService extends IService<Coupon> {
* @param couponIds 外部券配置id list
*/
void
techSubmitCoupons
(
Integer
orderId
,
List
<
Integer
>
couponIds
);
/**
* 卡券集合中是否存在冲突的卡券
*
* @param couponIdList 卡券配置id
* @return
*/
Boolean
existCouponConflict
(
Collection
<
Integer
>
couponIdList
);
/**
* 卡券集合中是否存在冲突的卡券 如果存在 抛出异常
*
* @param couponIdList 卡券配置id
* @return
*/
void
checkCouponConflict
(
Collection
<
Integer
>
couponIdList
)
throws
RRException
;
}
src/main/java/com/gogirl/application/market/coupon/ICouponExcludeDetailedService.java
0 → 100644
View file @
16a28fa1
package
com
.
gogirl
.
application
.
market
.
coupon
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.gogirl.domain.market.coupon.CouponExcludeDetailed
;
/**
* <p>
* 券 排斥明细 服务类
* </p>
*
* @author robbendev
* @since 2020-06-10
*/
public
interface
ICouponExcludeDetailedService
extends
IService
<
CouponExcludeDetailed
>
{
}
src/main/java/com/gogirl/application/market/coupon/ICouponStoreService.java
0 → 100644
View file @
16a28fa1
package
com
.
gogirl
.
application
.
market
.
coupon
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.gogirl.domain.market.coupon.CouponStore
;
/**
* <p>
* 优惠券限定使用店铺 服务类
* </p>
*
* @author robbendev
* @since 2020-06-10
*/
public
interface
ICouponStoreService
extends
IService
<
CouponStore
>
{
}
src/main/java/com/gogirl/application/market/coupon/impl/CouponCustomerRelevanceServiceImpl.java
View file @
16a28fa1
...
...
@@ -54,13 +54,13 @@ public class CouponCustomerRelevanceServiceImpl extends ServiceImpl<CouponCustom
/*1、查询订单服务和订单*/
List
<
OrderServe
>
orderServeList
=
orderServeMapper
.
selectList
(
new
LambdaQueryWrapper
<
OrderServe
>().
eq
(
OrderServe:
:
getOrderId
,
orderId
));
OrderManage
orderManage
=
orderManageMapper
.
selectById
(
orderId
);
return
couponCustomerRelevanceMapper
.
selectList
(
new
LambdaQueryWrapper
<
CouponCustomerRelevance
>()
.
eq
(
CouponCustomerRelevance:
:
getCustomerId
,
currentCustomerId
)
//只查询内部券
.
eq
(
CouponCustomerRelevance:
:
getSourceType
,
0
)
//只查询正常状态的卡券
.
eq
(
CouponCustomerRelevance:
:
getState
,
1
))
return
couponCustomerRelevanceMapper
.
getOrderCoupon
(
currentCustomerId
,
orderManage
.
getDepartmentId
())
//
.selectList(new LambdaQueryWrapper<CouponCustomerRelevance>()
//
.eq(CouponCustomerRelevance::getCustomerId, currentCustomerId)
//
//只查询内部券
//
.eq(CouponCustomerRelevance::getSourceType, 0)
//
//只查询正常状态的卡券
//
.eq(CouponCustomerRelevance::getState, 1))
//
.
stream
()
//只返回可以使用的优惠券
...
...
@@ -81,14 +81,14 @@ public class CouponCustomerRelevanceServiceImpl extends ServiceImpl<CouponCustom
canUserServeIds
.
retainAll
(
orderServeList
.
stream
()
.
filter
(
orderServe
->
orderServe
.
getBindOuterCoupon
()
==
2
)
.
filter
(
orderServe
->
orderServe
.
getBindTimesCard
()
==
2
)
.
filter
(
orderServe
->
orderServe
.
getPayPrice
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
.
filter
(
orderServe
->
orderServe
.
getPayPrice
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
.
map
(
OrderServe:
:
getServeId
)
.
collect
(
Collectors
.
toList
()));
}
else
{
canUserServeIds
.
retainAll
(
orderServeList
.
stream
()
.
filter
(
orderServe
->
orderServe
.
getBindOuterCoupon
()
==
2
)
.
filter
(
orderServe
->
orderServe
.
getBindTimesCard
()
==
2
)
.
filter
(
orderServe
->
orderServe
.
getPayPrice
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
.
filter
(
orderServe
->
orderServe
.
getPayPrice
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
//不是活动价格
.
filter
(
orderServe
->
!
orderServe
.
isActivity
())
.
map
(
OrderServe:
:
getServeId
)
...
...
src/main/java/com/gogirl/application/market/coupon/impl/CouponExcludeDetailedServiceImpl.java
0 → 100644
View file @
16a28fa1
package
com
.
gogirl
.
application
.
market
.
coupon
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.gogirl.application.market.coupon.ICouponExcludeDetailedService
;
import
com.gogirl.domain.market.coupon.CouponExcludeDetailed
;
import
com.gogirl.infrastructure.mapper.market.coupon.CouponExcludeDetailedMapper
;
import
org.springframework.stereotype.Service
;
/**
* <p>
* 券 排斥明细 服务实现类
* </p>
*
* @author robbendev
* @since 2020-06-10
*/
@Service
public
class
CouponExcludeDetailedServiceImpl
extends
ServiceImpl
<
CouponExcludeDetailedMapper
,
CouponExcludeDetailed
>
implements
ICouponExcludeDetailedService
{
}
src/main/java/com/gogirl/application/market/coupon/impl/CouponServiceImpl.java
View file @
16a28fa1
...
...
@@ -7,6 +7,7 @@ import com.gogirl.application.market.coupon.CouponService;
import
com.gogirl.application.market.coupon.MarketService
;
import
com.gogirl.domain.market.coupon.Coupon
;
import
com.gogirl.domain.market.coupon.CouponCustomerRelevance
;
import
com.gogirl.domain.market.coupon.CouponExcludeDetailed
;
import
com.gogirl.domain.order.serve.OrderManage
;
import
com.gogirl.domain.order.serve.OrderServe
;
import
com.gogirl.domain.xcx.GogirlConfig
;
...
...
@@ -14,6 +15,7 @@ import com.gogirl.infrastructure.common.exception.RRException;
import
com.gogirl.infrastructure.common.util.ListUtil
;
import
com.gogirl.infrastructure.common.util.StringUtils
;
import
com.gogirl.infrastructure.mapper.market.coupon.CouponCustomerRelevanceMapper
;
import
com.gogirl.infrastructure.mapper.market.coupon.CouponExcludeDetailedMapper
;
import
com.gogirl.infrastructure.mapper.market.coupon.CouponMapper
;
import
com.gogirl.infrastructure.mapper.order.serve.OrderManageMapper
;
import
com.gogirl.infrastructure.mapper.order.serve.OrderServeMapper
;
...
...
@@ -24,6 +26,8 @@ import org.springframework.context.annotation.Lazy;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.Collection
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
...
...
@@ -48,6 +52,8 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
@Lazy
@Resource
private
MarketService
marketService
;
@Resource
CouponExcludeDetailedMapper
couponExcludeDetailedMapper
;
@Override
public
Coupon
checkNewCustomer
(
Integer
customerId
)
{
...
...
@@ -124,9 +130,7 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
OrderManage
orderManage
=
orderManageMapper
.
selectById
(
orderId
);
List
<
OrderServe
>
orderServeList
=
orderServeMapper
.
selectList
(
new
LambdaQueryWrapper
<
OrderServe
>().
eq
(
OrderServe:
:
getOrderId
,
orderId
));
return
couponMapper
.
selectList
(
new
LambdaQueryWrapper
<
Coupon
>()
.
eq
(
Coupon:
:
getSourceType
,
1
)
.
eq
(
Coupon:
:
getState
,
1
))
.
getOrderExternalCoupon
(
orderManage
.
getDepartmentId
())
.
stream
()
//过滤所有可用在服务上的
.
filter
(
coupon
->
{
...
...
@@ -163,4 +167,67 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
marketService
.
calcOrderAmount
(
orderId
);
}
@Override
public
Boolean
existCouponConflict
(
Collection
<
Integer
>
couponIdList
)
{
LinkedList
<
Integer
>
linkList
=
new
LinkedList
<>(
couponIdList
);
if
(
linkList
.
size
()
<
2
)
{
return
false
;
}
//终止条件
else
if
(
linkList
.
size
()
==
2
)
{
CouponExcludeDetailed
couponExcludeDetailed
=
couponExcludeDetailedMapper
.
selectExcludeDetailed
(
linkList
.
get
(
0
),
linkList
.
get
(
1
));
return
couponExcludeDetailed
!=
null
;
}
//
else
{
boolean
existCouponConflict
=
false
;
Integer
first
=
linkList
.
pollFirst
();
for
(
Integer
couponId
:
linkList
)
{
CouponExcludeDetailed
couponExcludeDetailed
=
couponExcludeDetailedMapper
.
selectExcludeDetailed
(
couponId
,
first
);
if
(
couponExcludeDetailed
!=
null
)
{
existCouponConflict
=
true
;
break
;
}
}
if
(
existCouponConflict
)
{
return
true
;
}
return
this
.
existCouponConflict
(
linkList
);
}
}
@Override
public
void
checkCouponConflict
(
Collection
<
Integer
>
couponIdList
)
throws
RRException
{
LinkedList
<
Integer
>
linkList
=
new
LinkedList
<>(
couponIdList
);
//终止条件
if
(
linkList
.
size
()
==
2
)
{
Integer
couponId
=
linkList
.
get
(
0
);
Integer
excludeCouponId
=
linkList
.
get
(
1
);
CouponExcludeDetailed
couponExcludeDetailed
=
couponExcludeDetailedMapper
.
selectExcludeDetailed
(
couponId
,
excludeCouponId
);
if
(
couponExcludeDetailed
!=
null
)
{
Coupon
coupon
=
this
.
getById
(
couponId
);
Coupon
excludeCoupon
=
this
.
getById
(
excludeCouponId
);
throw
new
RRException
(
"卡券:{}和卡券{}不同同时使用"
,
coupon
.
getName
(),
excludeCoupon
.
getName
());
}
}
//
else
{
Integer
first
=
linkList
.
pollFirst
();
for
(
Integer
couponId
:
linkList
)
{
CouponExcludeDetailed
couponExcludeDetailed
=
couponExcludeDetailedMapper
.
selectExcludeDetailed
(
couponId
,
first
);
if
(
couponExcludeDetailed
!=
null
)
{
Coupon
coupon
=
this
.
getById
(
couponExcludeDetailed
.
getCouponId
());
Coupon
excludeCoupon
=
this
.
getById
(
couponExcludeDetailed
.
getExcludeCouponId
());
throw
new
RRException
(
"卡券:{}和卡券{}不同同时使用"
,
coupon
.
getName
(),
excludeCoupon
.
getName
());
}
}
this
.
checkCouponConflict
(
linkList
);
}
}
}
src/main/java/com/gogirl/application/market/coupon/impl/CouponStoreServiceImpl.java
0 → 100644
View file @
16a28fa1
package
com
.
gogirl
.
application
.
market
.
coupon
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.gogirl.application.market.coupon.ICouponStoreService
;
import
com.gogirl.domain.market.coupon.CouponStore
;
import
com.gogirl.infrastructure.mapper.market.coupon.CouponStoreMapper
;
import
org.springframework.stereotype.Service
;
/**
* <p>
* 优惠券限定使用店铺 服务实现类
* </p>
*
* @author robbendev
* @since 2020-06-10
*/
@Service
public
class
CouponStoreServiceImpl
extends
ServiceImpl
<
CouponStoreMapper
,
CouponStore
>
implements
ICouponStoreService
{
}
src/main/java/com/gogirl/application/market/coupon/impl/MarketServiceImpl.java
View file @
16a28fa1
...
...
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.gogirl.application.market.coupon.CouponCustomerRelevanceService
;
import
com.gogirl.application.market.coupon.CouponOrderRelevanceService
;
import
com.gogirl.application.market.coupon.CouponService
;
import
com.gogirl.application.market.coupon.MarketService
;
import
com.gogirl.application.market.timescard.TimesCardCustomerRelevanceService
;
import
com.gogirl.application.market.timescard.TimesCardUsedRecordService
;
...
...
@@ -101,6 +102,9 @@ public class MarketServiceImpl implements MarketService {
@Resource
ICouponOrderService
couponOrderService
;
@Resource
CouponService
couponService
;
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
void
setUpInnerCoupon
(
SetUpInnerCouponCommand
cmd
)
{
...
...
@@ -136,6 +140,7 @@ public class MarketServiceImpl implements MarketService {
List
<
CouponCustomerRelevance
>
couponCustomerRelevanceList
=
(
List
<
CouponCustomerRelevance
>)
couponCustomerRelevanceService
.
listByIds
(
cmd
.
getInnerCouponCustomerRelevanceIds
());
if
(
ListUtil
.
isNotEmpty
(
couponCustomerRelevanceList
))
{
couponCustomerRelevanceList
.
forEach
(
couponCustomerRelevance
->
{
Integer
usedOrderId
=
couponCustomerRelevance
.
getOrderId
();
...
...
@@ -158,6 +163,14 @@ public class MarketServiceImpl implements MarketService {
}
});
}
couponService
.
checkCouponConflict
(
couponCustomerRelevanceMapper
.
selectList
(
new
LambdaQueryWrapper
<
CouponCustomerRelevance
>()
.
eq
(
CouponCustomerRelevance:
:
getOrderId
,
cmd
.
getOrderId
())
.
eq
(
CouponCustomerRelevance:
:
getState
,
CouponCustomerRelevance
.
STATE_CHOSE
))
.
stream
()
.
map
(
CouponCustomerRelevance:
:
getCouponId
)
.
collect
(
Collectors
.
toList
()));
}
}
...
...
@@ -174,6 +187,7 @@ public class MarketServiceImpl implements MarketService {
.
eq
(
CouponCustomerRelevance:
:
getSourceType
,
CouponCustomerRelevance
.
SOURCE_TYPE_OUTER
)
);
cmd
.
getOuterCouponIds
().
forEach
(
outerCouponId
->
{
Coupon
coupon
=
couponMapper
.
selectById
(
outerCouponId
);
...
...
@@ -190,6 +204,13 @@ public class MarketServiceImpl implements MarketService {
couponCustomerRelevanceService
.
save
(
couponCustomerRelevance
);
});
couponService
.
checkCouponConflict
(
couponCustomerRelevanceMapper
.
selectList
(
new
LambdaQueryWrapper
<
CouponCustomerRelevance
>()
.
eq
(
CouponCustomerRelevance:
:
getOrderId
,
cmd
.
getOrderId
())
.
eq
(
CouponCustomerRelevance:
:
getState
,
CouponCustomerRelevance
.
STATE_CHOSE
))
.
stream
()
.
map
(
CouponCustomerRelevance:
:
getCouponId
)
.
collect
(
Collectors
.
toList
()));
}
@Override
...
...
src/main/java/com/gogirl/domain/market/coupon/CouponExcludeDetailed.java
0 → 100644
View file @
16a28fa1
package
com
.
gogirl
.
domain
.
market
.
coupon
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
/**
* <p>
* 券 排斥明细
* </p>
*
* @author robbendev
* @since 2020-06-10
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
@ApiModel
(
value
=
"CouponExcludeDetailed对象"
,
description
=
"券 排斥明细"
)
public
class
CouponExcludeDetailed
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"优惠券id"
)
private
Integer
couponId
;
@ApiModelProperty
(
value
=
"不能跟他一同使用的券的id"
)
private
Integer
excludeCouponId
;
}
src/main/java/com/gogirl/domain/market/coupon/CouponStore.java
0 → 100644
View file @
16a28fa1
package
com
.
gogirl
.
domain
.
market
.
coupon
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
/**
* <p>
* 优惠券限定使用店铺
* </p>
*
* @author robbendev
* @since 2020-06-10
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
@ApiModel
(
value
=
"CouponStore对象"
,
description
=
"优惠券限定使用店铺"
)
public
class
CouponStore
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"卡券配置id"
)
private
Integer
couponId
;
@ApiModelProperty
(
value
=
"卡券能够使用的店铺id"
)
private
Integer
storeId
;
}
src/main/java/com/gogirl/infrastructure/common/exception/RRException.java
View file @
16a28fa1
...
...
@@ -51,6 +51,11 @@ public class RRException extends RuntimeException implements Serializable {
this
.
message
=
message
;
}
public
RRException
(
String
format
,
Object
...
args
)
{
this
.
code
=
500
;
this
.
message
=
String
.
format
(
format
,
args
);
}
public
RRException
(
int
code
,
String
message
)
{
super
(
message
);
...
...
src/main/java/com/gogirl/infrastructure/common/util/Combine.java
0 → 100644
View file @
16a28fa1
package
com
.
gogirl
.
infrastructure
.
common
.
util
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/6/10 2:00 下午
*/
public
class
Combine
{
public
static
void
main
(
String
[]
args
)
{
List
<
Character
>
data
=
new
ArrayList
<
Character
>();
data
.
add
(
'a'
);
data
.
add
(
'b'
);
data
.
add
(
'c'
);
data
.
add
(
'd'
);
Combine
t
=
new
Combine
();
List
<
Character
>
result
=
new
ArrayList
<>();
t
.
combinerSelect
(
data
,
result
,
2
);
}
/**
* 步骤::每次递归时,把原始数据和满足条件的工作空间复制一份,所有的操作均在复制文件中进行,目的就是保证不破坏原始数据,
* 从而可以让一轮递归结束后可以正常进行下一轮。
* 其次,把数据的第一个元素添加到工作空间中,判断工作空间的大小,如果小于k,则需要继续递归,但此时,传入递归函数的
* 参数需要注意:假设当前插入的节点的下标是i,因为是顺序插入的,所以i之前的所有数据都应该舍去,只传入i之后的未使用过的数据。
* 因此在传参之前,应该对copydata作以处理;当大于k的时候,则表明已经找到满足条件的第一种情况,然后只需修改该情况的最后一个结果即可。
* 如:找到abc时,则只需替换c为d即可完成该轮递归。
*
* @param data 原始数据
* @param workSpace 自定义一个临时空间,用来存储每次符合条件的值
* @param k C(n,k)中的k
*/
public
<
E
>
void
combinerSelect
(
List
<
E
>
data
,
List
<
E
>
workSpace
,
int
k
)
{
List
<
E
>
copyData
;
List
<
E
>
copyWorkSpace
;
if
(
workSpace
.
size
()
==
k
)
{
for
(
Object
c
:
workSpace
)
System
.
out
.
print
(
c
);
System
.
out
.
println
();
}
for
(
int
i
=
0
;
i
<
data
.
size
();
i
++)
{
copyData
=
new
ArrayList
<>(
data
);
copyWorkSpace
=
new
ArrayList
<>(
workSpace
);
copyWorkSpace
.
add
(
copyData
.
get
(
i
));
copyData
.
subList
(
0
,
i
+
1
).
clear
();
combinerSelect
(
copyData
,
copyWorkSpace
,
k
);
}
}
}
src/main/java/com/gogirl/infrastructure/common/util/thread/Arrange.java
0 → 100644
View file @
16a28fa1
package
com
.
gogirl
.
infrastructure
.
common
.
util
.
thread
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/6/10 2:03 下午
*/
public
class
Arrange
{
public
static
void
main
(
String
[]
args
)
{
Arrange
arrange
=
new
Arrange
();
List
<
Character
>
data
=
new
ArrayList
<
Character
>();
data
.
add
(
'a'
);
data
.
add
(
'b'
);
data
.
add
(
'c'
);
data
.
add
(
'd'
);
//输出A(n,n)的全排列
for
(
int
i
=
1
;
i
<=
data
.
size
();
i
++)
arrange
.
arrangeSelect
(
data
,
new
ArrayList
<
Character
>(),
i
);
}
/**
* 计算A(n,k)
*
* @param data
* @param target
* @param k
*/
public
<
E
>
void
arrangeSelect
(
List
<
E
>
data
,
List
<
E
>
target
,
int
k
)
{
List
<
E
>
copyData
;
List
<
E
>
copyTarget
;
if
(
target
.
size
()
==
k
)
{
for
(
E
i
:
target
)
System
.
out
.
print
(
i
);
System
.
out
.
println
();
}
for
(
int
i
=
0
;
i
<
data
.
size
();
i
++)
{
copyData
=
new
ArrayList
<
E
>(
data
);
copyTarget
=
new
ArrayList
<
E
>(
target
);
copyTarget
.
add
(
copyData
.
get
(
i
));
copyData
.
remove
(
i
);
arrangeSelect
(
copyData
,
copyTarget
,
k
);
}
}
}
\ No newline at end of file
src/main/java/com/gogirl/infrastructure/mapper/market/coupon/CouponCustomerRelevanceMapper.java
View file @
16a28fa1
...
...
@@ -41,4 +41,13 @@ public interface CouponCustomerRelevanceMapper extends BaseMapper<CouponCustomer
List
<
CouponCustomerRelevance
>
couponCustomerRelevanceError
();
/**
* 获取订单可用的卡券
*
* @param currentCustomerId
* @param departmentId
* @return
*/
List
<
CouponCustomerRelevance
>
getOrderCoupon
(
@Param
(
"currentCustomerId"
)
Integer
currentCustomerId
,
@Param
(
"departmentId"
)
Integer
departmentId
);
}
src/main/java/com/gogirl/infrastructure/mapper/market/coupon/CouponExcludeDetailedMapper.java
0 → 100644
View file @
16a28fa1
package
com
.
gogirl
.
infrastructure
.
mapper
.
market
.
coupon
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.gogirl.domain.market.coupon.CouponExcludeDetailed
;
import
org.apache.ibatis.annotations.Param
;
/**
* <p>
* 券 排斥明细 Mapper 接口
* </p>
*
* @author robbendev
* @since 2020-06-10
*/
public
interface
CouponExcludeDetailedMapper
extends
BaseMapper
<
CouponExcludeDetailed
>
{
/**
* 查询两个卡券是否存在排斥
*
* @param couponId
* @param excludeCouponId
* @return
*/
CouponExcludeDetailed
selectExcludeDetailed
(
@Param
(
"couponId"
)
Integer
couponId
,
@Param
(
"excludeCouponId"
)
Integer
excludeCouponId
);
}
src/main/java/com/gogirl/infrastructure/mapper/market/coupon/CouponMapper.java
View file @
16a28fa1
...
...
@@ -3,8 +3,11 @@ package com.gogirl.infrastructure.mapper.market.coupon;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.gogirl.domain.market.coupon.Coupon
;
import
java.util.List
;
public
interface
CouponMapper
extends
BaseMapper
<
Coupon
>
{
List
<
Coupon
>
getOrderExternalCoupon
(
Integer
departmentId
);
}
src/main/java/com/gogirl/infrastructure/mapper/market/coupon/CouponStoreMapper.java
0 → 100644
View file @
16a28fa1
package
com
.
gogirl
.
infrastructure
.
mapper
.
market
.
coupon
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.gogirl.domain.market.coupon.CouponStore
;
/**
* <p>
* 优惠券限定使用店铺 Mapper 接口
* </p>
*
* @author robbendev
* @since 2020-06-10
*/
public
interface
CouponStoreMapper
extends
BaseMapper
<
CouponStore
>
{
}
src/main/java/com/gogirl/interfaces/market/coupon/CouponExcludeDetailedController.java
0 → 100644
View file @
16a28fa1
package
com
.
gogirl
.
interfaces
.
market
.
coupon
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* <p>
* 券 排斥明细 前端控制器
* </p>
*
* @author robbendev
* @since 2020-06-10
*/
@RestController
@RequestMapping
(
"/coupon-exclude-detailed"
)
public
class
CouponExcludeDetailedController
{
}
src/main/java/com/gogirl/interfaces/market/coupon/CouponStoreController.java
0 → 100644
View file @
16a28fa1
package
com
.
gogirl
.
interfaces
.
market
.
coupon
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* <p>
* 优惠券限定使用店铺 前端控制器
* </p>
*
* @author robbendev
* @since 2020-06-10
*/
@RestController
@RequestMapping
(
"/coupon-store"
)
public
class
CouponStoreController
{
}
src/main/resources/mapper/CouponExcludeDetailedMapper.xml
0 → 100644
View file @
16a28fa1
<?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.gogirl.infrastructure.mapper.market.coupon.CouponExcludeDetailedMapper"
>
<select
id=
"selectExcludeDetailed"
resultType=
"com.gogirl.domain.market.coupon.CouponExcludeDetailed"
>
SELECT *
from coupon_exclude_detailed
where (coupon_id = #{couponId}
and exclude_coupon_id = #{excludeCouponId})
or (coupon_id = #{excludeCouponId}
and exclude_coupon_id = #{couponId})
</select>
</mapper>
src/main/resources/mapper/CouponStoreMapper.xml
0 → 100644
View file @
16a28fa1
<?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.gogirl.infrastructure.mapper.market.coupon.CouponStoreMapper"
>
</mapper>
src/main/resources/mapper/market/CouponCustomerRelevanceMapper.xml
View file @
16a28fa1
...
...
@@ -31,8 +31,22 @@
where t2.finish_time > '2020-01-01'
and t1.state = 2
</select>
<select
id=
"couponCustomerRelevanceError"
resultType=
"com.gogirl.domain.market.coupon.CouponCustomerRelevance"
>
select * from coupon_customer_relevance where valid_end_time
<
valid_start_time and state =3
select *
from coupon_customer_relevance
where valid_end_time
<
valid_start_time
and state = 3
</select>
<select
id=
"getOrderCoupon"
resultType=
"com.gogirl.domain.market.coupon.CouponCustomerRelevance"
>
SELECT *
from coupon_customer_relevance t1
LEFT JOIN coupon_store t2 on t1.coupon_id = t2.coupon_id
where t1.source_type = 0
and t1.state = 1
and (t2.store_id = #{departmentId} or t2.store_id = -1 or t2.store_id is null)
and t1.customer_id = #{currentCustomerId}
</select>
<update
id=
"setCouponExpire"
parameterType=
"java.util.Date"
>
...
...
src/main/resources/mapper/market/CouponMapper.xml
View file @
16a28fa1
...
...
@@ -3,4 +3,12 @@
<mapper
namespace=
"com.gogirl.infrastructure.mapper.market.coupon.CouponMapper"
>
<select
id=
"getOrderExternalCoupon"
resultType=
"com.gogirl.domain.market.coupon.Coupon"
>
SELECT *
from coupon t1
LEFT JOIN coupon_store t2 on t1.id = t2.coupon_id
where t1.source_type = 1
and t1.state = 1
and (t2.store_id = #{departmentId} or t2.store_id = -1 or t2.store_id is null)
</select>
</mapper>
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