Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gxpt_ht
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
pseer
gxpt_ht
Commits
82361745
Commit
82361745
authored
Jan 06, 2024
by
吕明尚
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加优惠卷日志
parent
561dfd83
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
760 additions
and
14 deletions
+760
-14
ConsumerCouponStatusEnum.java
...ain/java/share/common/enums/ConsumerCouponStatusEnum.java
+36
-0
YesNoEnum.java
share-common/src/main/java/share/common/enums/YesNoEnum.java
+2
-2
QPServiceImplAspect.java
...ain/java/share/framework/aspectj/QPServiceImplAspect.java
+209
-0
QPController.java
...c/main/java/share/web/controller/system/QPController.java
+4
-3
CouponLog.java
...e-system/src/main/java/share/system/domain/CouponLog.java
+105
-0
CouponLogMapper.java
...em/src/main/java/share/system/mapper/CouponLogMapper.java
+62
-0
CouponLogService.java
.../src/main/java/share/system/service/CouponLogService.java
+62
-0
QPService.java
...-system/src/main/java/share/system/service/QPService.java
+3
-3
CouponLogServiceImpl.java
.../java/share/system/service/impl/CouponLogServiceImpl.java
+91
-0
QPServiceImpl.java
...rc/main/java/share/system/service/impl/QPServiceImpl.java
+4
-4
SOrderServiceImpl.java
...ain/java/share/system/service/impl/SOrderServiceImpl.java
+2
-2
CouponValidator.java
...stem/src/main/java/share/system/util/CouponValidator.java
+45
-0
CouponLogMapper.xml
...stem/src/main/resources/mapper/system/CouponLogMapper.xml
+135
-0
No files found.
share-common/src/main/java/share/common/enums/ConsumerCouponStatusEnum.java
0 → 100644
View file @
82361745
package
share
.
common
.
enums
;
public
enum
ConsumerCouponStatusEnum
{
CONTROLLER
(
"1"
,
"控制层"
),
WECHAT
(
"2"
,
"微信回调"
),
SERVICE
(
"3"
,
"SERVICE回调"
),
ORDER
(
"4"
,
"订单下单"
),
;
ConsumerCouponStatusEnum
()
{
}
ConsumerCouponStatusEnum
(
String
code
,
String
name
)
{
this
.
code
=
code
;
this
.
name
=
name
;
}
private
String
code
;
private
String
name
;
public
String
getCode
()
{
return
code
;
}
public
void
setCode
(
String
code
)
{
this
.
code
=
code
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
}
share-common/src/main/java/share/common/enums/YesNoEnum.java
View file @
82361745
...
...
@@ -8,8 +8,8 @@ import com.alibaba.fastjson.JSONArray;
import
com.alibaba.fastjson.JSONObject
;
public
enum
YesNoEnum
{
yes
(
1
,
true
,
"是"
,
"激活"
,
""
,
""
,
""
,
""
,
""
,
""
,
""
),
no
(
0
,
false
,
"否"
,
"冻结"
,
""
,
""
,
""
,
""
,
""
,
""
,
""
);
yes
(
1
,
true
,
"是"
,
"激活"
,
"正常"
,
""
,
""
,
""
,
""
,
""
,
""
),
no
(
0
,
false
,
"否"
,
"冻结"
,
"异常"
,
""
,
""
,
""
,
""
,
""
,
""
);
private
Integer
index
;
...
...
share-framework/src/main/java/share/framework/aspectj/QPServiceImplAspect.java
0 → 100644
View file @
82361745
package
share
.
framework
.
aspectj
;
import
cn.hutool.json.JSONUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
org.aspectj.lang.JoinPoint
;
import
org.aspectj.lang.annotation.*
;
import
org.aspectj.lang.reflect.MethodSignature
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.context.request.RequestAttributes
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
share.common.enums.YesNoEnum
;
import
share.system.domain.CouponLog
;
import
share.system.domain.SConsumerCoupon
;
import
share.system.domain.SStore
;
import
share.system.service.CouponLogService
;
import
share.system.service.ISConsumerCouponService
;
import
share.system.service.ISStoreService
;
import
javax.servlet.http.HttpServletRequest
;
import
java.lang.reflect.Method
;
import
java.util.*
;
@Aspect
@Component
public
class
QPServiceImplAspect
{
@Autowired
private
CouponLogService
couponLogService
;
@Autowired
private
ISConsumerCouponService
sConsumerCouponService
;
@Autowired
private
ISStoreService
sStoreService
;
/**
* 切点函数,用于标识需要记录操作日志的方法。
* 切点表达式为:execution(* share.system.service.impl.QPServiceImpl.*(..)),表示匹配所有在share.system.service.impl.QPServiceImpl类中定义的方法。
*/
@Pointcut
(
"execution(* share.system.service.impl.QPServiceImpl.*(..))"
)
public
void
operLogPoinCut
()
{
}
@Before
(
"operLogPoinCut()"
)
public
void
beforMethod
(
JoinPoint
point
)
{
}
@Pointcut
(
"execution(* share.system.service.impl.QPServiceImpl.*(..))"
)
public
void
operExceptionLogPoinCut
()
{
}
/**
* 正常返回通知,拦截用户操作日志,连接点正常执行完成后执行, 如果连接点抛出异常,则不会执行
*
* @param joinPoint 切入点
* @param result 返回结果
*/
@AfterReturning
(
value
=
"operLogPoinCut()"
,
returning
=
"result"
)
public
void
saveOperLog
(
JoinPoint
joinPoint
,
Object
result
)
{
// 获取RequestAttributes
RequestAttributes
requestAttributes
=
RequestContextHolder
.
getRequestAttributes
();
// 从获取RequestAttributes中获取HttpServletRequest的信息
HttpServletRequest
request
=
(
HttpServletRequest
)
requestAttributes
.
resolveReference
(
RequestAttributes
.
REFERENCE_REQUEST
);
try
{
// 从切面织入点处通过反射机制获取织入点处的方法
MethodSignature
signature
=
(
MethodSignature
)
joinPoint
.
getSignature
();
// 获取切入点所在的方法
Method
method
=
signature
.
getMethod
();
//获得方法名
String
methodName
=
method
.
getName
();
// 获取操作
CouponLog
couponLog
=
new
CouponLog
();
// 将入参转换成json // 请求参数
//获得请求参数名称
String
[]
paramNames
=
((
MethodSignature
)
joinPoint
.
getSignature
()).
getParameterNames
();
String
params
=
argsArrayToString
(
paramNames
,
joinPoint
.
getArgs
());
//转JSON
JSONObject
jsonObject
=
JSON
.
parseObject
(
params
);
//获得出参
String
outParams
=
JSON
.
toJSONString
(
result
);
// if(methodName.equals("consume")){
saveLog
(
couponLog
,
jsonObject
);
couponLog
.
setStatus
(
YesNoEnum
.
yes
.
getDisplay_3
());
couponLog
.
setMessage
(
outParams
);
couponLog
.
setCreateTime
(
new
Date
());
couponLogService
.
insertCouponLog
(
couponLog
);
// }
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
/**
* 异常返回通知,用于拦截异常日志信息 连接点抛出异常后执行
*/
@AfterThrowing
(
pointcut
=
"operExceptionLogPoinCut()"
,
throwing
=
"e"
)
public
void
saveExceptionLog
(
JoinPoint
joinPoint
,
Throwable
e
)
{
try
{
// 从切面织入点处通过反射机制获取织入点处的方法
MethodSignature
signature
=
(
MethodSignature
)
joinPoint
.
getSignature
();
// 获取切入点所在的方法
Method
method
=
signature
.
getMethod
();
//获得方法名
String
methodName
=
method
.
getName
();
CouponLog
couponLog
=
new
CouponLog
();
// 将入参转换成json // 请求参数
String
[]
paramNames
=
((
MethodSignature
)
joinPoint
.
getSignature
()).
getParameterNames
();
String
params
=
argsArrayToString
(
paramNames
,
joinPoint
.
getArgs
());
//转JSON
JSONObject
jsonObject
=
JSON
.
parseObject
(
params
);
// if(methodName.equals("consume")) {
saveLog
(
couponLog
,
jsonObject
);
couponLog
.
setStatus
(
YesNoEnum
.
no
.
getDisplay_3
());
couponLog
.
setMessage
(
stackTraceToString
(
e
.
getClass
().
getName
(),
e
.
getMessage
(),
e
.
getStackTrace
()));
couponLog
.
setCreateTime
(
new
Date
());
couponLogService
.
insertCouponLog
(
couponLog
);
// }
}
catch
(
Exception
e2
)
{
e2
.
printStackTrace
();
}
}
private
void
saveLog
(
CouponLog
couponLog
,
JSONObject
jsonObject
)
{
couponLog
.
setCode
(
jsonObject
.
getString
(
"code"
));
LambdaQueryWrapper
<
SConsumerCoupon
>
lambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
lambdaQueryWrapper
.
eq
(
SConsumerCoupon:
:
getCouponCode
,
couponLog
.
getCode
());
SConsumerCoupon
one
=
sConsumerCouponService
.
getOne
(
lambdaQueryWrapper
);
couponLog
.
setConsumerId
(
one
.
getConsumerId
());
couponLog
.
setCouponId
(
one
.
getId
());
LambdaQueryWrapper
<
SStore
>
sStoreLambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
sStoreLambdaQueryWrapper
.
eq
(
SStore:
:
getOpenShopUuid
,
jsonObject
.
getString
(
"openShopUuid"
));
SStore
sStore
=
sStoreService
.
getOne
(
sStoreLambdaQueryWrapper
);
couponLog
.
setStoreId
(
sStore
.
getId
());
couponLog
.
setCouponName
(
one
.
getName
());
couponLog
.
setCouponValue
(
one
.
getSubPrice
());
couponLog
.
setCouponType
(
jsonObject
.
getString
(
"status"
));
}
/**
* 参数拼装
*/
private
String
argsArrayToString
(
String
[]
paramNames
,
Object
[]
paramsArray
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
if
(
paramsArray
!=
null
&&
paramsArray
.
length
>
0
)
{
for
(
int
i
=
0
;
i
<
paramsArray
.
length
;
i
++)
{
if
(
paramsArray
[
i
]
!=
null
)
{
try
{
map
.
put
(
paramNames
[
i
],
paramsArray
[
i
]);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
}
return
JSONUtil
.
toJsonStr
(
map
);
}
/**
* 转换异常信息为字符串
*/
public
String
stackTraceToString
(
String
exceptionName
,
String
exceptionMessage
,
StackTraceElement
[]
elements
)
{
StringBuffer
strbuff
=
new
StringBuffer
();
for
(
StackTraceElement
stet
:
elements
)
{
strbuff
.
append
(
stet
+
"\n"
);
}
String
message
=
exceptionName
+
":"
+
exceptionMessage
+
"\n\t"
+
strbuff
.
toString
();
message
=
substring
(
message
,
0
,
2000
);
return
message
;
}
//字符串截取
public
static
String
substring
(
String
str
,
int
start
,
int
end
)
{
if
(
str
==
null
)
{
return
null
;
}
else
{
if
(
end
<
0
)
{
end
+=
str
.
length
();
}
if
(
start
<
0
)
{
start
+=
str
.
length
();
}
if
(
end
>
str
.
length
())
{
end
=
str
.
length
();
}
if
(
start
>
end
)
{
return
""
;
}
else
{
if
(
start
<
0
)
{
start
=
0
;
}
if
(
end
<
0
)
{
end
=
0
;
}
return
str
.
substring
(
start
,
end
);
}
}
}
}
share-front/src/main/java/share/web/controller/system/QPController.java
View file @
82361745
...
...
@@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.GetMapping;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
share.common.core.domain.R
;
import
share.common.enums.ConsumerCouponStatusEnum
;
import
share.system.domain.vo.TuangouReceiptPrepareResponseEntityVo
;
import
share.system.service.QPService
;
...
...
@@ -24,13 +25,13 @@ public class QPController {
//输码验券校验接口
@GetMapping
(
"/prepare"
)
public
R
<
TuangouReceiptPrepareResponseEntity
>
prepare
(
String
code
,
String
openShopUuid
)
{
return
R
.
ok
(
qpService
.
prepare
(
code
,
openShopUuid
));
return
R
.
ok
(
qpService
.
prepare
(
code
,
openShopUuid
,
ConsumerCouponStatusEnum
.
CONTROLLER
.
getCode
()
));
}
//验券接口
@GetMapping
(
"/consume"
)
public
R
<
List
<
TuangouReceiptConsumeResponseEntity
>>
consume
(
String
code
,
int
count
,
String
openShopUuid
)
{
return
R
.
ok
(
qpService
.
consume
(
code
,
count
,
openShopUuid
));
return
R
.
ok
(
qpService
.
consume
(
code
,
count
,
openShopUuid
,
ConsumerCouponStatusEnum
.
CONTROLLER
.
getCode
()
));
}
//撤销验券接口
...
...
@@ -48,7 +49,7 @@ public class QPController {
//用户验券接口
@GetMapping
(
"/consumeByUser"
)
public
R
<
TuangouReceiptPrepareResponseEntityVo
>
consumeByUser
(
String
code
,
String
openShopUuid
)
{
TuangouReceiptPrepareResponseEntityVo
tuangouReceiptPrepareResponseEntityVo
=
qpService
.
consumeByUser
(
code
,
openShopUuid
);
TuangouReceiptPrepareResponseEntityVo
tuangouReceiptPrepareResponseEntityVo
=
qpService
.
consumeByUser
(
code
,
openShopUuid
,
ConsumerCouponStatusEnum
.
CONTROLLER
.
getCode
()
);
if
(
ObjectUtils
.
isEmpty
(
tuangouReceiptPrepareResponseEntityVo
))
{
return
R
.
fail
(
tuangouReceiptPrepareResponseEntityVo
,
"该券码已被使用"
);
}
else
{
...
...
share-system/src/main/java/share/system/domain/CouponLog.java
0 → 100644
View file @
82361745
package
share
.
system
.
domain
;
import
java.math.BigDecimal
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
share.common.annotation.Excel
;
import
share.common.core.domain.BaseEntity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableLogic
;
import
lombok.Data
;
/**
* 优惠卷操作日志对象 s_coupon_log
*
* @author wuwenlong
* @date 2024-01-06
*/
@Data
@TableName
(
value
=
"s_coupon_log"
)
public
class
CouponLog
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键
*/
private
Long
id
;
/**
* 优惠券码
*/
@Excel
(
name
=
"优惠券码"
)
private
String
code
;
/**
* 用户ID
*/
@Excel
(
name
=
"用户ID"
)
private
Long
consumerId
;
/**
* 门店ID
*/
@Excel
(
name
=
"门店ID"
)
private
Long
storeId
;
/**
* 优惠券ID
*/
@Excel
(
name
=
"优惠券ID"
)
private
Long
couponId
;
/**
* 优惠券名称
*/
@Excel
(
name
=
"优惠券名称"
)
private
String
couponName
;
/**
* 优惠券类型
*/
@Excel
(
name
=
"优惠券类型"
)
private
String
couponType
;
/**
* 优惠券面值
*/
@Excel
(
name
=
"优惠券面值"
)
private
BigDecimal
couponValue
;
/**
* 状态
*/
@Excel
(
name
=
"状态"
)
private
String
status
;
/**
* 消息
*/
@Excel
(
name
=
"消息"
)
private
String
message
;
@Override
public
String
toString
()
{
return
new
ToStringBuilder
(
this
,
ToStringStyle
.
MULTI_LINE_STYLE
)
.
append
(
"id"
,
getId
())
.
append
(
"code"
,
getCode
())
.
append
(
"consumerId"
,
getConsumerId
())
.
append
(
"storeId"
,
getStoreId
())
.
append
(
"couponId"
,
getCouponId
())
.
append
(
"couponName"
,
getCouponName
())
.
append
(
"couponType"
,
getCouponType
())
.
append
(
"couponValue"
,
getCouponValue
())
.
append
(
"status"
,
getStatus
())
.
append
(
"message"
,
getMessage
())
.
append
(
"createBy"
,
getCreateBy
())
.
append
(
"createTime"
,
getCreateTime
())
.
append
(
"updateBy"
,
getUpdateBy
())
.
append
(
"updateTime"
,
getUpdateTime
())
.
append
(
"remark"
,
getRemark
())
.
toString
();
}
}
share-system/src/main/java/share/system/mapper/CouponLogMapper.java
0 → 100644
View file @
82361745
package
share
.
system
.
mapper
;
import
java.util.List
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
share.system.domain.CouponLog
;
/**
* 优惠卷操作日志Mapper接口
*
* @author wuwenlong
* @date 2024-01-06
*/
public
interface
CouponLogMapper
extends
BaseMapper
<
CouponLog
>
{
/**
* 查询优惠卷操作日志
*
* @param id 优惠卷操作日志主键
* @return 优惠卷操作日志
*/
public
CouponLog
selectCouponLogById
(
Long
id
);
/**
* 查询优惠卷操作日志列表
*
* @param couponLog 优惠卷操作日志
* @return 优惠卷操作日志集合
*/
public
List
<
CouponLog
>
selectCouponLogList
(
CouponLog
couponLog
);
/**
* 新增优惠卷操作日志
*
* @param couponLog 优惠卷操作日志
* @return 结果
*/
public
int
insertCouponLog
(
CouponLog
couponLog
);
/**
* 修改优惠卷操作日志
*
* @param couponLog 优惠卷操作日志
* @return 结果
*/
public
int
updateCouponLog
(
CouponLog
couponLog
);
/**
* 删除优惠卷操作日志
*
* @param id 优惠卷操作日志主键
* @return 结果
*/
public
int
deleteCouponLogById
(
Long
id
);
/**
* 批量删除优惠卷操作日志
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public
int
deleteCouponLogByIds
(
Long
[]
ids
);
}
share-system/src/main/java/share/system/service/CouponLogService.java
0 → 100644
View file @
82361745
package
share
.
system
.
service
;
import
java.util.List
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
share.system.domain.CouponLog
;
/**
* 优惠卷操作日志Service接口
*
* @author wuwenlong
* @date 2024-01-06
*/
public
interface
CouponLogService
extends
IService
<
CouponLog
>
{
/**
* 查询优惠卷操作日志
*
* @param id 优惠卷操作日志主键
* @return 优惠卷操作日志
*/
public
CouponLog
selectCouponLogById
(
Long
id
);
/**
* 查询优惠卷操作日志列表
*
* @param couponLog 优惠卷操作日志
* @return 优惠卷操作日志集合
*/
public
List
<
CouponLog
>
selectCouponLogList
(
CouponLog
couponLog
);
/**
* 新增优惠卷操作日志
*
* @param couponLog 优惠卷操作日志
* @return 结果
*/
public
int
insertCouponLog
(
CouponLog
couponLog
);
/**
* 修改优惠卷操作日志
*
* @param couponLog 优惠卷操作日志
* @return 结果
*/
public
int
updateCouponLog
(
CouponLog
couponLog
);
/**
* 批量删除优惠卷操作日志
*
* @param ids 需要删除的优惠卷操作日志主键集合
* @return 结果
*/
public
int
deleteCouponLogByIds
(
Long
[]
ids
);
/**
* 删除优惠卷操作日志信息
*
* @param id 优惠卷操作日志主键
* @return 结果
*/
public
int
deleteCouponLogById
(
Long
id
);
}
share-system/src/main/java/share/system/service/QPService.java
View file @
82361745
...
...
@@ -9,15 +9,15 @@ import share.system.domain.vo.TuangouReceiptPrepareResponseEntityVo;
import
java.util.List
;
public
interface
QPService
{
TuangouReceiptPrepareResponseEntity
prepare
(
String
code
,
String
openShopUuid
);
TuangouReceiptPrepareResponseEntity
prepare
(
String
code
,
String
openShopUuid
,
String
status
);
List
<
TuangouReceiptConsumeResponseEntity
>
consume
(
String
code
,
int
count
,
String
openShopUuid
);
List
<
TuangouReceiptConsumeResponseEntity
>
consume
(
String
code
,
int
count
,
String
openShopUuid
,
String
status
);
List
<
TuangouReceiptReverseConsumeResponseEntity
>
reverseconsume
(
String
code
,
Long
appDealId
,
String
openShopUuid
);
TuangouReceiptGetConsumedReponseEntity
getconsumed
(
String
code
,
String
openShopUuid
);
TuangouReceiptPrepareResponseEntityVo
consumeByUser
(
String
code
,
String
openShopUuid
);
TuangouReceiptPrepareResponseEntityVo
consumeByUser
(
String
code
,
String
openShopUuid
,
String
status
);
List
<
TuangouReceiptReverseConsumeResponseEntity
>
reverseconsumeByUser
(
Long
id
);
...
...
share-system/src/main/java/share/system/service/impl/CouponLogServiceImpl.java
0 → 100644
View file @
82361745
package
share
.
system
.
service
.
impl
;
import
java.util.List
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
share.common.utils.DateUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
share.system.mapper.CouponLogMapper
;
import
share.system.domain.CouponLog
;
import
share.system.service.CouponLogService
;
/**
* 优惠卷操作日志Service业务层处理
*
* @author wuwenlong
* @date 2024-01-06
*/
@Service
public
class
CouponLogServiceImpl
extends
ServiceImpl
<
CouponLogMapper
,
CouponLog
>
implements
CouponLogService
{
@Autowired
private
CouponLogMapper
couponLogMapper
;
/**
* 查询优惠卷操作日志
*
* @param id 优惠卷操作日志主键
* @return 优惠卷操作日志
*/
@Override
public
CouponLog
selectCouponLogById
(
Long
id
)
{
return
couponLogMapper
.
selectCouponLogById
(
id
);
}
/**
* 查询优惠卷操作日志列表
*
* @param couponLog 优惠卷操作日志
* @return 优惠卷操作日志
*/
@Override
public
List
<
CouponLog
>
selectCouponLogList
(
CouponLog
couponLog
)
{
return
couponLogMapper
.
selectCouponLogList
(
couponLog
);
}
/**
* 新增优惠卷操作日志
*
* @param couponLog 优惠卷操作日志
* @return 结果
*/
@Override
public
int
insertCouponLog
(
CouponLog
couponLog
)
{
couponLog
.
setCreateTime
(
DateUtils
.
getNowDate
());
return
couponLogMapper
.
insertCouponLog
(
couponLog
);
}
/**
* 修改优惠卷操作日志
*
* @param couponLog 优惠卷操作日志
* @return 结果
*/
@Override
public
int
updateCouponLog
(
CouponLog
couponLog
)
{
couponLog
.
setUpdateTime
(
DateUtils
.
getNowDate
());
return
couponLogMapper
.
updateCouponLog
(
couponLog
);
}
/**
* 批量删除优惠卷操作日志
*
* @param ids 需要删除的优惠卷操作日志主键
* @return 结果
*/
@Override
public
int
deleteCouponLogByIds
(
Long
[]
ids
)
{
return
couponLogMapper
.
deleteCouponLogByIds
(
ids
);
}
/**
* 删除优惠卷操作日志信息
*
* @param id 优惠卷操作日志主键
* @return 结果
*/
@Override
public
int
deleteCouponLogById
(
Long
id
)
{
return
couponLogMapper
.
deleteCouponLogById
(
id
);
}
}
share-system/src/main/java/share/system/service/impl/QPServiceImpl.java
View file @
82361745
...
...
@@ -79,9 +79,9 @@ public class QPServiceImpl implements QPService {
* 用户验卷接口
*/
@Override
public
TuangouReceiptPrepareResponseEntityVo
consumeByUser
(
String
code
,
String
openShopUuid
)
{
public
TuangouReceiptPrepareResponseEntityVo
consumeByUser
(
String
code
,
String
openShopUuid
,
String
status
)
{
//验券准备
TuangouReceiptPrepareResponseEntity
prepare
=
prepare
(
code
,
openShopUuid
);
TuangouReceiptPrepareResponseEntity
prepare
=
prepare
(
code
,
openShopUuid
,
status
);
//获取用户信息
SConsumer
user
=
FrontTokenComponent
.
getWxSConsumerEntry
();
//查询领取记录表
...
...
@@ -205,7 +205,7 @@ public class QPServiceImpl implements QPService {
* 根据团购券码,查询券码对应的dealid下,该用户可使用的券数据量
*/
@Override
public
TuangouReceiptPrepareResponseEntity
prepare
(
String
code
,
String
openShopUuid
)
{
public
TuangouReceiptPrepareResponseEntity
prepare
(
String
code
,
String
openShopUuid
,
String
status
)
{
Boolean
b
=
redisUtil
.
exists
(
ReceiptRdeisEnum
.
MT_SESSION_KEY
.
getValue
());
if
(
Boolean
.
FALSE
.
equals
(
b
))
{
throw
new
RuntimeException
(
"请联系管理员"
);
...
...
@@ -232,7 +232,7 @@ public class QPServiceImpl implements QPService {
* 根据团购券码,一次性验证同一订单下的若干团购券 同一个用户,同一个dealid下的券码
*/
@Override
public
List
<
TuangouReceiptConsumeResponseEntity
>
consume
(
String
code
,
int
count
,
String
openShopUuid
)
{
public
List
<
TuangouReceiptConsumeResponseEntity
>
consume
(
String
code
,
int
count
,
String
openShopUuid
,
String
status
)
{
String
o
=
redisUtil
.
get
(
ReceiptRdeisEnum
.
MT_SESSION_KEY
.
getValue
());
logger
.
info
(
"code:{}"
,
code
);
logger
.
info
(
"验卷开始"
);
...
...
share-system/src/main/java/share/system/service/impl/SOrderServiceImpl.java
View file @
82361745
...
...
@@ -329,7 +329,7 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme
if
(
Objects
.
nonNull
(
request
.
getCouponId
())
&&
request
.
getCouponId
()
!=
0
)
{
SConsumerCoupon
byId
=
consumerCouponService
.
getById
(
request
.
getCouponId
());
//验劵
qpService
.
consume
(
byId
.
getCouponCode
(),
1
,
sStore
.
getOpenShopUuid
());
qpService
.
consume
(
byId
.
getCouponCode
(),
1
,
sStore
.
getOpenShopUuid
()
,
ConsumerCouponStatusEnum
.
ORDER
.
getCode
()
);
SConsumerCoupon
consumerCoupon
=
new
SConsumerCoupon
();
consumerCoupon
.
setId
(
request
.
getCouponId
());
consumerCoupon
.
setUseStatus
(
UserStatusEnum
.
USED
.
getCode
());
...
...
@@ -724,7 +724,7 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme
SConsumerCoupon
consumerCoupon
=
consumerCouponService
.
getById
(
couponId
);
if
(
ObjectUtil
.
isNotEmpty
(
consumerCoupon
))
{
if
(
consumerCoupon
.
getUseStatus
().
equals
(
UserStatusEnum
.
UNUSED
.
getCode
()))
{
qpService
.
consume
(
consumerCoupon
.
getCouponCode
(),
1
,
sStore
.
getOpenShopUuid
());
qpService
.
consume
(
consumerCoupon
.
getCouponCode
(),
1
,
sStore
.
getOpenShopUuid
()
,
ConsumerCouponStatusEnum
.
WECHAT
.
getCode
()
);
consumerCoupon
.
setUseStatus
(
UserStatusEnum
.
USED
.
getCode
());
consumerCouponService
.
updateById
(
consumerCoupon
);
}
...
...
share-system/src/main/java/share/system/util/CouponValidator.java
0 → 100644
View file @
82361745
package
share
.
system
.
util
;
import
share.common.enums.AvailableEnum
;
import
share.common.enums.ConsumerCouponUseStatusEnum
;
import
share.common.utils.DateUtils
;
import
share.system.domain.SConsumerCoupon
;
import
share.system.domain.SRoom
;
import
share.system.domain.SStore
;
import
share.system.domain.vo.FrontTokenComponent
;
import
share.system.request.CouponRequest
;
import
java.text.SimpleDateFormat
;
import
java.util.List
;
public
class
CouponValidator
{
private
CouponRequest
couponRequest
;
private
SConsumerCoupon
sConsumerCoupon
;
private
List
<
SConsumerCoupon
>
sConsumerCoupons
;
private
List
<
SStore
>
sStores
;
private
List
<
SRoom
>
sRooms
;
public
CouponValidator
(
CouponRequest
couponRequest
,
List
<
SConsumerCoupon
>
sConsumerCoupons
,
List
<
SStore
>
sStores
,
List
<
SRoom
>
sRooms
)
{
this
.
couponRequest
=
couponRequest
;
this
.
sConsumerCoupons
=
sConsumerCoupons
;
this
.
sStores
=
sStores
;
this
.
sRooms
=
sRooms
;
this
.
sConsumerCoupon
=
new
SConsumerCoupon
();
this
.
sConsumerCoupon
.
setUseStatus
(
ConsumerCouponUseStatusEnum
.
WAIT_USE
.
getCode
());
this
.
sConsumerCoupon
.
setConsumerId
(
FrontTokenComponent
.
getWxSConsumerEntry
().
getId
());
}
public
void
validate
()
{
for
(
SConsumerCoupon
item
:
sConsumerCoupons
)
{
item
.
setIsAvailable
(
AvailableEnum
.
UNAVAILABLE
.
getCode
());
// 默认不可用
item
.
setReason
(
"无效的优惠券"
);
//验证有效时间
//验证有效时段
//验证优惠卷类型
//验证门槛金额
//验证门槛时长
//验证适用门店
//验证适用房间
}
}
}
share-system/src/main/resources/mapper/system/CouponLogMapper.xml
0 → 100644
View file @
82361745
<?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=
"share.system.mapper.CouponLogMapper"
>
<resultMap
type=
"CouponLog"
id=
"CouponLogResult"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"code"
column=
"code"
/>
<result
property=
"consumerId"
column=
"consumer_id"
/>
<result
property=
"storeId"
column=
"store_id"
/>
<result
property=
"couponId"
column=
"coupon_id"
/>
<result
property=
"couponName"
column=
"coupon_name"
/>
<result
property=
"couponType"
column=
"coupon_type"
/>
<result
property=
"couponValue"
column=
"coupon_value"
/>
<result
property=
"status"
column=
"status"
/>
<result
property=
"message"
column=
"message"
/>
<result
property=
"createBy"
column=
"create_by"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"updateBy"
column=
"update_by"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
<result
property=
"remark"
column=
"remark"
/>
</resultMap>
<sql
id=
"selectCouponLogVo"
>
select id,
code,
consumer_id,
store_id,
coupon_id,
coupon_name,
coupon_type,
coupon_value,
status,
message,
create_by,
create_time,
update_by,
update_time,
remark
from s_coupon_log
</sql>
<select
id=
"selectCouponLogList"
parameterType=
"CouponLog"
resultMap=
"CouponLogResult"
>
<include
refid=
"selectCouponLogVo"
/>
<where>
<if
test=
"code != null and code != ''"
>
and code = #{code}
</if>
<if
test=
"consumerId != null "
>
and consumer_id = #{consumerId}
</if>
<if
test=
"storeId != null "
>
and store_id = #{storeId}
</if>
<if
test=
"couponId != null "
>
and coupon_id = #{couponId}
</if>
<if
test=
"couponName != null and couponName != ''"
>
and coupon_name like concat('%', #{couponName}, '%')
</if>
<if
test=
"couponType != null and couponType != ''"
>
and coupon_type = #{couponType}
</if>
<if
test=
"couponValue != null "
>
and coupon_value = #{couponValue}
</if>
<if
test=
"status != null and status != ''"
>
and status = #{status}
</if>
<if
test=
"message != null and message != ''"
>
and message = #{message}
</if>
</where>
</select>
<select
id=
"selectCouponLogById"
parameterType=
"Long"
resultMap=
"CouponLogResult"
>
<include
refid=
"selectCouponLogVo"
/>
where id = #{id}
</select>
<insert
id=
"insertCouponLog"
parameterType=
"CouponLog"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
insert into s_coupon_log
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"code != null"
>
code,
</if>
<if
test=
"consumerId != null"
>
consumer_id,
</if>
<if
test=
"storeId != null"
>
store_id,
</if>
<if
test=
"couponId != null"
>
coupon_id,
</if>
<if
test=
"couponName != null and couponName != ''"
>
coupon_name,
</if>
<if
test=
"couponType != null and couponType != ''"
>
coupon_type,
</if>
<if
test=
"couponValue != null"
>
coupon_value,
</if>
<if
test=
"status != null and status != ''"
>
status,
</if>
<if
test=
"message != null and message != ''"
>
message,
</if>
<if
test=
"createBy != null"
>
create_by,
</if>
<if
test=
"createTime != null"
>
create_time,
</if>
<if
test=
"updateBy != null"
>
update_by,
</if>
<if
test=
"updateTime != null"
>
update_time,
</if>
<if
test=
"remark != null"
>
remark,
</if>
</trim>
<trim
prefix=
"values ("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"code != null"
>
#{code},
</if>
<if
test=
"consumerId != null"
>
#{consumerId},
</if>
<if
test=
"storeId != null"
>
#{storeId},
</if>
<if
test=
"couponId != null"
>
#{couponId},
</if>
<if
test=
"couponName != null and couponName != ''"
>
#{couponName},
</if>
<if
test=
"couponType != null and couponType != ''"
>
#{couponType},
</if>
<if
test=
"couponValue != null"
>
#{couponValue},
</if>
<if
test=
"status != null and status != ''"
>
#{status},
</if>
<if
test=
"message != null and message != ''"
>
#{message},
</if>
<if
test=
"createBy != null"
>
#{createBy},
</if>
<if
test=
"createTime != null"
>
#{createTime},
</if>
<if
test=
"updateBy != null"
>
#{updateBy},
</if>
<if
test=
"updateTime != null"
>
#{updateTime},
</if>
<if
test=
"remark != null"
>
#{remark},
</if>
</trim>
</insert>
<update
id=
"updateCouponLog"
parameterType=
"CouponLog"
>
update s_coupon_log
<trim
prefix=
"SET"
suffixOverrides=
","
>
<if
test=
"code != null"
>
code = #{code},
</if>
<if
test=
"consumerId != null"
>
consumer_id = #{consumerId},
</if>
<if
test=
"storeId != null"
>
store_id = #{storeId},
</if>
<if
test=
"couponId != null"
>
coupon_id = #{couponId},
</if>
<if
test=
"couponName != null and couponName != ''"
>
coupon_name = #{couponName},
</if>
<if
test=
"couponType != null and couponType != ''"
>
coupon_type = #{couponType},
</if>
<if
test=
"couponValue != null"
>
coupon_value = #{couponValue},
</if>
<if
test=
"status != null and status != ''"
>
status = #{status},
</if>
<if
test=
"message != null and message != ''"
>
message = #{message},
</if>
<if
test=
"createBy != null"
>
create_by = #{createBy},
</if>
<if
test=
"createTime != null"
>
create_time = #{createTime},
</if>
<if
test=
"updateBy != null"
>
update_by = #{updateBy},
</if>
<if
test=
"updateTime != null"
>
update_time = #{updateTime},
</if>
<if
test=
"remark != null"
>
remark = #{remark},
</if>
</trim>
where id = #{id}
</update>
<delete
id=
"deleteCouponLogById"
parameterType=
"Long"
>
delete
from s_coupon_log
where id = #{id}
</delete>
<delete
id=
"deleteCouponLogByIds"
parameterType=
"String"
>
delete from s_coupon_log where id in
<foreach
item=
"id"
collection=
"array"
open=
"("
separator=
","
close=
")"
>
#{id}
</foreach>
</delete>
</mapper>
\ No newline at end of file
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