Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
answer-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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
answer
answer-backend
Commits
dcef1aaf
Commit
dcef1aaf
authored
Aug 12, 2022
by
袁伟铭
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
迁移答题代码
parent
8f05c6d7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
2408 additions
and
344 deletions
+2408
-344
answer-common-utils/src/main/java/com/zq/common/vo/IdVo.java
+36
-0
api-server/src/main/java/com/zq/api/feign/UserFeign.java
+35
-14
api-server/src/main/java/com/zq/api/service/IApiLogic.java
+80
-3
api-server/src/main/java/com/zq/api/service/impl/ApiV100Logic.java
+80
-11
user-server/src/main/java/com/zq/user/controller/PrizeController.java
+136
-0
user-server/src/main/java/com/zq/user/controller/QuestionController.java
+74
-0
user-server/src/main/java/com/zq/user/controller/UserController.java
+8
-8
user-server/src/main/java/com/zq/user/controller/api/AddressApi.java
+65
-0
user-server/src/main/java/com/zq/user/controller/api/PrizeApi.java
+50
-0
user-server/src/main/java/com/zq/user/controller/api/QuestionApi.java
+43
-0
user-server/src/main/java/com/zq/user/controller/api/UserController.java
+0
-98
user-server/src/main/java/com/zq/user/dao/AddressDao.java
+5
-5
user-server/src/main/java/com/zq/user/dao/AnswerRecDao.java
+16
-0
user-server/src/main/java/com/zq/user/dao/LotteryRecDao.java
+16
-0
user-server/src/main/java/com/zq/user/dao/PrizeDao.java
+24
-0
user-server/src/main/java/com/zq/user/dao/PrizeTypeDao.java
+16
-0
user-server/src/main/java/com/zq/user/dao/QuestionDao.java
+16
-0
user-server/src/main/java/com/zq/user/dao/QuestionTypeDao.java
+16
-0
user-server/src/main/java/com/zq/user/entity/Address.java
+87
-0
user-server/src/main/java/com/zq/user/entity/AnswerRec.java
+58
-0
user-server/src/main/java/com/zq/user/entity/AppUser.java
+0
-169
user-server/src/main/java/com/zq/user/entity/LotteryRec.java
+103
-0
user-server/src/main/java/com/zq/user/entity/Prize.java
+124
-0
user-server/src/main/java/com/zq/user/entity/PrizeType.java
+71
-0
user-server/src/main/java/com/zq/user/entity/Question.java
+141
-0
user-server/src/main/java/com/zq/user/entity/QuestionType.java
+40
-0
user-server/src/main/java/com/zq/user/service/AddressService.java
+89
-0
user-server/src/main/java/com/zq/user/service/PrizeService.java
+246
-0
user-server/src/main/java/com/zq/user/service/QuestionService.java
+173
-0
user-server/src/main/java/com/zq/user/service/UserService.java
+0
-0
user-server/src/main/java/com/zq/user/service/WxUserService.java
+34
-0
user-server/src/main/java/com/zq/user/vo/AddressFindVo.java
+70
-0
user-server/src/main/java/com/zq/user/vo/FindUserVo.java
+63
-36
user-server/src/main/java/com/zq/user/vo/LotteryRecFindVo.java
+96
-0
user-server/src/main/java/com/zq/user/vo/PrizeFindVo.java
+107
-0
user-server/src/main/java/com/zq/user/vo/PrizeTypeFindVo.java
+66
-0
user-server/src/main/java/com/zq/user/vo/QuestionFindVo.java
+124
-0
No files found.
answer-common-utils/src/main/java/com/zq/common/vo/IdVo.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
common
.
vo
;
import
cn.hutool.core.util.StrUtil
;
import
lombok.*
;
import
java.util.HashSet
;
import
java.util.Set
;
/**
* @author wilmiam
* @since 2022-08-12 11:40
*/
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
IdVo
{
private
String
id
;
private
String
note
;
private
Set
<
String
>
ids
;
public
Set
<
String
>
getIds
()
{
if
(
ids
==
null
)
{
ids
=
new
HashSet
<>();
}
if
(
StrUtil
.
isNotBlank
(
id
))
{
ids
.
add
(
id
);
}
return
ids
;
}
}
api-server/src/main/java/com/zq/api/feign/UserFeign.java
View file @
dcef1aaf
...
...
@@ -11,28 +11,49 @@ import java.util.Map;
* @author wilmiam
* @since 2021-07-13 09:56
*/
@FeignClient
(
name
=
"USER-SERVER"
,
path
=
"/user
/api
"
,
configuration
=
FeignConfig
.
class
)
@FeignClient
(
name
=
"USER-SERVER"
,
path
=
"/user"
,
configuration
=
FeignConfig
.
class
)
public
interface
UserFeign
{
/**
* 发送手机验证码
*
* @param phone
* @return
*/
@GetMapping
(
value
=
"/sendCode"
)
ResultVo
sendCode
(
@RequestParam
String
phone
);
@PostMapping
(
value
=
"/wxLogin"
)
@PostMapping
(
value
=
"/api/wxLogin"
)
ResultVo
wxLogin
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
value
=
"/getWxPhone"
)
@PostMapping
(
value
=
"/
api/
getWxPhone"
)
ResultVo
getWxPhone
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
value
=
"/updateWxUserInfo"
)
@PostMapping
(
value
=
"/
api/
updateWxUserInfo"
)
ResultVo
updateWxUserInfo
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@GetMapping
(
value
=
"/getWxUserInfo/{userId}"
)
@GetMapping
(
value
=
"/
api/
getWxUserInfo/{userId}"
)
ResultVo
getWxUserInfo
(
@PathVariable
String
userId
);
@PostMapping
(
value
=
"/api/question/answer"
)
ResultVo
answer
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
value
=
"/api/question/getQuestionList"
)
ResultVo
getQuestionList
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@GetMapping
(
value
=
"/api/prize/getAllPrizeType"
)
ResultVo
getAllPrizeType
();
@GetMapping
(
value
=
"/api/prize/luckDraw"
)
ResultVo
luckDraw
(
@RequestParam
String
userId
);
@PostMapping
(
value
=
"/api/prize/getLotteryRecList"
)
ResultVo
getLotteryRecList
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
value
=
"/api/address/getAddressList"
)
ResultVo
getAddressList
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
value
=
"/api/address/addAddress"
)
ResultVo
addAddress
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@PostMapping
(
value
=
"/api/address/editAddress"
)
ResultVo
editAddress
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@DeleteMapping
(
value
=
"/api/address/delAddress"
)
ResultVo
delAddress
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
);
@GetMapping
(
value
=
"/api/address/getAddress/{addressId}"
)
ResultVo
getAddress
(
@PathVariable
String
addressId
);
}
api-server/src/main/java/com/zq/api/service/IApiLogic.java
View file @
dcef1aaf
...
...
@@ -11,9 +11,6 @@ import com.zq.api.form.ApiResp;
*/
public
interface
IApiLogic
extends
IApiCommon
{
@ApiMethod
(
name
=
"发送验证码"
,
service
=
"USER-SERVER"
)
ApiResp
sendCode
(
ApiForm
form
);
@ApiMethod
(
name
=
"微信登录"
,
service
=
"USER-SERVER"
)
ApiResp
wxLogin
(
ApiForm
form
);
...
...
@@ -26,4 +23,84 @@ public interface IApiLogic extends IApiCommon {
@ApiMethod
(
name
=
"获取微信用户信息"
,
service
=
"USER-SERVER"
)
ApiResp
getWxUserInfo
(
ApiForm
form
);
/**
* 答题
*
* @param form
* @return
*/
ApiResp
answer
(
ApiForm
form
);
/**
* 获取题目
*
* @param form
* @return
*/
ApiResp
getQuestionList
(
ApiForm
form
);
/**
* 获取全部奖品类型
*
* @param form
* @return
*/
ApiResp
getAllPrizeType
(
ApiForm
form
);
/**
* 抽奖
*
* @param form
* @return
*/
ApiResp
luckDraw
(
ApiForm
form
);
/**
* 抽奖记录
*
* @param form
* @return
*/
ApiResp
getLotteryRecList
(
ApiForm
form
);
/**
* 收货地址
*
* @param form
* @return
*/
ApiResp
getAddressList
(
ApiForm
form
);
/**
* 添加地址
*
* @param form
* @return
*/
ApiResp
addAddress
(
ApiForm
form
);
/**
* 修改地址
*
* @param form
* @return
*/
ApiResp
editAddress
(
ApiForm
form
);
/**
* 删除地址
*
* @param form
* @return
*/
ApiResp
delAddress
(
ApiForm
form
);
/**
* 获取地址
*
* @param form
* @return
*/
ApiResp
getAddress
(
ApiForm
form
);
}
api-server/src/main/java/com/zq/api/service/impl/ApiV100Logic.java
View file @
dcef1aaf
...
...
@@ -14,17 +14,6 @@ public class ApiV100Logic extends BaseApiLogic implements IApiLogic {
@Autowired
private
UserFeign
userFeign
;
/**
* 发送验证码
*
* @param form
* @return
*/
@Override
public
ApiResp
sendCode
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
userFeign
.
sendCode
(
form
.
getString
(
"phone"
)));
}
@Override
public
ApiResp
wxLogin
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
userFeign
.
wxLogin
(
form
.
getParamsMap
()));
...
...
@@ -45,4 +34,84 @@ public class ApiV100Logic extends BaseApiLogic implements IApiLogic {
return
ApiUtils
.
toApiResp
(
form
,
userFeign
.
getWxUserInfo
(
form
.
getUserId
()));
}
@Override
public
ApiResp
answer
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
userFeign
.
answer
(
form
.
getParamsMap
(
true
)));
}
@Override
public
ApiResp
getQuestionList
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
userFeign
.
getQuestionList
(
form
.
getParamsMap
()));
}
@Override
public
ApiResp
getAllPrizeType
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
userFeign
.
getAllPrizeType
());
}
@Override
public
ApiResp
luckDraw
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
userFeign
.
luckDraw
(
form
.
getUserId
()));
}
@Override
public
ApiResp
getLotteryRecList
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
userFeign
.
getLotteryRecList
(
form
.
getParamsMap
(
true
)));
}
/**
* 收货地址
*
* @param form
* @return
*/
@Override
public
ApiResp
getAddressList
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
userFeign
.
getAddressList
(
form
.
getParamsMap
(
true
)));
}
/**
* 添加地址
*
* @param form
* @return
*/
@Override
public
ApiResp
addAddress
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
userFeign
.
addAddress
(
form
.
getParamsMap
(
true
)));
}
/**
* 修改地址
*
* @param form
* @return
*/
@Override
public
ApiResp
editAddress
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
userFeign
.
editAddress
(
form
.
getParamsMap
(
true
)));
}
/**
* 删除地址
*
* @param form
* @return
*/
@Override
public
ApiResp
delAddress
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
userFeign
.
delAddress
(
form
.
getParamsMap
(
true
)));
}
/**
* 获取地址
*
* @param form
* @return
*/
@Override
public
ApiResp
getAddress
(
ApiForm
form
)
{
return
ApiUtils
.
toApiResp
(
form
,
userFeign
.
getAddress
(
form
.
getString
(
"addressId"
)));
}
}
user-server/src/main/java/com/zq/user/controller/PrizeController.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
controller
;
import
com.zq.common.utils.AssertUtils
;
import
com.zq.common.vo.IdVo
;
import
com.zq.common.vo.PageVo
;
import
com.zq.common.vo.ResultVo
;
import
com.zq.user.entity.LotteryRec
;
import
com.zq.user.entity.Prize
;
import
com.zq.user.entity.PrizeType
;
import
com.zq.user.service.PrizeService
;
import
com.zq.user.vo.LotteryRecFindVo
;
import
com.zq.user.vo.PrizeFindVo
;
import
com.zq.user.vo.PrizeTypeFindVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
/**
* @author wilmiam
* @since 2022/6/15 16:19
*/
@Api
(
tags
=
"抽奖相关接口"
)
@RequiredArgsConstructor
@RestController
@RequestMapping
(
value
=
"/user/prize"
)
public
class
PrizeController
{
private
final
PrizeService
prizeService
;
@ApiOperation
(
"获取全部奖品类型"
)
@GetMapping
(
value
=
"/getAllPrizeType"
)
public
ResultVo
<
List
<
PrizeType
>>
getAllPrizeType
()
{
return
ResultVo
.
success
(
prizeService
.
getAllPrizeType
());
}
@ApiOperation
(
"奖品类型列表"
)
@PostMapping
(
value
=
"/getPrizeTypeList"
)
public
ResultVo
<
PageVo
<
PrizeType
>>
getPrizeTypeList
(
@RequestBody
PrizeTypeFindVo
vo
)
{
return
ResultVo
.
success
(
prizeService
.
getPrizeTypeList
(
vo
));
}
@ApiOperation
(
"添加奖品类型"
)
@PostMapping
(
value
=
"/addPrizeType"
)
public
ResultVo
addPrizeType
(
@RequestBody
PrizeType
vo
)
{
AssertUtils
.
hasText
(
vo
.
getTypeName
(),
"缺少类型名称"
);
AssertUtils
.
hasText
(
vo
.
getDisplayName
(),
"缺少显示名称"
);
prizeService
.
addPrizeType
(
vo
);
return
ResultVo
.
success
();
}
@ApiOperation
(
"修改奖品类型"
)
@PostMapping
(
value
=
"/editPrizeType"
)
public
ResultVo
editPrizeType
(
@RequestBody
PrizeType
vo
)
{
AssertUtils
.
notNull
(
vo
.
getId
(),
"缺少奖品ID"
);
prizeService
.
editPrizeType
(
vo
);
return
ResultVo
.
success
();
}
@ApiOperation
(
"删除奖品类型"
)
@DeleteMapping
(
value
=
"/delPrizeType"
)
public
ResultVo
delPrizeType
(
@RequestBody
IdVo
vo
)
{
AssertUtils
.
notEmpty
(
vo
.
getIds
(),
"缺少ID"
);
prizeService
.
delPrizeType
(
vo
.
getIds
());
return
ResultVo
.
success
();
}
@ApiOperation
(
"获取奖品类型"
)
@GetMapping
(
value
=
"/getPrizeType/{prizeTypeId}"
)
public
ResultVo
getPrizeType
(
@PathVariable
String
prizeTypeId
)
{
return
ResultVo
.
success
(
prizeService
.
getPrizeType
(
prizeTypeId
));
}
/************************************************************************************/
@ApiOperation
(
"奖品列表"
)
@PostMapping
(
value
=
"/getPrizeList"
)
public
ResultVo
<
PageVo
<
Prize
>>
getPrizeList
(
@RequestBody
PrizeFindVo
vo
)
{
return
ResultVo
.
success
(
prizeService
.
getPrizeList
(
vo
));
}
@ApiOperation
(
"添加奖品"
)
@PostMapping
(
value
=
"/addPrize"
)
public
ResultVo
addPrize
(
@RequestBody
Prize
vo
)
{
prizeService
.
addPrize
(
vo
);
return
ResultVo
.
success
();
}
@ApiOperation
(
"修改奖品"
)
@PostMapping
(
value
=
"/editPrize"
)
public
ResultVo
editPrize
(
@RequestBody
Prize
vo
)
{
AssertUtils
.
notNull
(
vo
.
getId
(),
"缺少奖品ID"
);
prizeService
.
editPrize
(
vo
);
return
ResultVo
.
success
();
}
@ApiOperation
(
"删除奖品"
)
@DeleteMapping
(
value
=
"/delPrize"
)
public
ResultVo
delPrize
(
@RequestBody
IdVo
vo
)
{
AssertUtils
.
notEmpty
(
vo
.
getIds
(),
"缺少ID"
);
prizeService
.
delPrize
(
vo
.
getIds
());
return
ResultVo
.
success
();
}
@ApiOperation
(
"获取奖品"
)
@GetMapping
(
value
=
"/getPrize/{prizeId}"
)
public
ResultVo
getPrize
(
@PathVariable
String
prizeId
)
{
return
ResultVo
.
success
(
prizeService
.
getPrize
(
prizeId
));
}
/************************************************************************************/
@ApiOperation
(
"获取抽奖记录"
)
@PostMapping
(
value
=
"/getLotteryRecList"
)
public
ResultVo
<
PageVo
<
LotteryRec
>>
getLotteryRecList
(
@RequestBody
LotteryRecFindVo
vo
)
{
return
ResultVo
.
success
(
prizeService
.
getLotteryRecList
(
vo
));
}
@ApiOperation
(
"确认派奖"
)
@PutMapping
(
value
=
"/confirmAward"
)
public
ResultVo
confirmAward
(
Long
lotteryRecId
)
{
AssertUtils
.
notNull
(
lotteryRecId
,
"中奖记录ID"
);
prizeService
.
confirmAward
(
lotteryRecId
);
return
ResultVo
.
success
();
}
}
user-server/src/main/java/com/zq/user/controller/QuestionController.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
controller
;
import
com.zq.common.utils.AssertUtils
;
import
com.zq.common.vo.IdVo
;
import
com.zq.common.vo.PageVo
;
import
com.zq.common.vo.ResultVo
;
import
com.zq.user.entity.Question
;
import
com.zq.user.entity.QuestionType
;
import
com.zq.user.service.QuestionService
;
import
com.zq.user.vo.QuestionFindVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
/**
* @author wilmiam
* @since 2022/6/15 9:51
*/
@Api
(
tags
=
"答题相关接口"
)
@RequiredArgsConstructor
@RestController
@RequestMapping
(
value
=
"/user/question"
)
public
class
QuestionController
{
private
final
QuestionService
questionService
;
@ApiOperation
(
"获取全部题型"
)
@GetMapping
(
value
=
"/getAllQuestionType"
)
public
ResultVo
<
List
<
QuestionType
>>
getAllQuestionType
()
{
return
ResultVo
.
success
(
questionService
.
getAllQuestionType
());
}
@ApiOperation
(
"题目列表"
)
@PostMapping
(
value
=
"/getQuestionList"
)
public
ResultVo
<
PageVo
<
Question
>>
getQuestionList
(
@RequestBody
QuestionFindVo
vo
)
{
return
ResultVo
.
success
(
questionService
.
getQuestionList
(
vo
));
}
@ApiOperation
(
"添加题目"
)
@PostMapping
(
value
=
"/addQuestion"
)
public
ResultVo
addQuestion
(
@RequestBody
Question
vo
)
{
questionService
.
addQuestion
(
vo
);
return
ResultVo
.
success
();
}
@ApiOperation
(
"修改题目"
)
@PostMapping
(
value
=
"/editQuestion"
)
public
ResultVo
editQuestion
(
@RequestBody
Question
vo
)
{
AssertUtils
.
notNull
(
vo
.
getId
(),
"缺少题目ID"
);
questionService
.
editQuestion
(
vo
);
return
ResultVo
.
success
();
}
@ApiOperation
(
"删除题目"
)
@DeleteMapping
(
value
=
"/delQuestion"
)
public
ResultVo
delQuestion
(
@RequestBody
IdVo
vo
)
{
AssertUtils
.
notEmpty
(
vo
.
getIds
(),
"缺少ID"
);
questionService
.
delQuestion
(
vo
.
getIds
());
return
ResultVo
.
success
();
}
@ApiOperation
(
"获取题目"
)
@GetMapping
(
value
=
"/getQuestion/{questionId}"
)
public
ResultVo
getQuestion
(
@PathVariable
String
questionId
)
{
return
ResultVo
.
success
(
questionService
.
getQuestion
(
questionId
));
}
}
user-server/src/main/java/com/zq/user/controller/
admin/UserAdmin
Controller.java
→
user-server/src/main/java/com/zq/user/controller/
User
Controller.java
View file @
dcef1aaf
package
com
.
zq
.
user
.
controller
.
admin
;
package
com
.
zq
.
user
.
controller
;
import
com.zq.common.annotation.AnonymousAccess
;
import
com.zq.common.vo.PageVo
;
import
com.zq.common.vo.ResultVo
;
import
com.zq.logging.annotation.Log
;
import
com.zq.user.entity.
App
User
;
import
com.zq.user.service.UserService
;
import
com.zq.user.vo.Find
App
UserVo
;
import
com.zq.user.entity.
Wx
User
;
import
com.zq.user.service.
Wx
UserService
;
import
com.zq.user.vo.FindUserVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
...
...
@@ -22,16 +22,16 @@ import org.springframework.web.bind.annotation.RestController;
@Api
(
tags
=
"用户相关接口"
)
@RequiredArgsConstructor
@RestController
@RequestMapping
(
value
=
"/user
/admin
"
)
public
class
User
Admin
Controller
{
@RequestMapping
(
value
=
"/user"
)
public
class
UserController
{
private
final
UserService
userService
;
private
final
Wx
UserService
userService
;
@Log
(
"获取用户列表"
)
@AnonymousAccess
@ApiOperation
(
"获取用户列表"
)
@PostMapping
(
value
=
"/getUserList"
)
public
ResultVo
<
PageVo
<
AppUser
>>
getUserList
(
@RequestBody
FindApp
UserVo
vo
)
{
public
ResultVo
<
PageVo
<
WxUser
>>
getUserList
(
@RequestBody
Find
UserVo
vo
)
{
return
ResultVo
.
success
(
userService
.
getUserList
(
vo
));
}
...
...
user-server/src/main/java/com/zq/user/controller/api/AddressApi.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
controller
.
api
;
import
com.zq.common.utils.AssertUtils
;
import
com.zq.common.vo.IdVo
;
import
com.zq.common.vo.PageVo
;
import
com.zq.common.vo.ResultVo
;
import
com.zq.user.entity.Address
;
import
com.zq.user.service.AddressService
;
import
com.zq.user.vo.AddressFindVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.web.bind.annotation.*
;
/**
* @author wilmiam
* @since 2022/6/15 9:51
*/
@Api
(
tags
=
"收货地址相关接口"
)
@RequiredArgsConstructor
@RestController
@RequestMapping
(
value
=
"/user/api/address"
)
public
class
AddressApi
{
private
final
AddressService
addressService
;
@ApiOperation
(
"地址列表"
)
@PostMapping
(
value
=
"/getAddressList"
)
public
ResultVo
<
PageVo
<
Address
>>
getAddressList
(
@RequestBody
AddressFindVo
vo
)
{
return
ResultVo
.
success
(
addressService
.
getAddressList
(
vo
));
}
@ApiOperation
(
"添加地址"
)
@PostMapping
(
value
=
"/addAddress"
)
public
ResultVo
addAddress
(
@RequestBody
Address
vo
)
{
addressService
.
addAddress
(
vo
);
return
ResultVo
.
success
();
}
@ApiOperation
(
"修改地址"
)
@PostMapping
(
value
=
"/editAddress"
)
public
ResultVo
editAddress
(
@RequestBody
Address
vo
)
{
AssertUtils
.
notNull
(
vo
.
getId
(),
"缺少地址ID"
);
addressService
.
editAddress
(
vo
);
return
ResultVo
.
success
();
}
@ApiOperation
(
"删除地址"
)
@DeleteMapping
(
value
=
"/delAddress"
)
public
ResultVo
delAddress
(
@RequestBody
IdVo
vo
)
{
AssertUtils
.
notEmpty
(
vo
.
getIds
(),
"缺少ID"
);
addressService
.
delAddress
(
vo
.
getIds
());
return
ResultVo
.
success
();
}
@ApiOperation
(
"获取地址"
)
@GetMapping
(
value
=
"/getAddress/{addressId}"
)
public
ResultVo
getAddress
(
@PathVariable
String
addressId
)
{
return
ResultVo
.
success
(
addressService
.
getAddress
(
addressId
));
}
}
user-server/src/main/java/com/zq/user/controller/api/PrizeApi.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
controller
.
api
;
import
com.zq.common.utils.AssertUtils
;
import
com.zq.common.vo.PageVo
;
import
com.zq.common.vo.ResultVo
;
import
com.zq.user.entity.LotteryRec
;
import
com.zq.user.entity.Prize
;
import
com.zq.user.entity.PrizeType
;
import
com.zq.user.service.PrizeService
;
import
com.zq.user.vo.LotteryRecFindVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
/**
* @author wilmiam
* @since 2022/6/15 16:19
*/
@Api
(
tags
=
"抽奖相关接口"
)
@RequiredArgsConstructor
@RestController
@RequestMapping
(
value
=
"/user/api/prize"
)
public
class
PrizeApi
{
private
final
PrizeService
prizeService
;
@ApiOperation
(
"获取全部奖品类型"
)
@GetMapping
(
value
=
"/getAllPrizeType"
)
public
ResultVo
<
List
<
PrizeType
>>
getAllPrizeType
()
{
return
ResultVo
.
success
(
prizeService
.
getAllPrizeType
());
}
@ApiOperation
(
"抽奖"
)
@GetMapping
(
value
=
"/luckDraw"
)
public
ResultVo
<
Prize
>
luckDraw
(
@RequestParam
String
userId
)
{
return
ResultVo
.
success
(
prizeService
.
luckDraw
(
userId
));
}
@ApiOperation
(
"抽奖记录列表"
)
@PostMapping
(
value
=
"/getLotteryRecList"
)
public
ResultVo
<
PageVo
<
LotteryRec
>>
getLotteryRecList
(
@RequestBody
LotteryRecFindVo
vo
)
{
AssertUtils
.
hasText
(
vo
.
getUserId
(),
"缺少用户ID"
);
return
ResultVo
.
success
(
prizeService
.
getLotteryRecList
(
vo
));
}
}
user-server/src/main/java/com/zq/user/controller/api/QuestionApi.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
controller
.
api
;
import
com.zq.common.utils.AssertUtils
;
import
com.zq.common.vo.ResultVo
;
import
com.zq.user.entity.AnswerRec
;
import
com.zq.user.service.QuestionService
;
import
com.zq.user.vo.QuestionFindVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* @author wilmiam
* @since 2022/6/15 9:51
*/
@Api
(
tags
=
"答题相关接口"
)
@RequiredArgsConstructor
@RestController
@RequestMapping
(
value
=
"/user/api/question"
)
public
class
QuestionApi
{
private
final
QuestionService
questionService
;
@ApiOperation
(
"获取题目列表"
)
@PostMapping
(
value
=
"/getQuestionList"
)
public
ResultVo
getQuestionList
(
@RequestBody
QuestionFindVo
vo
)
{
return
ResultVo
.
success
(
questionService
.
questionList
(
vo
));
}
@ApiOperation
(
"答题"
)
@PostMapping
(
value
=
"/answer"
)
public
ResultVo
answer
(
@RequestBody
AnswerRec
vo
)
{
AssertUtils
.
hasText
(
vo
.
getUserId
(),
"缺少用户ID"
);
AssertUtils
.
hasText
(
vo
.
getAnswerList
(),
"缺少答案"
);
return
ResultVo
.
success
(
questionService
.
answer
(
vo
));
}
}
user-server/src/main/java/com/zq/user/controller/api/UserController.java
deleted
100644 → 0
View file @
8f05c6d7
package
com
.
zq
.
user
.
controller
.
api
;
import
com.zq.common.annotation.Limit
;
import
com.zq.common.config.limit.LimitType
;
import
com.zq.common.utils.AssertUtils
;
import
com.zq.common.utils.ValidateUtil
;
import
com.zq.common.vo.ApiTokenVo
;
import
com.zq.common.vo.PageVo
;
import
com.zq.common.vo.ResultVo
;
import
com.zq.user.entity.AppUser
;
import
com.zq.user.service.UserService
;
import
com.zq.user.vo.FindAppUserVo
;
import
com.zq.user.vo.LoginVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.web.bind.annotation.*
;
/**
* @author wilmiam
* @since 2021-07-09 10:38
*/
@Api
(
tags
=
"用户相关接口"
)
@RequiredArgsConstructor
@RestController
@RequestMapping
(
value
=
"/user/api"
)
public
class
UserController
{
private
final
UserService
userService
;
/**
* 发送手机验证码
* 使用第一个参数值作为限流key, 30秒只能访问1次
*
* @param phone
* @return
*/
@Limit
(
limitType
=
LimitType
.
PARAM
,
keyParamIndex
=
0
,
period
=
1
,
count
=
1
,
name
=
"发送手机验证码"
,
errMsg
=
"请稍后再试!"
)
@ApiOperation
(
"发送验证码"
)
@GetMapping
(
value
=
"/sendCode"
)
public
ResultVo
sendCode
(
String
phone
)
{
AssertUtils
.
hasText
(
phone
,
"手机号不能为空"
);
AssertUtils
.
isTrue
(
ValidateUtil
.
isMobilePhoneNo
(
phone
),
"手机号格式不正确"
);
userService
.
sendCode
(
phone
);
return
ResultVo
.
success
();
}
@ApiOperation
(
"重置登录密码"
)
@PostMapping
(
value
=
"/resetPasswd"
)
public
ResultVo
resetPassword
(
@RequestBody
LoginVo
vo
)
{
AssertUtils
.
hasText
(
vo
.
getPhone
(),
"手机号不能为空"
);
AssertUtils
.
isTrue
(
ValidateUtil
.
isMobilePhoneNo
(
vo
.
getPhone
()),
"手机号格式不正确"
);
AssertUtils
.
hasText
(
vo
.
getVerifyCode
(),
"请输入验证码"
);
userService
.
resetPassword
(
vo
);
return
ResultVo
.
success
();
}
@ApiOperation
(
"修改登录密码"
)
@PostMapping
(
value
=
"/modifyPasswd"
)
public
ResultVo
modifyPasswd
(
@RequestBody
LoginVo
vo
)
{
AssertUtils
.
hasText
(
vo
.
getPhone
(),
"手机号不能为空"
);
AssertUtils
.
isTrue
(
ValidateUtil
.
isMobilePhoneNo
(
vo
.
getPhone
()),
"手机号格式不正确"
);
AssertUtils
.
hasText
(
vo
.
getVerifyCode
(),
"请输入验证码"
);
AssertUtils
.
hasText
(
vo
.
getPasswd
(),
"请输入密码"
);
userService
.
modifyPasswd
(
vo
);
return
ResultVo
.
success
();
}
@ApiOperation
(
"手机号登录"
)
@PostMapping
(
value
=
"/phoneLogin"
)
public
ResultVo
<
ApiTokenVo
>
phoneLogin
(
@RequestBody
LoginVo
vo
)
{
AssertUtils
.
hasText
(
vo
.
getPhone
(),
"手机号不能为空"
);
AssertUtils
.
hasText
(
vo
.
getVerifyCode
(),
"请输入验证码"
);
return
ResultVo
.
success
(
userService
.
phoneLogin
(
vo
));
}
@ApiOperation
(
"密码登录"
)
@PostMapping
(
value
=
"/passwdLogin"
)
public
ResultVo
<
ApiTokenVo
>
passwdLogin
(
@RequestBody
LoginVo
vo
)
{
AssertUtils
.
hasText
(
vo
.
getPhone
(),
"手机号不能为空"
);
AssertUtils
.
hasText
(
vo
.
getPasswd
(),
"请输入密码"
);
return
ResultVo
.
success
(
userService
.
passwdLogin
(
vo
));
}
@ApiOperation
(
"获取用户信息"
)
@GetMapping
(
value
=
"/getUserInfo"
)
public
ResultVo
getUserInfo
(
@RequestParam
String
userId
)
{
return
ResultVo
.
success
(
userService
.
getUserInfo
(
userId
));
}
@ApiOperation
(
"获取用户列表"
)
@PostMapping
(
value
=
"/getUserList"
)
public
ResultVo
<
PageVo
<
AppUser
>>
getUserList
(
@RequestBody
FindAppUserVo
vo
)
{
return
ResultVo
.
success
(
userService
.
getUserList
(
vo
));
}
}
user-server/src/main/java/com/zq/user/dao/A
ppUser
Dao.java
→
user-server/src/main/java/com/zq/user/dao/A
ddress
Dao.java
View file @
dcef1aaf
package
com
.
zq
.
user
.
dao
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.zq.user.entity.A
ppUser
;
import
com.zq.user.entity.A
ddress
;
import
org.springframework.stereotype.Repository
;
/**
*
用户表(TAppUser
)表数据库访问层
*
(TbAddress
)表数据库访问层
*
* @author
wilmiam
* @since 202
1-07-05 10:52:18
* @author
makejava
* @since 202
2-06-27 09:53:42
*/
@Repository
public
interface
A
ppUserDao
extends
BaseMapper
<
AppUser
>
{
public
interface
A
ddressDao
extends
BaseMapper
<
Address
>
{
}
user-server/src/main/java/com/zq/user/dao/AnswerRecDao.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
dao
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.zq.user.entity.AnswerRec
;
import
org.springframework.stereotype.Repository
;
/**
* 答题记录(TbAnswerRec)表数据库访问层
*
* @author makejava
* @since 2022-06-15 16:23:57
*/
@Repository
public
interface
AnswerRecDao
extends
BaseMapper
<
AnswerRec
>
{
}
user-server/src/main/java/com/zq/user/dao/LotteryRecDao.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
dao
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.zq.user.entity.LotteryRec
;
import
org.springframework.stereotype.Repository
;
/**
* 奖品发放记录(TbPrizeSendRec)表数据库访问层
*
* @author makejava
* @since 2022-06-15 17:14:12
*/
@Repository
public
interface
LotteryRecDao
extends
BaseMapper
<
LotteryRec
>
{
}
user-server/src/main/java/com/zq/user/dao/PrizeDao.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
dao
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.zq.user.entity.LotteryRec
;
import
com.zq.user.entity.Prize
;
import
com.zq.user.vo.LotteryRecFindVo
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* 奖品定义(TbPrize)表数据库访问层
*
* @author makejava
* @since 2022-06-15 17:14:12
*/
@Repository
public
interface
PrizeDao
extends
BaseMapper
<
Prize
>
{
List
<
Prize
>
getLuckDrawPrize
();
List
<
LotteryRec
>
getLotteryRecList
(
LotteryRecFindVo
reqVo
);
}
user-server/src/main/java/com/zq/user/dao/PrizeTypeDao.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
dao
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.zq.user.entity.PrizeType
;
import
org.springframework.stereotype.Repository
;
/**
* 奖品类型(TbPrizeType)表数据库访问层
*
* @author makejava
* @since 2022-06-15 17:14:12
*/
@Repository
public
interface
PrizeTypeDao
extends
BaseMapper
<
PrizeType
>
{
}
user-server/src/main/java/com/zq/user/dao/QuestionDao.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
dao
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.zq.user.entity.Question
;
import
org.springframework.stereotype.Repository
;
/**
* 试题(TbQuestion)表数据库访问层
*
* @author makejava
* @since 2022-06-15 09:43:53
*/
@Repository
public
interface
QuestionDao
extends
BaseMapper
<
Question
>
{
}
user-server/src/main/java/com/zq/user/dao/QuestionTypeDao.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
dao
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.zq.user.entity.QuestionType
;
import
org.springframework.stereotype.Repository
;
/**
* 试题类型(TbQuestionType)表数据库访问层
*
* @author makejava
* @since 2022-06-15 09:43:53
*/
@Repository
public
interface
QuestionTypeDao
extends
BaseMapper
<
QuestionType
>
{
}
user-server/src/main/java/com/zq/user/entity/Address.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Date
;
/**
* (TbAddress)实体类
*
* @author makejava
* @since 2022-06-27 09:53:42
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName
(
value
=
"t_address"
)
public
class
Address
{
/**
* 主键
*/
@ApiModelProperty
(
"主键"
)
@TableId
(
type
=
IdType
.
ASSIGN_UUID
)
private
String
id
;
/**
* 用户ID
*/
@ApiModelProperty
(
"用户ID"
)
private
String
userId
;
/**
* 收货人
*/
@ApiModelProperty
(
"收货人"
)
private
String
consignee
;
/**
* 收货人手机号
*/
@ApiModelProperty
(
"收货人手机号"
)
private
String
consigneePhone
;
/**
* 地址
*/
@ApiModelProperty
(
"地址"
)
private
String
consigneeAddress
;
/**
* 是否为默认
*/
@ApiModelProperty
(
"是否为默认"
)
private
Boolean
isDefault
;
/**
* 是否删除
*/
@ApiModelProperty
(
"是否删除"
)
private
Boolean
isDel
;
/**
* 创建时间
*/
@ApiModelProperty
(
"创建时间"
)
private
Date
createTime
;
/**
* 更新时间
*/
@ApiModelProperty
(
"更新时间"
)
private
Date
updateTime
;
@ApiModelProperty
(
"用户昵称"
)
@TableField
(
exist
=
false
)
private
String
nickname
;
}
user-server/src/main/java/com/zq/user/entity/AnswerRec.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Date
;
/**
* 答题记录(TbAnswerRec)实体类
*
* @author makejava
* @since 2022-06-15 16:23:57
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName
(
value
=
"t_answer_rec"
)
public
class
AnswerRec
{
/**
* 主键
*/
@ApiModelProperty
(
"主键"
)
@TableId
(
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 用户ID
*/
@ApiModelProperty
(
"用户ID"
)
private
String
userId
;
/**
* 答案数组json字符串
*/
@ApiModelProperty
(
"答案数组json字符串"
)
private
String
answerList
;
/**
* 创建时间
*/
@ApiModelProperty
(
"创建时间"
)
private
Date
createTime
;
/**
* 得分
*/
@ApiModelProperty
(
"得分"
)
private
Float
score
;
}
user-server/src/main/java/com/zq/user/entity/AppUser.java
deleted
100644 → 0
View file @
8f05c6d7
package
com
.
zq
.
user
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Date
;
/**
* 用户表(TAppUser)实体类
*
* @author wilmiam
* @since 2021-07-05 10:21:25
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName
(
value
=
"t_app_user"
)
public
class
AppUser
{
/**
* id
*/
@TableId
(
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 账号
*/
@ApiModelProperty
(
"账号"
)
private
String
account
;
/**
* 手机号
*/
@ApiModelProperty
(
"手机号"
)
private
String
phone
;
/**
* 登录密码
*/
@ApiModelProperty
(
"登录密码"
)
private
String
password
;
/**
* 交易密码
*/
@ApiModelProperty
(
"交易密码"
)
private
String
dealpwd
;
/**
* 用户类型
*/
@ApiModelProperty
(
"用户类型"
)
private
Integer
userType
;
/**
* 真实姓名
*/
@ApiModelProperty
(
"真实姓名"
)
private
String
realname
;
/**
* 昵称
*/
@ApiModelProperty
(
"昵称"
)
private
String
nickname
;
/**
* 头像
*/
@ApiModelProperty
(
"头像"
)
private
String
avatar
;
/**
* 性别
*/
@ApiModelProperty
(
"性别"
)
private
String
gender
;
/**
* 年龄
*/
@ApiModelProperty
(
"年龄"
)
private
Integer
age
;
/**
* 地址
*/
@ApiModelProperty
(
"地址"
)
private
String
address
;
/**
* 邀请码
*/
@ApiModelProperty
(
"邀请码"
)
private
String
inviteCode
;
/**
* 邀请二维码连接
*/
@ApiModelProperty
(
"邀请二维码连接"
)
private
String
inviteLink
;
/**
* 上级
*/
@ApiModelProperty
(
"上级"
)
private
Long
pid
;
/**
* 所有上级ID线路,上级在左
*/
@ApiModelProperty
(
"所有上级ID线路,上级在左"
)
private
String
pids
;
/**
* 用户等级
*/
@ApiModelProperty
(
"用户等级"
)
private
Integer
level
;
/**
* 状态:0未激活 1正常 2暂停使用 3永久停号
*/
@ApiModelProperty
(
"状态:0未激活 1正常 2暂停使用 3永久停号"
)
private
Integer
status
;
/**
* 开放平台获取的unionid,解决这个同一个企业的不同APP和不同公众号之间的帐号共通
*/
@ApiModelProperty
(
"开放平台获取的unionid,解决这个同一个企业的不同APP和不同公众号之间的帐号共通"
)
private
String
unionId
;
/**
* 最后登录访问IP
*/
@ApiModelProperty
(
"最后登录访问IP"
)
private
String
accessIp
;
/**
* 区域码
*/
@ApiModelProperty
(
"区域码"
)
private
String
areaCode
;
/**
* 最后登录时间
*/
@ApiModelProperty
(
"最后登录时间"
)
private
Date
lastLoginTime
;
/**
* createTime
*/
private
Date
createTime
;
/**
* updateTime
*/
private
Date
updateTime
;
}
user-server/src/main/java/com/zq/user/entity/LotteryRec.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Date
;
/**
* 抽奖记录(LotteryRec)实体类
*
* @author makejava
* @since 2022-06-15 17:14:12
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName
(
value
=
"t_lottery_rec"
)
public
class
LotteryRec
{
/**
* id
*/
@TableId
(
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 奖品id(t_prize表中id)
*/
@ApiModelProperty
(
"奖品id(t_prize表中id)"
)
private
Long
prizeId
;
/**
* 用户id
*/
@ApiModelProperty
(
"用户id"
)
private
String
userId
;
/**
* 活动类型,1.签到 2.抽奖
*/
@ApiModelProperty
(
"活动类型,1.签到 2.抽奖"
)
private
Integer
activityType
;
/**
* 发奖状态,1为自动发奖成功,2为自动发奖失败,3为待人工派奖,4为人工派奖成功
*/
@ApiModelProperty
(
"发奖状态,0未中奖,1为自动发奖成功,2为自动发奖失败,3为待人工派奖,4为人工派奖成功"
)
private
Integer
awardStatus
;
/**
* 奖品类型ID
*/
@ApiModelProperty
(
"奖品类型ID"
)
private
Integer
prizeTypeId
;
/**
* 奖品类型名称
*/
@ApiModelProperty
(
"奖品类型名称"
)
private
String
prizeTypeName
;
/**
* 删除标记
*/
@ApiModelProperty
(
"删除标记"
)
private
Integer
active
;
/**
* 创建时间
*/
@ApiModelProperty
(
"创建时间"
)
private
Date
createTime
;
/**
* 更新时间
*/
@ApiModelProperty
(
"更新时间"
)
private
Date
updateTime
;
@ApiModelProperty
(
"用户名称"
)
@TableField
(
exist
=
false
)
private
String
nickname
;
@ApiModelProperty
(
"奖品名称"
)
@TableField
(
exist
=
false
)
private
String
prizeName
;
@ApiModelProperty
(
"奖品类型显示名称"
)
@TableField
(
exist
=
false
)
private
String
displayName
;
@TableField
(
exist
=
false
)
private
Address
address
;
}
user-server/src/main/java/com/zq/user/entity/Prize.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* 奖品定义(TbPrize)实体类
*
* @author makejava
* @since 2022-06-15 17:14:12
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName
(
value
=
"t_prize"
)
public
class
Prize
{
/**
* id
*/
@TableId
(
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 奖品类型:1现金,2优惠券,3实物,4软件内积分
*/
@ApiModelProperty
(
"奖品类型:1现金,2优惠券,3实物,4软件内积分"
)
private
Integer
prizeTypeId
;
/**
* 奖品名称
*/
@ApiModelProperty
(
"奖品名称"
)
private
String
prizeName
;
/**
* 如果是奖励实物的话,该字段存储实物图片地址,比如店铺宝贝主图src
*/
@ApiModelProperty
(
"如果是奖励实物的话,该字段存储实物图片地址,比如店铺宝贝主图src"
)
private
String
prizeImg
;
/**
* 奖品价值
*/
@ApiModelProperty
(
"奖品价值"
)
private
String
prizePrice
;
/**
* 奖品备注
*/
@ApiModelProperty
(
"奖品备注"
)
private
String
prizeMemo
;
/**
* prize_type为话费的时候填单份奖品值多少话费;type为积分的时候,填单份奖品值多少积分;type为淘金币的时候,填单份奖品值多少淘金币
*/
@ApiModelProperty
(
"prize_type为话费的时候填单份奖品值多少话费;type为积分的时候,填单份奖品值多少积分;type为淘金币的时候,填单份奖品值多少淘金币"
)
private
Integer
prizeSingleCash
;
/**
* 本次发布奖品总数,如prize_type为优惠卷的话,publish_count最大数为500
*/
@ApiModelProperty
(
"本次发布奖品总数,如prize_type为优惠卷的话,publish_count最大数为500"
)
private
Integer
publishCount
;
/**
* 奖品被领取的总数量
*/
@ApiModelProperty
(
"奖品被领取的总数量"
)
private
Integer
hadOutCount
;
/**
* 中奖概率
*/
@ApiModelProperty
(
"中奖概率"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
)
private
BigDecimal
awardRate
;
/**
* 奖品兑换开始时间
*/
@ApiModelProperty
(
"奖品兑换开始时间"
)
private
Date
startDate
;
/**
* 奖品兑换结束时间
*/
@ApiModelProperty
(
"奖品兑换结束时间"
)
private
Date
endDate
;
/**
* 是否可用。删除标记。0,可用。1,表示删除
*/
@ApiModelProperty
(
"是否可用。删除标记。0,可用。1,表示删除"
)
private
Integer
active
;
/**
* 创建时间
*/
@ApiModelProperty
(
"创建时间"
)
private
Date
createTime
;
/**
* updateTime
*/
private
Date
updateTime
;
@ApiModelProperty
(
"奖品类型名称"
)
@TableField
(
exist
=
false
)
private
String
prizeTypeName
;
}
user-server/src/main/java/com/zq/user/entity/PrizeType.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Date
;
/**
* 奖品类型(TbPrizeType)实体类
*
* @author makejava
* @since 2022-06-15 17:14:12
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName
(
value
=
"t_prize_type"
)
public
class
PrizeType
{
/**
* id
*/
@TableId
(
type
=
IdType
.
AUTO
)
private
Integer
id
;
/**
* typeName
*/
private
String
typeName
;
/**
* typeCode
*/
private
String
typeCode
;
/**
* 显示名称
*/
@ApiModelProperty
(
"显示名称"
)
private
String
displayName
;
/**
* active
*/
@ApiModelProperty
(
"0-可用,1-删除"
)
private
Integer
active
;
/**
* 是否中奖
*/
@ApiModelProperty
(
"是否中奖"
)
private
Boolean
isWinPrize
;
/**
* createTime
*/
private
Date
createTime
;
/**
* updateTime
*/
private
Date
updateTime
;
}
user-server/src/main/java/com/zq/user/entity/Question.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Date
;
/**
* 试题(TbQuestion)实体类
*
* @author makejava
* @since 2022-06-15 09:43:53
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName
(
value
=
"t_question"
)
public
class
Question
{
/**
* id
*/
@TableId
(
type
=
IdType
.
AUTO
)
private
Integer
id
;
/**
* 题目
*/
@ApiModelProperty
(
"题目"
)
private
String
subject
;
/**
* content
*/
private
String
content
;
/**
* 题型
*/
@ApiModelProperty
(
"题型"
)
private
Integer
questionTypeId
;
/**
* 试题考试时间
*/
@ApiModelProperty
(
"试题考试时间"
)
private
Integer
duration
;
/**
* points
*/
private
Integer
points
;
/**
* 班组ID
*/
@ApiModelProperty
(
"班组ID"
)
private
Integer
groupId
;
/**
* 试题可见性
*/
@ApiModelProperty
(
"试题可见性"
)
private
Integer
isVisible
;
/**
* createTime
*/
private
Date
createTime
;
/**
* 创建者
*/
@ApiModelProperty
(
"创建者"
)
private
String
creator
;
/**
* lastModify
*/
private
Date
lastModify
;
/**
* answer
*/
@ApiModelProperty
(
"答案"
)
private
String
answer
;
/**
* exposeTimes
*/
private
Integer
exposeTimes
;
/**
* rightTimes
*/
private
Integer
rightTimes
;
/**
* wrongTimes
*/
private
Integer
wrongTimes
;
/**
* difficulty
*/
private
Integer
difficulty
;
/**
* analysis
*/
@ApiModelProperty
(
"解析"
)
private
String
analysis
;
/**
* reference
*/
private
String
reference
;
/**
* examingPoint
*/
private
String
examingPoint
;
/**
* keyword
*/
private
String
keyword
;
@ApiModelProperty
(
"题型名称"
)
@TableField
(
exist
=
false
)
private
String
questionTypeName
;
}
user-server/src/main/java/com/zq/user/entity/QuestionType.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* 试题类型(TbQuestionType)实体类
*
* @author makejava
* @since 2022-06-15 09:43:53
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName
(
value
=
"t_question_type"
)
public
class
QuestionType
{
/**
* id
*/
@TableId
(
type
=
IdType
.
AUTO
)
private
Integer
id
;
/**
* name
*/
private
String
name
;
/**
* subjective
*/
private
Integer
subjective
;
}
user-server/src/main/java/com/zq/user/service/AddressService.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
service
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.date.DateUtil
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.zq.common.utils.AssertUtils
;
import
com.zq.common.utils.PagingUtils
;
import
com.zq.common.vo.PageVo
;
import
com.zq.user.dao.AddressDao
;
import
com.zq.user.dao.WxUserDao
;
import
com.zq.user.entity.Address
;
import
com.zq.user.entity.WxUser
;
import
com.zq.user.vo.AddressFindVo
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
java.util.Set
;
/**
* @author wilmiam
* @since 2022/6/27 10:02
*/
@Slf4j
@RequiredArgsConstructor
@Service
public
class
AddressService
{
private
final
AddressDao
addressDao
;
private
final
WxUserDao
wxUserDao
;
public
PageVo
<
Address
>
getAddressList
(
AddressFindVo
vo
)
{
PageVo
<
Address
>
paging
=
PagingUtils
.
paging
(
vo
,
addressDao
,
Address
.
class
);
return
paging
;
}
public
void
addAddress
(
Address
vo
)
{
vo
.
setCreateTime
(
DateUtil
.
date
());
vo
.
setUpdateTime
(
DateUtil
.
date
());
addressDao
.
insert
(
vo
);
if
(
vo
.
getIsDefault
())
{
addressDao
.
update
(
Address
.
builder
().
isDefault
(
false
).
updateTime
(
DateUtil
.
date
()).
build
(),
Wrappers
.
lambdaUpdate
(
Address
.
class
)
.
eq
(
Address:
:
getUserId
,
vo
.
getUserId
())
.
notIn
(
Address:
:
getId
,
vo
.
getId
()));
}
}
public
void
editAddress
(
Address
vo
)
{
Address
address
=
addressDao
.
selectById
(
vo
.
getId
());
AssertUtils
.
notNull
(
address
,
"地址ID不存在"
);
BeanUtil
.
copyProperties
(
vo
,
address
,
"id"
,
"createTime"
);
address
.
setUpdateTime
(
DateUtil
.
date
());
addressDao
.
updateById
(
address
);
if
(
vo
.
getIsDefault
())
{
addressDao
.
update
(
Address
.
builder
().
isDefault
(
false
).
updateTime
(
DateUtil
.
date
()).
build
(),
Wrappers
.
lambdaUpdate
(
Address
.
class
)
.
eq
(
Address:
:
getUserId
,
address
.
getUserId
())
.
notIn
(
Address:
:
getId
,
vo
.
getId
()));
}
}
public
void
delAddress
(
Set
<
String
>
ids
)
{
addressDao
.
update
(
Address
.
builder
().
isDel
(
true
).
updateTime
(
DateUtil
.
date
()).
build
(),
Wrappers
.
lambdaUpdate
(
Address
.
class
)
.
in
(
Address:
:
getId
,
ids
));
}
public
Object
getAddress
(
String
addressId
)
{
Address
address
=
addressDao
.
selectById
(
addressId
);
AssertUtils
.
notNull
(
address
,
"地址不存在"
);
WxUser
wxUser
=
wxUserDao
.
selectById
(
address
.
getUserId
());
address
.
setNickname
(
wxUser
.
getNickname
());
return
address
;
}
public
Address
getDefaultAddress
(
String
userId
)
{
return
addressDao
.
selectOne
(
Wrappers
.
lambdaQuery
(
Address
.
builder
().
userId
(
userId
).
isDefault
(
true
).
isDel
(
false
).
build
()));
}
}
user-server/src/main/java/com/zq/user/service/PrizeService.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
service
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.RandomUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.zq.common.utils.AssertUtils
;
import
com.zq.common.utils.PagingUtils
;
import
com.zq.common.vo.PageVo
;
import
com.zq.user.dao.LotteryRecDao
;
import
com.zq.user.dao.PrizeDao
;
import
com.zq.user.dao.PrizeTypeDao
;
import
com.zq.user.entity.Address
;
import
com.zq.user.entity.LotteryRec
;
import
com.zq.user.entity.Prize
;
import
com.zq.user.entity.PrizeType
;
import
com.zq.user.vo.LotteryRecFindVo
;
import
com.zq.user.vo.PrizeFindVo
;
import
com.zq.user.vo.PrizeTypeFindVo
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
/**
* @author wilmiam
* @since 2022/6/15 17:06
*/
@Slf4j
@RequiredArgsConstructor
@Service
public
class
PrizeService
{
private
final
PrizeDao
prizeDao
;
private
final
LotteryRecDao
lotteryRecDao
;
private
final
PrizeTypeDao
prizeTypeDao
;
private
final
AddressService
addressService
;
public
List
<
PrizeType
>
getAllPrizeType
()
{
return
prizeTypeDao
.
selectList
(
Wrappers
.
lambdaQuery
(
PrizeType
.
class
)
.
eq
(
PrizeType:
:
getActive
,
0
)
.
orderByAsc
(
PrizeType:
:
getId
));
}
public
PageVo
<
Prize
>
getPrizeList
(
PrizeFindVo
vo
)
{
LambdaQueryWrapper
<
Prize
>
lambdaQuery
=
Wrappers
.
lambdaQuery
(
Prize
.
class
);
lambdaQuery
.
orderByDesc
(
Prize:
:
getCreateTime
);
if
(
StrUtil
.
isNotBlank
(
vo
.
getPrizeName
()))
{
lambdaQuery
.
like
(
Prize:
:
getPrizeName
,
vo
.
getPrizeName
());
}
PageVo
<
Prize
>
paging
=
PagingUtils
.
paging
(
vo
,
prizeDao
,
lambdaQuery
,
Prize
.
class
);
paging
.
getRows
().
forEach
(
prize
->
{
if
(
prize
.
getPrizeTypeId
()
!=
null
)
{
PrizeType
prizeType
=
prizeTypeDao
.
selectById
(
prize
.
getPrizeTypeId
());
prize
.
setPrizeTypeName
(
prizeType
.
getTypeName
());
}
});
return
paging
;
}
public
void
addPrize
(
Prize
vo
)
{
vo
.
setAwardRate
(
vo
.
getAwardRate
()
==
null
?
BigDecimal
.
ZERO
:
vo
.
getAwardRate
());
judgeRate
(
vo
.
getAwardRate
());
vo
.
setPublishCount
(
vo
.
getPublishCount
()
==
null
?
0
:
vo
.
getPublishCount
());
vo
.
setHadOutCount
(
0
);
vo
.
setCreateTime
(
DateUtil
.
date
());
vo
.
setUpdateTime
(
DateUtil
.
date
());
prizeDao
.
insert
(
vo
);
}
public
void
editPrize
(
Prize
vo
)
{
Prize
prize
=
prizeDao
.
selectById
(
vo
.
getId
());
AssertUtils
.
notNull
(
prize
,
"奖品不存在"
);
vo
.
setAwardRate
(
vo
.
getAwardRate
()
==
null
?
BigDecimal
.
ZERO
:
vo
.
getAwardRate
());
judgeRate
(
vo
.
getAwardRate
());
BeanUtil
.
copyProperties
(
vo
,
prize
,
"id"
);
prize
.
setUpdateTime
(
DateUtil
.
date
());
prizeDao
.
updateById
(
prize
);
}
private
void
judgeRate
(
BigDecimal
cuurRate
)
{
LambdaQueryWrapper
<
Prize
>
lambdaQuery
=
Wrappers
.
lambdaQuery
(
Prize
.
builder
().
active
(
0
).
build
());
List
<
Prize
>
prizeList
=
prizeDao
.
selectList
(
lambdaQuery
);
BigDecimal
rate
=
prizeList
.
stream
()
.
filter
(
p
->
p
.
getPublishCount
()
-
p
.
getHadOutCount
()
>
0
)
.
map
(
Prize:
:
getAwardRate
)
.
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
BigDecimal
v
=
BigDecimal
.
ONE
.
subtract
(
rate
).
multiply
(
BigDecimal
.
valueOf
(
100
)).
setScale
(
2
,
RoundingMode
.
HALF_UP
);
AssertUtils
.
isTrue
(
rate
.
add
(
cuurRate
).
compareTo
(
BigDecimal
.
ONE
)
>
0
,
"中奖概率总和大于100%,剩余"
+
v
.
toPlainString
()
+
"%概率,请重新设定中奖概率!"
);
}
public
void
delPrize
(
Set
<
String
>
ids
)
{
prizeDao
.
deleteBatchIds
(
ids
);
}
public
Prize
getPrize
(
String
prizeId
)
{
return
prizeDao
.
selectById
(
prizeId
);
}
public
Prize
luckDraw
(
String
userId
)
{
List
<
Prize
>
prizeList
=
prizeDao
.
getLuckDrawPrize
();
prizeList
=
prizeList
.
stream
()
.
filter
(
prize
->
prize
.
getPublishCount
()
-
prize
.
getHadOutCount
()
>
0
)
.
collect
(
Collectors
.
toList
());
List
<
Long
>
prizeIdList
=
new
ArrayList
<>();
for
(
Prize
prize
:
prizeList
)
{
BigDecimal
count
=
prize
.
getAwardRate
().
multiply
(
BigDecimal
.
valueOf
(
100
));
for
(
int
i
=
0
;
i
<
count
.
intValue
();
i
++)
{
prizeIdList
.
add
(
prize
.
getId
());
}
}
for
(
int
i
=
prizeIdList
.
size
();
i
<
100
;
i
++)
{
prizeIdList
.
add
(
0L
);
}
Collections
.
shuffle
(
prizeIdList
);
int
index
=
RandomUtil
.
randomInt
(
0
,
prizeIdList
.
size
());
Long
prizeId
=
prizeIdList
.
get
(
index
);
if
(
prizeId
==
0
)
{
LotteryRec
build
=
LotteryRec
.
builder
()
.
prizeId
(
prizeId
)
.
userId
(
userId
)
.
activityType
(
2
)
.
awardStatus
(
0
)
.
active
(
0
)
.
prizeTypeName
(
"未中奖!"
)
.
createTime
(
DateUtil
.
date
())
.
updateTime
(
DateUtil
.
date
())
.
build
();
lotteryRecDao
.
insert
(
build
);
return
null
;
}
Prize
prize
=
prizeDao
.
selectById
(
prizeId
);
prize
.
setHadOutCount
(
prize
.
getHadOutCount
()
+
1
);
prize
.
setUpdateTime
(
DateUtil
.
date
());
prizeDao
.
updateById
(
prize
);
PrizeType
prizeType
=
prizeTypeDao
.
selectById
(
prize
.
getPrizeTypeId
());
prize
.
setPrizeTypeName
(
prizeType
.
getTypeName
());
LotteryRec
build
=
LotteryRec
.
builder
()
.
prizeId
(
prizeId
)
.
userId
(
userId
)
.
activityType
(
2
)
.
awardStatus
(
3
)
.
prizeTypeId
(
prize
.
getPrizeTypeId
())
.
prizeTypeName
(
prizeType
.
getTypeName
())
.
active
(
0
)
.
createTime
(
DateUtil
.
date
())
.
updateTime
(
DateUtil
.
date
())
.
build
();
lotteryRecDao
.
insert
(
build
);
return
prize
;
}
public
PageVo
<
PrizeType
>
getPrizeTypeList
(
PrizeTypeFindVo
vo
)
{
LambdaQueryWrapper
<
PrizeType
>
lambdaQuery
=
Wrappers
.
lambdaQuery
(
PrizeType
.
class
);
lambdaQuery
.
orderByDesc
(
PrizeType:
:
getCreateTime
);
if
(
StrUtil
.
isNotBlank
(
vo
.
getTypeName
()))
{
lambdaQuery
.
like
(
PrizeType:
:
getTypeName
,
vo
.
getTypeName
());
}
if
(
StrUtil
.
isNotBlank
(
vo
.
getDisplayName
()))
{
lambdaQuery
.
like
(
PrizeType:
:
getDisplayName
,
vo
.
getDisplayName
());
}
PageVo
<
PrizeType
>
paging
=
PagingUtils
.
paging
(
vo
,
prizeTypeDao
,
lambdaQuery
,
PrizeType
.
class
);
return
paging
;
}
public
void
addPrizeType
(
PrizeType
vo
)
{
if
(
vo
.
getActive
()
==
null
)
{
vo
.
setActive
(
0
);
}
vo
.
setCreateTime
(
DateUtil
.
date
());
vo
.
setUpdateTime
(
DateUtil
.
date
());
prizeTypeDao
.
insert
(
vo
);
}
public
void
editPrizeType
(
PrizeType
vo
)
{
PrizeType
prizeType
=
prizeTypeDao
.
selectById
(
vo
.
getId
());
AssertUtils
.
notNull
(
prizeType
,
"奖品类型不存在"
);
BeanUtil
.
copyProperties
(
vo
,
prizeType
,
"id"
,
"createTime"
);
prizeType
.
setUpdateTime
(
DateUtil
.
date
());
prizeTypeDao
.
updateById
(
prizeType
);
}
public
void
delPrizeType
(
Set
<
String
>
ids
)
{
prizeTypeDao
.
deleteBatchIds
(
ids
);
}
public
PrizeType
getPrizeType
(
String
prizeTypeId
)
{
return
prizeTypeDao
.
selectById
(
prizeTypeId
);
}
public
PageVo
<
LotteryRec
>
getLotteryRecList
(
LotteryRecFindVo
vo
)
{
PageVo
<
LotteryRec
>
paging
=
PagingUtils
.
paging
(
vo
,
prizeDao:
:
getLotteryRecList
);
paging
.
getRows
().
forEach
(
lotteryRec
->
{
Address
defaultAddress
=
addressService
.
getDefaultAddress
(
lotteryRec
.
getUserId
());
lotteryRec
.
setAddress
(
defaultAddress
);
});
return
paging
;
}
public
void
confirmAward
(
Long
lotteryRecId
)
{
LotteryRec
lotteryRec
=
lotteryRecDao
.
selectById
(
lotteryRecId
);
AssertUtils
.
notNull
(
lotteryRec
,
"中间记录不存在"
);
lotteryRec
.
setAwardStatus
(
4
);
lotteryRec
.
setUpdateTime
(
DateUtil
.
date
());
lotteryRecDao
.
updateById
(
lotteryRec
);
}
}
user-server/src/main/java/com/zq/user/service/QuestionService.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
service
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.json.JSONArray
;
import
cn.hutool.json.JSONObject
;
import
cn.hutool.json.JSONUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.zq.common.utils.AssertUtils
;
import
com.zq.common.utils.PagingUtils
;
import
com.zq.common.vo.PageVo
;
import
com.zq.user.dao.AnswerRecDao
;
import
com.zq.user.dao.QuestionDao
;
import
com.zq.user.dao.QuestionTypeDao
;
import
com.zq.user.entity.AnswerRec
;
import
com.zq.user.entity.Question
;
import
com.zq.user.entity.QuestionType
;
import
com.zq.user.vo.QuestionFindVo
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.util.*
;
/**
* @author wilmiam
* @since 2022/6/15 9:52
*/
@Slf4j
@RequiredArgsConstructor
@Service
public
class
QuestionService
{
private
final
QuestionDao
questionDao
;
private
final
QuestionTypeDao
questionTypeDao
;
private
final
AnswerRecDao
answerRecDao
;
public
Object
questionList
(
QuestionFindVo
vo
)
{
LambdaQueryWrapper
<
Question
>
lambdaQuery
=
Wrappers
.
lambdaQuery
(
Question
.
class
);
if
(
vo
.
getGroupId
()
!=
null
)
{
lambdaQuery
.
eq
(
Question:
:
getGroupId
,
vo
.
getGroupId
());
}
lambdaQuery
.
orderByAsc
(
Question:
:
getId
);
return
questionDao
.
selectList
(
lambdaQuery
);
}
public
PageVo
<
Question
>
getQuestionList
(
QuestionFindVo
vo
)
{
LambdaQueryWrapper
<
Question
>
lambdaQuery
=
Wrappers
.
lambdaQuery
(
Question
.
class
);
lambdaQuery
.
orderByDesc
(
Question:
:
getCreateTime
);
if
(
StrUtil
.
isNotBlank
(
vo
.
getContent
()))
{
lambdaQuery
.
like
(
Question:
:
getContent
,
vo
.
getContent
());
}
if
(
StrUtil
.
isNotBlank
(
vo
.
getKeyword
()))
{
lambdaQuery
.
like
(
Question:
:
getKeyword
,
vo
.
getKeyword
());
}
PageVo
<
Question
>
paging
=
PagingUtils
.
paging
(
vo
,
questionDao
,
lambdaQuery
,
Question
.
class
);
paging
.
getRows
().
forEach
(
question
->
{
if
(
question
.
getQuestionTypeId
()
!=
null
)
{
QuestionType
questionType
=
questionTypeDao
.
selectById
(
question
.
getQuestionTypeId
());
question
.
setQuestionTypeName
(
questionType
.
getName
());
}
});
return
paging
;
}
public
void
addQuestion
(
Question
vo
)
{
vo
.
setCreateTime
(
DateUtil
.
date
());
questionDao
.
insert
(
vo
);
}
public
void
editQuestion
(
Question
vo
)
{
Question
question
=
questionDao
.
selectById
(
vo
.
getId
());
AssertUtils
.
notNull
(
question
,
"题目不存在"
);
question
.
setSubject
(
vo
.
getSubject
());
question
.
setContent
(
vo
.
getContent
());
question
.
setAnalysis
(
vo
.
getAnalysis
());
question
.
setAnswer
(
vo
.
getAnswer
());
question
.
setQuestionTypeId
(
vo
.
getQuestionTypeId
());
questionDao
.
updateById
(
question
);
}
public
void
delQuestion
(
Set
<
String
>
ids
)
{
questionDao
.
deleteBatchIds
(
ids
);
}
public
Question
getQuestion
(
String
questionId
)
{
Question
question
=
questionDao
.
selectById
(
questionId
);
if
(
question
.
getQuestionTypeId
()
!=
null
)
{
QuestionType
questionType
=
questionTypeDao
.
selectById
(
question
.
getQuestionTypeId
());
question
.
setQuestionTypeName
(
questionType
.
getName
());
}
return
question
;
}
public
List
<
QuestionType
>
getAllQuestionType
()
{
return
questionTypeDao
.
selectList
(
null
);
}
public
Object
answer
(
AnswerRec
vo
)
{
// 正确题数
int
correct
=
0
;
// 错题
List
<
Map
<
String
,
Object
>>
wrongQuestionList
=
new
ArrayList
<>();
String
answerObjList
=
vo
.
getAnswerList
();
JSONArray
objects
=
JSONUtil
.
parseArray
(
answerObjList
);
for
(
Object
object
:
objects
)
{
JSONObject
obj
=
JSONUtil
.
parseObj
(
object
);
String
questionId
=
obj
.
getStr
(
"questionId"
);
// 用户所选答案
JSONArray
answerArr
=
obj
.
getJSONArray
(
"answer"
);
Question
question
=
questionDao
.
selectById
(
questionId
);
String
answer
=
question
.
getAnswer
();
// 正确答案
List
<
String
>
answerList
=
StrUtil
.
split
(
answer
,
','
);
for
(
Object
o
:
answerArr
)
{
String
s
=
Convert
.
toStr
(
o
,
""
);
// 删除所选答案,正确答案中还有答案就说明答错了
boolean
remove
=
answerList
.
remove
(
s
);
if
(!
remove
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"subject"
,
question
.
getSubject
());
map
.
put
(
"answer"
,
question
.
getAnswer
());
map
.
put
(
"analysis"
,
question
.
getAnalysis
());
map
.
put
(
"content"
,
question
.
getContent
());
map
.
put
(
"choiceAnswer"
,
answer
);
wrongQuestionList
.
add
(
map
);
break
;
}
}
if
(
CollUtil
.
isEmpty
(
answerList
))
{
correct
++;
}
}
// 题数
int
count
=
objects
.
size
();
BigDecimal
score
=
BigDecimal
.
valueOf
(
100
)
.
divide
(
BigDecimal
.
valueOf
(
count
),
2
,
RoundingMode
.
HALF_UP
)
.
multiply
(
BigDecimal
.
valueOf
(
correct
));
vo
.
setScore
(
score
.
setScale
(
2
,
RoundingMode
.
HALF_UP
).
floatValue
());
vo
.
setCreateTime
(
DateUtil
.
date
());
answerRecDao
.
insert
(
vo
);
Map
<
String
,
Object
>
returnData
=
new
HashMap
<>();
returnData
.
put
(
"wrongQuestionList"
,
wrongQuestionList
);
returnData
.
put
(
"score"
,
vo
.
getScore
());
return
returnData
;
}
}
user-server/src/main/java/com/zq/user/service/UserService.java
View file @
dcef1aaf
This diff is collapsed.
Click to expand it.
user-server/src/main/java/com/zq/user/service/WxUserService.java
View file @
dcef1aaf
...
...
@@ -8,6 +8,7 @@ import cn.hutool.core.util.StrUtil;
import
cn.hutool.extra.servlet.ServletUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.jfinal.weixin.sdk.api.ApiResult
;
import
com.jfinal.wxaapp.WxaConfig
;
...
...
@@ -17,13 +18,16 @@ import com.zq.common.config.redis.RedisUtils;
import
com.zq.common.config.security.ApiTokenUtils
;
import
com.zq.common.http.HttpRequestUtils
;
import
com.zq.common.utils.AssertUtils
;
import
com.zq.common.utils.PagingUtils
;
import
com.zq.common.vo.ApiTokenVo
;
import
com.zq.common.vo.PageVo
;
import
com.zq.user.dao.WxAppAccountDao
;
import
com.zq.user.dao.WxUserDao
;
import
com.zq.user.entity.WxAppAccount
;
import
com.zq.user.entity.WxUser
;
import
com.zq.user.manager.UserCacheKeys
;
import
com.zq.user.utils.AesCbcUtil
;
import
com.zq.user.vo.FindUserVo
;
import
com.zq.user.vo.WxLoginVo
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -220,4 +224,34 @@ public class WxUserService {
return
wxUser
;
}
/**
* 获取用户列表
*
* @param vo
* @return
*/
// @Cacheable(key = "'list:' + #vo")
public
PageVo
<
WxUser
>
getUserList
(
FindUserVo
vo
)
{
LambdaQueryWrapper
<
WxUser
>
lambdaQuery
=
Wrappers
.
lambdaQuery
(
WxUser
.
class
);
lambdaQuery
.
orderByAsc
(
WxUser:
:
getId
);
if
(
StrUtil
.
isNotBlank
(
vo
.
getUsername
()))
{
lambdaQuery
.
like
(
WxUser:
:
getUsername
,
vo
.
getUsername
());
}
if
(
StrUtil
.
isNotBlank
(
vo
.
getPhone
()))
{
lambdaQuery
.
like
(
WxUser:
:
getPhone
,
vo
.
getPhone
());
}
if
(
StrUtil
.
isNotBlank
(
vo
.
getNickname
()))
{
lambdaQuery
.
like
(
WxUser:
:
getNickname
,
vo
.
getNickname
());
}
if
(
StrUtil
.
isNotBlank
(
vo
.
getRealname
()))
{
lambdaQuery
.
like
(
WxUser:
:
getRealname
,
vo
.
getRealname
());
}
if
(
StrUtil
.
isNotBlank
(
vo
.
getIdCard
()))
{
lambdaQuery
.
like
(
WxUser:
:
getIdCard
,
vo
.
getIdCard
());
}
return
PagingUtils
.
paging
(
vo
,
wxUserDao
,
lambdaQuery
,
WxUser
.
class
);
}
}
user-server/src/main/java/com/zq/user/vo/AddressFindVo.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
vo
;
import
com.zq.common.vo.PageReqVo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author wilmiam
* @since 2022/6/27 10:04
*/
@Data
public
class
AddressFindVo
extends
PageReqVo
{
/**
* 主键
*/
@ApiModelProperty
(
"主键"
)
private
String
id
;
/**
* 用户ID
*/
@ApiModelProperty
(
"用户ID"
)
private
String
userId
;
/**
* 收货人
*/
@ApiModelProperty
(
"收货人"
)
private
String
consignee
;
/**
* 收货人手机号
*/
@ApiModelProperty
(
"收货人手机号"
)
private
String
consigneePhone
;
/**
* 地址
*/
@ApiModelProperty
(
"地址"
)
private
String
consigneeAddress
;
/**
* 是否为默认
*/
@ApiModelProperty
(
"是否为默认"
)
private
Boolean
isDefault
;
/**
* 是否删除
*/
@ApiModelProperty
(
"是否删除"
)
private
Boolean
isDel
;
/**
* 创建时间
*/
@ApiModelProperty
(
"创建时间"
)
private
Date
createTime
;
/**
* 更新时间
*/
@ApiModelProperty
(
"更新时间"
)
private
Date
updateTime
;
}
user-server/src/main/java/com/zq/user/vo/Find
App
UserVo.java
→
user-server/src/main/java/com/zq/user/vo/FindUserVo.java
View file @
dcef1aaf
...
...
@@ -4,6 +4,8 @@ import com.zq.common.vo.PageReqVo;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* 用户表(TAppUser)实体类
*
...
...
@@ -11,18 +13,13 @@ import lombok.Data;
* @since 2021-07-05 10:21:25
*/
@Data
public
class
FindAppUserVo
extends
PageReqVo
{
/**
* id
*/
private
Long
id
;
public
class
FindUserVo
extends
PageReqVo
{
/**
*
账号
*
用户ID
*/
@ApiModelProperty
(
"
账号
"
)
private
String
account
;
@ApiModelProperty
(
"
用户ID
"
)
private
String
id
;
/**
* 手机号
...
...
@@ -31,22 +28,22 @@ public class FindAppUserVo extends PageReqVo {
private
String
phone
;
/**
*
登录密码
*
账号
*/
@ApiModelProperty
(
"
登录密码
"
)
private
String
password
;
@ApiModelProperty
(
"
账号
"
)
private
String
username
;
/**
*
交易
密码
*
登录
密码
*/
@ApiModelProperty
(
"
交易
密码"
)
private
String
dealp
wd
;
@ApiModelProperty
(
"
登录
密码"
)
private
String
pass
wd
;
/**
*
用户类型
*
昵称
*/
@ApiModelProperty
(
"
用户类型
"
)
private
Integer
userTyp
e
;
@ApiModelProperty
(
"
昵称
"
)
private
String
nicknam
e
;
/**
* 真实姓名
...
...
@@ -55,10 +52,22 @@ public class FindAppUserVo extends PageReqVo {
private
String
realname
;
/**
*
昵称
*
身份证号码
*/
@ApiModelProperty
(
"昵称"
)
private
String
nickname
;
@ApiModelProperty
(
"身份证号码"
)
private
String
idCard
;
/**
* 头像
*/
@ApiModelProperty
(
"头像"
)
private
String
avatar
;
/**
* 年龄
*/
@ApiModelProperty
(
"年龄"
)
private
Integer
age
;
/**
* 性别
...
...
@@ -73,28 +82,22 @@ public class FindAppUserVo extends PageReqVo {
private
String
address
;
/**
* 邀请码
*/
@ApiModelProperty
(
"邀请码"
)
private
String
inviteCode
;
/**
* 上级
* 状态:0未激活 1正常 2暂停使用 3永久停号
*/
@ApiModelProperty
(
"
上级
"
)
private
Long
pid
;
@ApiModelProperty
(
"
状态:0未激活 1正常 2暂停使用 3永久停号
"
)
private
Integer
state
;
/**
*
用户等级
*
微信APPID
*/
@ApiModelProperty
(
"
用户等级
"
)
private
Integer
level
;
@ApiModelProperty
(
"
微信APPID
"
)
private
String
appId
;
/**
*
状态:0未激活 1正常 2暂停使用 3永久停号
*
微信openId
*/
@ApiModelProperty
(
"
状态:0未激活 1正常 2暂停使用 3永久停号
"
)
private
Integer
status
;
@ApiModelProperty
(
"
微信openId
"
)
private
String
openId
;
/**
* 开放平台获取的unionid,解决这个同一个企业的不同APP和不同公众号之间的帐号共通
...
...
@@ -102,4 +105,28 @@ public class FindAppUserVo extends PageReqVo {
@ApiModelProperty
(
"开放平台获取的unionid,解决这个同一个企业的不同APP和不同公众号之间的帐号共通"
)
private
String
unionId
;
/**
* 最后登录访问IP
*/
@ApiModelProperty
(
"最后登录访问IP"
)
private
String
accessIp
;
/**
* 最后登录时间
*/
@ApiModelProperty
(
"最后登录时间"
)
private
Date
lastLoginTime
;
/**
* 创建时间
*/
@ApiModelProperty
(
"创建时间"
)
private
Date
createTime
;
/**
* 更新时间
*/
@ApiModelProperty
(
"更新时间"
)
private
Date
updateTime
;
}
user-server/src/main/java/com/zq/user/vo/LotteryRecFindVo.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
vo
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.zq.common.vo.PageReqVo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Date
;
/**
* 抽奖记录(LotteryRec)实体类
*
* @author makejava
* @since 2022-06-15 17:14:12
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
LotteryRecFindVo
extends
PageReqVo
{
/**
* id
*/
private
Long
id
;
/**
* 奖品id(t_prize表中id)
*/
@ApiModelProperty
(
"奖品id(t_prize表中id)"
)
private
Long
prizeId
;
/**
* 用户id
*/
@ApiModelProperty
(
"用户id"
)
private
String
userId
;
/**
* 活动类型,1.签到 2.抽奖
*/
@ApiModelProperty
(
"活动类型,1.签到 2.抽奖"
)
private
Integer
activityType
;
/**
* 发奖状态,1为自动发奖成功,2为自动发奖失败,3为待人工派奖,4为人工派奖成功
*/
@ApiModelProperty
(
"发奖状态,0未中奖,1为自动发奖成功,2为自动发奖失败,3为待人工派奖,4为人工派奖成功"
)
private
Integer
awardStatus
;
/**
* 奖品类型
*/
@ApiModelProperty
(
"奖品类型"
)
private
Integer
prizeTypeId
;
/**
* 奖品类型名称
*/
@ApiModelProperty
(
"奖品类型名称"
)
private
String
prizeTypeName
;
/**
* 删除标记
*/
@ApiModelProperty
(
"删除标记"
)
private
Integer
active
;
/**
* 创建时间
*/
@ApiModelProperty
(
"创建时间"
)
private
Date
createTime
;
/**
* 更新时间
*/
@ApiModelProperty
(
"更新时间"
)
private
Date
updateTime
;
@ApiModelProperty
(
"用户名称"
)
@TableField
(
exist
=
false
)
private
String
nickname
;
@ApiModelProperty
(
"奖品名称"
)
@TableField
(
exist
=
false
)
private
String
prizeName
;
@ApiModelProperty
(
"奖品类型显示名称"
)
@TableField
(
exist
=
false
)
private
String
displayName
;
}
user-server/src/main/java/com/zq/user/vo/PrizeFindVo.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.zq.common.vo.PageReqVo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @author wilmiam
* @since 2022/6/15 17:18
*/
@Data
public
class
PrizeFindVo
extends
PageReqVo
{
/**
* id
*/
private
Long
id
;
/**
* 奖品类型:1现金,2优惠券,3实物,4软件内积分
*/
@ApiModelProperty
(
"奖品类型:1现金,2优惠券,3实物,4软件内积分"
)
private
Long
prizeTypeId
;
/**
* 奖品名称
*/
@ApiModelProperty
(
"奖品名称"
)
private
String
prizeName
;
/**
* 如果是奖励实物的话,该字段存储实物图片地址,比如店铺宝贝主图src
*/
@ApiModelProperty
(
"如果是奖励实物的话,该字段存储实物图片地址,比如店铺宝贝主图src"
)
private
String
prizeImg
;
/**
* 奖品价值
*/
@ApiModelProperty
(
"奖品价值"
)
private
String
prizePrice
;
/**
* 奖品备注
*/
@ApiModelProperty
(
"奖品备注"
)
private
String
prizeMemo
;
/**
* prize_type为话费的时候填单份奖品值多少话费;type为积分的时候,填单份奖品值多少积分;type为淘金币的时候,填单份奖品值多少淘金币
*/
@ApiModelProperty
(
"prize_type为话费的时候填单份奖品值多少话费;type为积分的时候,填单份奖品值多少积分;type为淘金币的时候,填单份奖品值多少淘金币"
)
private
Integer
prizeSingleCash
;
/**
* 本次发布奖品总数,如prize_type为优惠卷的话,publish_count最大数为500
*/
@ApiModelProperty
(
"本次发布奖品总数,如prize_type为优惠卷的话,publish_count最大数为500"
)
private
Integer
publishCount
;
/**
* 奖品被领取的总数量
*/
@ApiModelProperty
(
"奖品被领取的总数量"
)
private
Integer
hadOutCount
;
/**
* 中奖概率
*/
@ApiModelProperty
(
"中奖概率"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
)
private
BigDecimal
awardRate
;
/**
* 奖品兑换开始时间
*/
@ApiModelProperty
(
"奖品兑换开始时间"
)
private
Date
startDate
;
/**
* 奖品兑换结束时间
*/
@ApiModelProperty
(
"奖品兑换结束时间"
)
private
Date
endDate
;
/**
* 是否可用。删除标记。0,可用。1,表示删除
*/
@ApiModelProperty
(
"是否可用。删除标记。0,可用。1,表示删除"
)
private
Integer
active
;
/**
* 创建时间
*/
@ApiModelProperty
(
"创建时间"
)
private
Date
createTime
;
/**
* updateTime
*/
private
Date
updateTime
;
}
user-server/src/main/java/com/zq/user/vo/PrizeTypeFindVo.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
vo
;
import
com.zq.common.vo.PageReqVo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Date
;
/**
* 奖品类型(TbPrizeType)实体类
*
* @author makejava
* @since 2022-06-15 17:14:12
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
PrizeTypeFindVo
extends
PageReqVo
{
/**
* id
*/
private
Integer
id
;
/**
* typeName
*/
private
String
typeName
;
/**
* typeCode
*/
private
String
typeCode
;
/**
* 显示名称
*/
@ApiModelProperty
(
"显示名称"
)
private
String
displayName
;
/**
* active
*/
private
Integer
active
;
/**
* 是否中奖
*/
@ApiModelProperty
(
"是否中奖"
)
private
Boolean
isWinPrize
;
/**
* createTime
*/
private
Date
createTime
;
/**
* updateTime
*/
private
Date
updateTime
;
}
user-server/src/main/java/com/zq/user/vo/QuestionFindVo.java
0 → 100644
View file @
dcef1aaf
package
com
.
zq
.
user
.
vo
;
import
com.zq.common.vo.PageReqVo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author wilmiam
* @since 2022/6/15 9:58
*/
@Data
public
class
QuestionFindVo
extends
PageReqVo
{
/**
* id
*/
private
Integer
id
;
/**
* 题目
*/
@ApiModelProperty
(
"题目"
)
private
String
subject
;
/**
* content
*/
private
String
content
;
/**
* 题型
*/
@ApiModelProperty
(
"题型"
)
private
Integer
questionTypeId
;
/**
* 试题考试时间
*/
@ApiModelProperty
(
"试题考试时间"
)
private
Integer
duration
;
/**
* points
*/
private
Integer
points
;
/**
* 班组ID
*/
@ApiModelProperty
(
"班组ID"
)
private
Integer
groupId
;
/**
* 试题可见性
*/
@ApiModelProperty
(
"试题可见性"
)
private
Integer
isVisible
;
/**
* createTime
*/
private
Date
createTime
;
/**
* 创建者
*/
@ApiModelProperty
(
"创建者"
)
private
String
creator
;
/**
* lastModify
*/
private
Date
lastModify
;
/**
* answer
*/
@ApiModelProperty
(
"答案"
)
private
String
answer
;
/**
* exposeTimes
*/
private
Integer
exposeTimes
;
/**
* rightTimes
*/
private
Integer
rightTimes
;
/**
* wrongTimes
*/
private
Integer
wrongTimes
;
/**
* difficulty
*/
private
Integer
difficulty
;
/**
* analysis
*/
@ApiModelProperty
(
"解析"
)
private
String
analysis
;
/**
* reference
*/
private
String
reference
;
/**
* examingPoint
*/
private
String
examingPoint
;
/**
* keyword
*/
private
String
keyword
;
}
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