Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
315dec74
提交
315dec74
authored
4月 07, 2019
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
前端:优惠劵领取界面(完成)
上级
6cee744e
隐藏空白字符变更
内嵌
并排
正在显示
13 个修改的文件
包含
145 行增加
和
27 行删除
+145
-27
promotion.js
mobile-web/src/api/promotion.js
+20
-0
user.js
mobile-web/src/api/user.js
+3
-3
fetch.vue
mobile-web/src/page/coupon/fetch.vue
+49
-4
MVCConfiguration.java
...r/mall/promotion/application/config/MVCConfiguration.java
+22
-10
UsersCouponController.java
...n/application/controller/users/UsersCouponController.java
+5
-6
PromotionErrorCodeEnum.java
...r/mall/promotion/api/constant/PromotionErrorCodeEnum.java
+2
-1
CouponCardMapper.java
...a/cn/iocoder/mall/promotion/biz/dao/CouponCardMapper.java
+3
-0
CouponTemplateMapper.java
.../iocoder/mall/promotion/biz/dao/CouponTemplateMapper.java
+2
-0
CouponServiceImpl.java
...iocoder/mall/promotion/biz/service/CouponServiceImpl.java
+15
-0
CouponCardMapper.xml
...rvice-impl/src/main/resources/mapper/CouponCardMapper.xml
+14
-0
CouponTemplateMapper.xml
...e-impl/src/main/resources/mapper/CouponTemplateMapper.xml
+7
-0
MVCConfiguration.java
...ocoder/mall/user/application/config/MVCConfiguration.java
+1
-2
UserAccessLogAddDTO.java
...ava/cn/iocoder/mall/user/api/dto/UserAccessLogAddDTO.java
+2
-1
没有找到文件。
mobile-web/src/api/promotion.js
浏览文件 @
315dec74
...
@@ -20,4 +20,24 @@ export function getProductRecommendList() {
...
@@ -20,4 +20,24 @@ export function getProductRecommendList() {
// Coupon Template
// Coupon Template
export
function
getCouponTemplate
(
id
)
{
return
request
({
url
:
'/promotion-api/users/coupon/template/get'
,
method
:
'get'
,
params
:
{
id
,
}
});
}
export
function
doAddCouponCard
(
templateId
)
{
return
request
({
url
:
'/promotion-api/users/coupon/card/add'
,
method
:
'post'
,
params
:
{
templateId
,
}
});
}
// Coupon Card
// Coupon Card
mobile-web/src/api/user.js
浏览文件 @
315dec74
...
@@ -81,7 +81,7 @@ export function getUserInfo() {
...
@@ -81,7 +81,7 @@ export function getUserInfo() {
export
function
doUserUpdateNickname
(
nickname
)
{
export
function
doUserUpdateNickname
(
nickname
)
{
return
request
({
return
request
({
url
:
'user-api/users/user/update_nickname'
,
url
:
'
/
user-api/users/user/update_nickname'
,
method
:
'post'
,
method
:
'post'
,
params
:
{
params
:
{
nickname
,
nickname
,
...
@@ -91,7 +91,7 @@ export function doUserUpdateNickname(nickname) {
...
@@ -91,7 +91,7 @@ export function doUserUpdateNickname(nickname) {
export
function
doPassportMobileRegister
(
mobile
,
code
)
{
export
function
doPassportMobileRegister
(
mobile
,
code
)
{
return
request
({
return
request
({
url
:
'user-api/users/passport/mobile/register'
,
url
:
'
/
user-api/users/passport/mobile/register'
,
method
:
'post'
,
method
:
'post'
,
params
:
{
params
:
{
mobile
,
mobile
,
...
@@ -102,7 +102,7 @@ export function doPassportMobileRegister(mobile, code) {
...
@@ -102,7 +102,7 @@ export function doPassportMobileRegister(mobile, code) {
export
function
doPassportMobileSendRegisterCode
(
mobile
)
{
export
function
doPassportMobileSendRegisterCode
(
mobile
)
{
return
request
({
return
request
({
url
:
'user-api/users/passport/mobile/send_register_code'
,
url
:
'
/
user-api/users/passport/mobile/send_register_code'
,
method
:
'post'
,
method
:
'post'
,
params
:
{
params
:
{
mobile
,
mobile
,
...
...
mobile-web/src/page/coupon/fetch.vue
浏览文件 @
315dec74
<
template
>
<
template
>
<van-cell-group>
<div>
<van-cell
title=
"单元格"
value=
"内容"
/>
<van-cell-group>
<van-cell
title=
"单元格"
value=
"内容"
label=
"描述信息"
/>
<van-cell
title=
"优惠劵编号"
:value=
"couponTemplate.id"
/>
</van-cell-group>
<van-cell
title=
"优惠劵名"
:value=
"couponTemplate.title"
/>
</van-cell-group>
<van-button
slot=
"button"
size=
"small"
type=
"primary"
@
click=
"onFetchClick"
>
领取优惠劵
</van-button>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
getCouponTemplate
,
doAddCouponCard
}
from
'../../api/promotion'
;
import
{
Dialog
}
from
'vant'
;
import
{
setLoginToken
}
from
'../../utils/cache'
;
export
default
{
data
()
{
return
{
couponTemplate
:
{
}
}
},
mounted
()
{
let
id
=
this
.
$route
.
query
.
id
;
let
response
=
getCouponTemplate
(
id
);
response
.
then
(
data
=>
{
this
.
couponTemplate
=
data
;
});
},
methods
:
{
onFetchClick
:
function
()
{
let
that
=
this
;
let
id
=
this
.
$route
.
query
.
id
;
let
response
=
doAddCouponCard
(
id
);
response
.
then
(
data
=>
{
Dialog
.
alert
({
title
:
'系统提示'
,
message
:
'领取成功'
,
beforeClose
:
function
(
action
,
done
)
{
// 关闭弹窗
done
();
// 跳转到我的优惠劵
that
.
$router
.
push
(
'/user/coupon'
);
}
});
});
}
}
}
</
script
>
</
script
>
promotion/promotion-application/src/main/java/cn/iocoder/mall/promotion/application/config/MVCConfiguration.java
浏览文件 @
315dec74
...
@@ -2,6 +2,11 @@ package cn.iocoder.mall.promotion.application.config;
...
@@ -2,6 +2,11 @@ package cn.iocoder.mall.promotion.application.config;
import
cn.iocoder.common.framework.config.GlobalExceptionHandler
;
import
cn.iocoder.common.framework.config.GlobalExceptionHandler
;
import
cn.iocoder.common.framework.servlet.CorsFilter
;
import
cn.iocoder.common.framework.servlet.CorsFilter
;
import
cn.iocoder.mall.admin.sdk.interceptor.AdminAccessLogInterceptor
;
import
cn.iocoder.mall.admin.sdk.interceptor.AdminSecurityInterceptor
;
import
cn.iocoder.mall.user.sdk.interceptor.UserAccessLogInterceptor
;
import
cn.iocoder.mall.user.sdk.interceptor.UserSecurityInterceptor
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.web.servlet.FilterRegistrationBean
;
import
org.springframework.boot.web.servlet.FilterRegistrationBean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
...
@@ -14,23 +19,31 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
...
@@ -14,23 +19,31 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@EnableWebMvc
@EnableWebMvc
@Configuration
@Configuration
@Import
(
value
=
{
GlobalExceptionHandler
.
class
,
// 统一全局返回
@Import
(
value
=
{
GlobalExceptionHandler
.
class
,
// 统一全局返回
// AdminSecurityInterceptor.class
AdminSecurityInterceptor
.
class
,
UserAccessLogInterceptor
.
class
,
UserSecurityInterceptor
.
class
,
AdminAccessLogInterceptor
.
class
,
})
})
public
class
MVCConfiguration
implements
WebMvcConfigurer
{
public
class
MVCConfiguration
implements
WebMvcConfigurer
{
// @Autowired
// @Autowired
// private UserSecurityInterceptor securityInterceptor;
// private UserSecurityInterceptor securityInterceptor;
// @Autowired
@Autowired
// private AdminSecurityInterceptor adminSecurityInterceptor;
private
UserSecurityInterceptor
userSecurityInterceptor
;
// @Autowired
@Autowired
// private AdminAccessLogInterceptor adminAccessLogInterceptor;
private
UserAccessLogInterceptor
userAccessLogInterceptor
;
@Autowired
private
AdminSecurityInterceptor
adminSecurityInterceptor
;
@Autowired
private
AdminAccessLogInterceptor
adminAccessLogInterceptor
;
//
//
@Override
@Override
public
void
addInterceptors
(
InterceptorRegistry
registry
)
{
public
void
addInterceptors
(
InterceptorRegistry
registry
)
{
// registry.addInterceptor(securityInterceptor).addPathPatterns("/user/**", "/admin/**"); // 只拦截我们定义的接口
// 用户
// registry.addInterceptor(adminAccessLogInterceptor).addPathPatterns("/admins/**");
registry
.
addInterceptor
(
userAccessLogInterceptor
).
addPathPatterns
(
"/users/**"
);
// registry.addInterceptor(adminSecurityInterceptor).addPathPatterns("/admins/**");
registry
.
addInterceptor
(
userSecurityInterceptor
).
addPathPatterns
(
"/users/**"
);
// 只拦截我们定义的接口
// 管理员
registry
.
addInterceptor
(
adminAccessLogInterceptor
).
addPathPatterns
(
"/admins/**"
);
registry
.
addInterceptor
(
adminSecurityInterceptor
).
addPathPatterns
(
"/admins/**"
);
}
}
@Override
@Override
...
@@ -48,4 +61,4 @@ public class MVCConfiguration implements WebMvcConfigurer {
...
@@ -48,4 +61,4 @@ public class MVCConfiguration implements WebMvcConfigurer {
return
registrationBean
;
return
registrationBean
;
}
}
}
}
\ No newline at end of file
promotion/promotion-application/src/main/java/cn/iocoder/mall/promotion/application/controller/users/UsersCouponController.java
浏览文件 @
315dec74
...
@@ -8,18 +8,16 @@ import cn.iocoder.mall.promotion.application.convert.CouponCardConvert;
...
@@ -8,18 +8,16 @@ import cn.iocoder.mall.promotion.application.convert.CouponCardConvert;
import
cn.iocoder.mall.promotion.application.convert.CouponTemplateConvert
;
import
cn.iocoder.mall.promotion.application.convert.CouponTemplateConvert
;
import
cn.iocoder.mall.promotion.application.vo.users.UsersCouponCardVO
;
import
cn.iocoder.mall.promotion.application.vo.users.UsersCouponCardVO
;
import
cn.iocoder.mall.promotion.application.vo.users.UsersCouponTemplateVO
;
import
cn.iocoder.mall.promotion.application.vo.users.UsersCouponTemplateVO
;
import
cn.iocoder.mall.user.sdk.annotation.PermitAll
;
import
cn.iocoder.mall.user.sdk.context.UserSecurityContextHolder
;
import
cn.iocoder.mall.user.sdk.context.UserSecurityContextHolder
;
import
com.alibaba.dubbo.config.annotation.Reference
;
import
com.alibaba.dubbo.config.annotation.Reference
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
@RestController
@RestController
@RequestMapping
(
"
admin
s/coupon"
)
@RequestMapping
(
"
user
s/coupon"
)
@Api
(
"优惠劵(码)模块"
)
@Api
(
"优惠劵(码)模块"
)
public
class
UsersCouponController
{
public
class
UsersCouponController
{
...
@@ -31,6 +29,7 @@ public class UsersCouponController {
...
@@ -31,6 +29,7 @@ public class UsersCouponController {
@GetMapping
(
"/template/get"
)
@GetMapping
(
"/template/get"
)
@ApiOperation
(
value
=
"优惠劵(码)模板信息"
)
@ApiOperation
(
value
=
"优惠劵(码)模板信息"
)
@ApiImplicitParam
(
name
=
"id"
,
value
=
"优惠劵(码)模板编号"
,
required
=
true
,
example
=
"10"
)
@ApiImplicitParam
(
name
=
"id"
,
value
=
"优惠劵(码)模板编号"
,
required
=
true
,
example
=
"10"
)
@PermitAll
public
CommonResult
<
UsersCouponTemplateVO
>
templateGet
(
@RequestParam
(
"id"
)
Integer
id
)
{
public
CommonResult
<
UsersCouponTemplateVO
>
templateGet
(
@RequestParam
(
"id"
)
Integer
id
)
{
CouponTemplateBO
template
=
couponService
.
getCouponTemplate
(
id
).
getData
();
CouponTemplateBO
template
=
couponService
.
getCouponTemplate
(
id
).
getData
();
return
CommonResult
.
success
(
CouponTemplateConvert
.
INSTANCE
.
convert2
(
template
));
return
CommonResult
.
success
(
CouponTemplateConvert
.
INSTANCE
.
convert2
(
template
));
...
@@ -38,7 +37,7 @@ public class UsersCouponController {
...
@@ -38,7 +37,7 @@ public class UsersCouponController {
// ========== 优惠劵 ==========
// ========== 优惠劵 ==========
@
Ge
tMapping
(
"/card/add"
)
@
Pos
tMapping
(
"/card/add"
)
@ApiOperation
(
value
=
"领取优惠劵"
)
@ApiOperation
(
value
=
"领取优惠劵"
)
@ApiImplicitParam
(
name
=
"templateId"
,
value
=
"优惠劵(码)模板编号"
,
required
=
true
,
example
=
"10"
)
@ApiImplicitParam
(
name
=
"templateId"
,
value
=
"优惠劵(码)模板编号"
,
required
=
true
,
example
=
"10"
)
public
CommonResult
<
UsersCouponCardVO
>
cardAdd
(
@RequestParam
(
"templateId"
)
Integer
templateId
)
{
public
CommonResult
<
UsersCouponCardVO
>
cardAdd
(
@RequestParam
(
"templateId"
)
Integer
templateId
)
{
...
...
promotion/promotion-service-api/src/main/java/cn/iocoder/mall/promotion/api/constant/PromotionErrorCodeEnum.java
浏览文件 @
315dec74
...
@@ -22,7 +22,8 @@ public enum PromotionErrorCodeEnum {
...
@@ -22,7 +22,8 @@ public enum PromotionErrorCodeEnum {
PRODUCT_TEMPLATE_NOT_CODE
(
1006002002
,
"不是优惠码模板"
),
PRODUCT_TEMPLATE_NOT_CODE
(
1006002002
,
"不是优惠码模板"
),
PRODUCT_TEMPLATE_TOTAL_CAN_NOT_REDUCE
(
1006002003
,
"优惠劵(码)模板的发放数量不能减小"
),
PRODUCT_TEMPLATE_TOTAL_CAN_NOT_REDUCE
(
1006002003
,
"优惠劵(码)模板的发放数量不能减小"
),
PRODUCT_TEMPLATE_STATUS_NOT_ENABLE
(
1006002004
,
"优惠劵模板(码)未开启"
),
PRODUCT_TEMPLATE_STATUS_NOT_ENABLE
(
1006002004
,
"优惠劵模板(码)未开启"
),
PRODUCT_TEMPLATE_TOTAL_NOT_ENOUGH
(
1006002005
,
"优惠劵(码)模板的发放量不足"
),
PRODUCT_TEMPLATE_CARD_ADD_EXCEED_QUOTA
(
1006002006
,
"优惠劵领取到达上限"
),
;
;
private
final
int
code
;
private
final
int
code
;
...
...
promotion/promotion-service-impl/src/main/java/cn/iocoder/mall/promotion/biz/dao/CouponCardMapper.java
浏览文件 @
315dec74
...
@@ -15,6 +15,9 @@ public interface CouponCardMapper {
...
@@ -15,6 +15,9 @@ public interface CouponCardMapper {
Integer
selectCountByPage
(
@Param
(
"status"
)
Integer
status
);
Integer
selectCountByPage
(
@Param
(
"status"
)
Integer
status
);
int
selectCountByUserIdAndTemplateId
(
@Param
(
"userId"
)
Integer
userId
,
@Param
(
"templateId"
)
Integer
templateId
);
void
insert
(
CouponCardDO
couponCardDO
);
void
insert
(
CouponCardDO
couponCardDO
);
int
update
(
CouponCardDO
couponCardDO
);
int
update
(
CouponCardDO
couponCardDO
);
...
...
promotion/promotion-service-impl/src/main/java/cn/iocoder/mall/promotion/biz/dao/CouponTemplateMapper.java
浏览文件 @
315dec74
...
@@ -27,4 +27,6 @@ public interface CouponTemplateMapper {
...
@@ -27,4 +27,6 @@ public interface CouponTemplateMapper {
int
update
(
CouponTemplateDO
couponTemplate
);
int
update
(
CouponTemplateDO
couponTemplate
);
int
updateStatFetchNumIncr
(
@Param
(
"id"
)
Integer
id
);
}
}
promotion/promotion-service-impl/src/main/java/cn/iocoder/mall/promotion/biz/service/CouponServiceImpl.java
浏览文件 @
315dec74
...
@@ -19,6 +19,7 @@ import cn.iocoder.mall.promotion.biz.dataobject.CouponCardDO;
...
@@ -19,6 +19,7 @@ import cn.iocoder.mall.promotion.biz.dataobject.CouponCardDO;
import
cn.iocoder.mall.promotion.biz.dataobject.CouponTemplateDO
;
import
cn.iocoder.mall.promotion.biz.dataobject.CouponTemplateDO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.Calendar
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.Date
;
...
@@ -176,6 +177,7 @@ public class CouponServiceImpl implements CouponService {
...
@@ -176,6 +177,7 @@ public class CouponServiceImpl implements CouponService {
// ========== 优惠劵 ==========
// ========== 优惠劵 ==========
@Override
@Override
@Transactional
public
CommonResult
<
CouponCardBO
>
addCouponCard
(
Integer
userId
,
Integer
couponTemplateId
)
{
public
CommonResult
<
CouponCardBO
>
addCouponCard
(
Integer
userId
,
Integer
couponTemplateId
)
{
// 校验 CouponCardTemplate 存在
// 校验 CouponCardTemplate 存在
CouponTemplateDO
template
=
couponTemplateMapper
.
selectById
(
couponTemplateId
);
CouponTemplateDO
template
=
couponTemplateMapper
.
selectById
(
couponTemplateId
);
...
@@ -190,6 +192,19 @@ public class CouponServiceImpl implements CouponService {
...
@@ -190,6 +192,19 @@ public class CouponServiceImpl implements CouponService {
if
(!
CouponTemplateStatusEnum
.
ENABLE
.
getValue
().
equals
(
template
.
getStatus
()))
{
if
(!
CouponTemplateStatusEnum
.
ENABLE
.
getValue
().
equals
(
template
.
getStatus
()))
{
return
ServiceExceptionUtil
.
error
(
PromotionErrorCodeEnum
.
PRODUCT_TEMPLATE_STATUS_NOT_ENABLE
.
getCode
());
return
ServiceExceptionUtil
.
error
(
PromotionErrorCodeEnum
.
PRODUCT_TEMPLATE_STATUS_NOT_ENABLE
.
getCode
());
}
}
// 校验 CouponCardTemplate 是否到达可领取的上限
if
(
template
.
getStatFetchNum
()
>
template
.
getTotal
())
{
return
ServiceExceptionUtil
.
error
(
PromotionErrorCodeEnum
.
PRODUCT_TEMPLATE_TOTAL_NOT_ENOUGH
.
getCode
());
}
// 校验单人可领取优惠劵是否到达上限
if
(
couponCardMapper
.
selectCountByUserIdAndTemplateId
(
userId
,
couponTemplateId
)
>
template
.
getQuota
())
{
return
ServiceExceptionUtil
.
error
(
PromotionErrorCodeEnum
.
PRODUCT_TEMPLATE_CARD_ADD_EXCEED_QUOTA
.
getCode
());
}
// 增加优惠劵已领取量
int
updateTemplateCount
=
couponTemplateMapper
.
updateStatFetchNumIncr
(
couponTemplateId
);
if
(
updateTemplateCount
==
0
)
{
// 超过 CouponCardTemplate 发放量
return
ServiceExceptionUtil
.
error
(
PromotionErrorCodeEnum
.
PRODUCT_TEMPLATE_CARD_ADD_EXCEED_QUOTA
.
getCode
());
}
// 创建优惠劵
// 创建优惠劵
// 1. 基本信息 + 领取情况
// 1. 基本信息 + 领取情况
CouponCardDO
card
=
new
CouponCardDO
()
CouponCardDO
card
=
new
CouponCardDO
()
...
...
promotion/promotion-service-impl/src/main/resources/mapper/CouponCardMapper.xml
浏览文件 @
315dec74
...
@@ -56,6 +56,20 @@
...
@@ -56,6 +56,20 @@
</where>
</where>
</select>
</select>
<select
id=
"selectCountByUserIdAndTemplateId"
resultType=
"Integer"
>
SELECT
COUNT(1)
FROM coupon_card
<where>
<if
test=
"userId != null"
>
AND user_id = #{userId}
</if>
<if
test=
"templateId != null"
>
AND template_id = #{templateId}
</if>
</where>
</select>
<insert
id=
"insert"
parameterType=
"CouponCardDO"
useGeneratedKeys=
"true"
keyColumn=
"id"
keyProperty=
"id"
>
<insert
id=
"insert"
parameterType=
"CouponCardDO"
useGeneratedKeys=
"true"
keyColumn=
"id"
keyProperty=
"id"
>
INSERT INTO coupon_card (
INSERT INTO coupon_card (
template_id, status, user_id, take_type,
template_id, status, user_id, take_type,
...
...
promotion/promotion-service-impl/src/main/resources/mapper/CouponTemplateMapper.xml
浏览文件 @
315dec74
...
@@ -149,4 +149,11 @@
...
@@ -149,4 +149,11 @@
WHERE id = #{id}
WHERE id = #{id}
</update>
</update>
<update
id=
"updateStatFetchNumIncr"
parameterType=
"Integer"
>
UPDATE coupon_template
SET stat_fetch_Num = stat_fetch_Num + 1
WHERE id = #{id}
AND total > stat_fetch_Num
</update>
</mapper>
</mapper>
user/user-application/src/main/java/cn/iocoder/mall/user/application/config/MVCConfiguration.java
浏览文件 @
315dec74
...
@@ -49,4 +49,4 @@ public class MVCConfiguration implements WebMvcConfigurer {
...
@@ -49,4 +49,4 @@ public class MVCConfiguration implements WebMvcConfigurer {
return
registrationBean
;
return
registrationBean
;
}
}
}
}
\ No newline at end of file
user/user-service-api/src/main/java/cn/iocoder/mall/user/api/dto/UserAccessLogAddDTO.java
浏览文件 @
315dec74
...
@@ -4,6 +4,7 @@ import lombok.Data;
...
@@ -4,6 +4,7 @@ import lombok.Data;
import
lombok.experimental.Accessors
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.util.Date
;
import
java.util.Date
;
/**
/**
...
@@ -11,7 +12,7 @@ import java.util.Date;
...
@@ -11,7 +12,7 @@ import java.util.Date;
*/
*/
@Data
@Data
@Accessors
(
chain
=
true
)
@Accessors
(
chain
=
true
)
public
class
UserAccessLogAddDTO
{
public
class
UserAccessLogAddDTO
implements
Serializable
{
/**
/**
* 用户编号 - 空
* 用户编号 - 空
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论