Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
cloud-mall
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
hqzhdj
cloud-mall
Commits
df6660e0
Commit
df6660e0
authored
Feb 24, 2021
by
liangkaiping
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lkp
parent
29059329
Show whitespace changes
Inline
Side-by-side
Showing
105 changed files
with
6389 additions
and
3 deletions
+6389
-3
README.md
+15
-3
cloud-mall-api/pom.xml
+60
-0
cloud-mall-api/src/main/java/com/yizhi/mall/application/ExchangeConditionType.java
+40
-0
cloud-mall-api/src/main/java/com/yizhi/mall/application/TokenLogType.java
+49
-0
cloud-mall-api/src/main/java/com/yizhi/mall/application/TokenSwitchType.java
+32
-0
cloud-mall-api/src/main/java/com/yizhi/mall/application/feign/TokenControllerClient.java
+24
-0
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/qo/ApplyProjectPO.java
+21
-0
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/qo/ManageTokenLogQO.java
+38
-0
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/qo/TokenExchangePO.java
+18
-0
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/qo/TokenExchangeRuleQO.java
+37
-0
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/qo/TokenSwitchQO.java
+24
-0
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/vo/ManageTokenLogVO.java
+47
-0
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/vo/ManageTokenSwitchVO.java
+25
-0
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/vo/OrderDetailVO.java
+35
-0
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/vo/QualityContentVO.java
+43
-0
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/vo/StudentTokenLogVO.java
+37
-0
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/vo/TokenConfigVO.java
+32
-0
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/vo/TokenExchangeRuleVO.java
+44
-0
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/vo/TokenLogMonthTotalVO.java
+31
-0
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/vo/TokenLogVO.java
+37
-0
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/vo/TokenSwitchVO.java
+21
-0
cloud-mall-service/pom.xml
+144
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/Application.java
+29
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/FeignConfig.kt
+20
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/config/FeignRequestIntercept.kt
+25
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/config/JpaListener.java
+111
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/config/MallMsgEnum.kt
+34
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/config/RedisLock.kt
+16
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/config/WebMvcConfigure.java
+50
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/config/constant/TokenLogRelationDto.kt
+23
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/controller/manage/ManageTokenLogController.java
+56
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/controller/manage/ManageTokenSwitchController.java
+54
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/controller/manage/TokenExchangeRuleController.java
+45
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/controller/student/QualityContentController.java
+38
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/controller/student/StudentTokenLogController.java
+34
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/controller/student/TokenConfigController.kt
+43
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/controller/student/TokenController.kt
+58
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/controller/student/TokenLogController.kt
+55
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/AccountExchangeLog.java
+169
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/AccountExchangeSum.java
+155
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/AccountToken.java
+141
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/QAccountExchangeLog.java
+55
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/QAccountExchangeSum.java
+53
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/QAccountToken.java
+51
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/QTokenExchangeRule.java
+65
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/QTokenExchangeRuleLog.java
+59
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/QTokenLog.java
+81
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/QTokenSwitch.java
+53
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/TokenExchangeRule.java
+233
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/TokenExchangeRuleLog.java
+192
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/TokenLog.java
+338
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/TokenSwitch.java
+158
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/excel/convert/CustomTokenLogTypeConverter.java
+94
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/excel/export/TokenLogExport.java
+139
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/excel/model/TokenLogExcelModel.java
+50
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/exception/ApiResponseHandler.kt
+86
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/exception/RequestParameter.kt
+21
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/handler/AccountManagerHandler.java
+45
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/repository/AccountExchangeLogRepository.java
+24
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/repository/AccountExchangeSumRepository.java
+18
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/repository/AccountTokenRepository.java
+18
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/repository/TokenExchangeRuleRepository.java
+15
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/repository/TokenLogRepository.java
+19
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/repository/TokenSwitchRepository.java
+15
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/repository/TokenexchangeruleLogRepository.java
+13
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/BaseService.kt
+26
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/IAccountExchangeLogService.kt
+17
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/IAccountExchangeSumService.kt
+19
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/IAccountTokenService.java
+20
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/ITokenExchangeRuleService.java
+29
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/ITokenLogService.kt
+42
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/ITokenSwitchService.kt
+18
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/impl/AccountExchangeLogServiceImpl.kt
+43
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/impl/AccountExchangeSumServiceImpl.kt
+52
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/impl/AccountTokenServiceImpl.java
+43
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/impl/ITokenExchangeRuleServiceImpl.java
+104
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/impl/TokenLogServiceImpl.kt
+323
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/impl/TokenSwitchServiceImpl.kt
+41
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/utils/Extend.kt
+45
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/utils/MallDateUtils.kt
+91
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/utils/MallOrderIdUtils.kt
+25
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/utils/RedissonUtils.kt
+41
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/AccountTokenXService.kt
+20
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/QualityContentXService.java
+26
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/TokenConfigXService.kt
+18
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/TokenLogXService.kt
+22
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/TokenSwitchXService.java
+18
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/TokenXService.kt
+27
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/TrXService.kt
+17
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/impl/AccountTokenXServiceImpl.kt
+137
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/impl/QualityContentXServiceImpl.java
+129
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/impl/TokenConfigXServiceImpl.kt
+69
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/impl/TokenLogXServiceImpl.kt
+114
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/impl/TokenSwitchXServiceImpl.java
+48
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/impl/TokenXServiceImpl.kt
+197
-0
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/impl/TrXServiceImpl.kt
+35
-0
cloud-mall-service/src/main/resources/bootstrap.yml
+23
-0
cloud-mall-service/src/test/java/MybatisCodeGenerator.java
+115
-0
cloud-mall-service/src/test/java/com/yizhi/mall/DateUtils.kt
+114
-0
cloud-mall-service/src/test/java/com/yizhi/mall/Test.kt
+46
-0
cloud-mall-service/src/test/resources/entity.java.vm
+156
-0
cloud-mall-service/src/test/resources/mapper.java.vm
+21
-0
cloud-mall-service/src/test/resources/service.java.vm
+18
-0
cloud-mall-service/src/test/resources/serviceImpl.java.vm
+24
-0
pom.xml
+111
-0
No files found.
README.md
View file @
df6660e0
#
cloud-mall
#
未木云 积分商城
积分商城
\ No newline at end of file
1.
service 包下只包装基本查询
1.
xservice 编写业务逻辑,不允许返回BizResponse,返回需要的业务数据
1.
controller 调用xservice或service,将返回值包装为BizResponse,然后return。
1.
controller 只允许返回BizReponse,且必须加范型。
## 接口说明
项目中的金币变动只能从这个接口走
com.yizhi.mall.application.xservice.AccountTokenXService.saveOrUpdateTokenAccount
cloud-mall-api/pom.xml
0 → 100644
View file @
df6660e0
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
cloud-mall
</artifactId>
<groupId>
com.yizhi
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
cloud-mall-api
</artifactId>
<packaging>
jar
</packaging>
<dependencies>
<dependency>
<groupId>
com.yizhi
</groupId>
<artifactId>
cloud-common-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<scope>
provided
</scope>
</dependency>
<dependency>
<groupId>
com.yizhi
</groupId>
<artifactId>
cloud-core
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<scope>
provided
</scope>
</dependency>
<dependency>
<groupId>
com.yizhi
</groupId>
<artifactId>
cloud-util
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<scope>
provided
</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<executions>
<execution>
<goals>
<goal>
repackage
</goal>
</goals>
</execution>
</executions>
<configuration>
<skip>
true
</skip>
</configuration>
</plugin>
<plugin>
<groupId>
org.mybatis.generator
</groupId>
<artifactId>
mybatis-generator-maven-plugin
</artifactId>
</plugin>
</plugins>
</build>
</project>
cloud-mall-api/src/main/java/com/yizhi/mall/application/ExchangeConditionType.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
;
import
lombok.Data
;
import
java.util.Arrays
;
/**
* @Date 2021/1/11 3:14 下午
* @Author lvjianhui
**/
public
enum
ExchangeConditionType
{
DAY
(
"DAY"
,
"天"
),
WEEK
(
"WEEK"
,
"周"
),
MONTH
(
"MONTH"
,
"月"
),
QUARTER
(
"QUARTER"
,
"季度"
),
HALFYEAR
(
"HALFYEAR"
,
"半年"
),
YEAR
(
"YEAR"
,
"年"
),
ALLTIME
(
"ALLTIME"
,
"每人历史限量兑换"
);
private
String
code
;
private
String
msg
;
ExchangeConditionType
(
String
code
,
String
msg
)
{
this
.
code
=
code
;
this
.
msg
=
msg
;
}
public
String
getCode
()
{
return
code
;
}
public
String
getMsg
()
{
return
msg
;
}
public
static
ExchangeConditionType
getByCode
(
String
code
)
{
return
Arrays
.
stream
(
ExchangeConditionType
.
values
()).
filter
(
it
->
it
.
code
.
equals
(
code
)).
findFirst
().
get
();
}
}
cloud-mall-api/src/main/java/com/yizhi/mall/application/TokenLogType.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
;
/**
* @Date 2021/1/14 11:51 上午
* @Author lvjianhui
**/
public
enum
TokenLogType
{
// 变更类型 100:积分兑换 110:微信充值 120:支付宝充值 180:帖子被打赏 181:回帖被打赏 182:作品被打赏
// 200:项目报名 210:课程报名 280:打赏帖子 281:打赏回帖 282:打赏作品 300:购买第三方产品
// 小于200为金币增加 大于200为金币减少
POINT_EXCHANGE
(
100
,
"积分充值"
,
1
,
"JF"
),
PROJECT_APPLY
(
200
,
"付费项目兑换"
,-
1
,
"XM"
),
COURSE_APPLY
(
210
,
"付费课程兑换"
,-
1
,
"KC"
),
;
private
Integer
code
;
private
String
msg
;
// 增加为1 ,减少为-1
private
Integer
addOrsSub
;
private
String
orderPre
;
TokenLogType
(
Integer
code
,
String
msg
,
Integer
addOrsSub
,
String
orderPre
)
{
this
.
code
=
code
;
this
.
msg
=
msg
;
this
.
addOrsSub
=
addOrsSub
;
this
.
orderPre
=
orderPre
;
}
public
Integer
getCode
()
{
return
code
;
}
public
String
getMsg
()
{
return
msg
;
}
public
Integer
getAddOrsSub
()
{
return
addOrsSub
;
}
public
String
getOrderPre
()
{
return
orderPre
;
}
}
cloud-mall-api/src/main/java/com/yizhi/mall/application/TokenSwitchType.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
;
/**
* @Date 2021/1/14 3:32 下午
* @Author lvjianhui
**/
public
enum
TokenSwitchType
{
// 10:积分 20:人民币 30:第三方商城
POINT_EXCHANGE
(
10
,
"积分换金币入口"
),
RMB_EXCHANGE
(
20
,
"人民币充值金币入口"
),
THIRD_MALL
(
30
,
"第三方商城入口"
)
;
private
Integer
type
;
private
String
msg
;
TokenSwitchType
(
Integer
type
,
String
msg
)
{
this
.
type
=
type
;
this
.
msg
=
msg
;
}
public
Integer
getType
()
{
return
type
;
}
public
String
getMsg
()
{
return
msg
;
}
}
cloud-mall-api/src/main/java/com/yizhi/mall/application/feign/TokenControllerClient.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
feign
;
import
com.yizhi.mall.application.pojo.vo.TokenConfigVO
;
import
com.yizhi.util.application.domain.BizResponse
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
java.lang.annotation.Annotation
;
import
java.lang.reflect.Method
;
@FeignClient
(
name
=
"mall"
,
contextId
=
"TokenControllerClient"
)
public
interface
TokenControllerClient
{
@GetMapping
(
"/student/token/amount"
)
@ApiOperation
(
"获取用户当前金币数量"
)
BizResponse
<
Integer
>
getTokenAmount
();
@GetMapping
(
"/manage/tokenExchangeRule/get"
)
@ApiOperation
(
value
=
"获取规则"
)
public
BizResponse
<
TokenConfigVO
>
get
();
}
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/qo/ApplyProjectPO.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
pojo
.
qo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @Date 2021/1/15 5:30 下午
* @Author lvjianhui
**/
@Data
@ApiModel
public
class
ApplyProjectPO
{
@ApiModelProperty
(
"业务Id"
)
private
Long
relationtId
;
@ApiModelProperty
(
"业务类型 200:项目报名"
)
private
Integer
relationType
;
}
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/qo/ManageTokenLogQO.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
pojo
.
qo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @ClassName: ManageTokenLogQO
* @author: zjl
* @date: 2021/1/13 16:25
*/
@Data
@ApiModel
(
value
=
"管理端"
)
public
class
ManageTokenLogQO
{
@ApiModelProperty
(
value
=
"关键字"
)
private
String
kwd
;
@ApiModelProperty
(
value
=
"分页参数:每页条数,默认10条"
)
private
Integer
pageSize
=
10
;
@ApiModelProperty
(
value
=
"分页参数:跳转页,默认1"
)
private
Integer
pageNo
=
1
;
@ApiModelProperty
(
value
=
"变更类型 100:积分兑换 110:微信充值 120:支付宝充值 180:帖子被打赏 181:回帖被打赏 182:作品被打赏 200:项目报名 210:课程报名 280:打赏帖子 281:打赏回帖 282:打赏作品 300:购买第三方产品"
)
private
Integer
type
;
@ApiModelProperty
(
value
=
"开始日期"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
startAt
;
@ApiModelProperty
(
value
=
"结束日期"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
endAt
;
}
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/qo/TokenExchangePO.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
pojo
.
qo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @Date 2021/1/14 2:38 下午
* @Author lvjianhui
**/
@Data
@ApiModel
public
class
TokenExchangePO
{
@ApiModelProperty
(
"需兑换金币数量"
)
private
Integer
tokenCount
;
}
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/qo/TokenExchangeRuleQO.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
pojo
.
qo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.math.BigDecimal
;
/**
* @ClassName: TokenExchangeRuleQO
* @author: zjl
* @date: 2021/1/11 16:18
*/
@Data
@ApiModel
(
"新增积分兑换金币规则入参"
)
@NoArgsConstructor
@AllArgsConstructor
public
class
TokenExchangeRuleQO
{
@ApiModelProperty
(
value
=
"虚拟币名称"
)
private
String
tokenName
;
@ApiModelProperty
(
value
=
"兑换比例 100表示 100积分兑换 1金币"
)
private
BigDecimal
rate
;
@ApiModelProperty
(
value
=
"false:无条件 true:有条件"
)
private
Boolean
exchangeCondition
;
@ApiModelProperty
(
value
=
"DAY,WEEK,MONTH,QUARTER,HALFYEAR,YEAR,ALLTIME"
)
private
String
conditionRuleType
;
@ApiModelProperty
(
value
=
"时间范围内兑换总量"
)
private
Integer
conditionRuleTokenCount
;
}
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/qo/TokenSwitchQO.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
pojo
.
qo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @ClassName: TokenSwitchQO
* @author: zjl
* @date: 2021/1/22 20:44
*/
@Data
@ApiModel
(
"新增兑换开关入参"
)
@NoArgsConstructor
@AllArgsConstructor
public
class
TokenSwitchQO
{
private
Boolean
tokenSwitchBol
;
@ApiModelProperty
(
"10:积分 20:人民币 30:第三方商城"
)
private
Integer
type
;
}
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/vo/ManageTokenLogVO.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
pojo
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @ClassName: ManageTokenLogVO
* @author: zjl
* @date: 2021/1/13 16:05
*/
@ApiModel
(
value
=
"管理端金币消费返回vo"
)
@Data
public
class
ManageTokenLogVO
{
@ApiModelProperty
(
value
=
"姓名"
)
private
String
fullName
;
@ApiModelProperty
(
value
=
"用户名"
)
private
String
name
;
@ApiModelProperty
(
"时间"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createdAt
;
@ApiModelProperty
(
"备注"
)
private
String
remark
;
@ApiModelProperty
(
"数量 +加 -减"
)
private
Integer
count
;
@ApiModelProperty
(
"业务类型 变更类型 100:积分兑换 110:微信充值 120:支付宝充值 180:帖子被打赏 181:回帖被打赏 182:作品被打赏 200:项目报名 210:课程报名 280:打赏帖子 281:打赏回帖 282:打赏作品 300:购买第三方产品"
)
private
Integer
type
;
@ApiModelProperty
(
"如股业务类型 属于平台业务,则为业务ID。如果有值,则更具该值跳相应业务的页面。如果无值则 更具订单ID跳订单详情页面"
)
private
Long
relationId
;
@ApiModelProperty
(
"订单ID"
)
private
String
orderId
;
@ApiModelProperty
(
"业务项目名 或考试名 或作品名称"
)
private
String
relationName
;
}
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/vo/ManageTokenSwitchVO.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
pojo
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @ClassName: ManageTokenSwitchVO
* @author: zjl
* @date: 2021/1/15 9:24
*/
@Data
@ApiModel
(
value
=
"管理端兑换开关返回vo"
)
public
class
ManageTokenSwitchVO
{
private
Long
siteId
;
private
Long
companyId
;
@ApiModelProperty
(
value
=
"10:积分 20:人民币 30:第三方商城"
)
private
Integer
type
;
@ApiModelProperty
(
value
=
"false则关闭。true:打开"
)
private
Boolean
tokenSwitchBol
;
}
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/vo/OrderDetailVO.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
pojo
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @Date 2021/1/13 10:48 上午
* @Author lvjianhui
**/
@Data
@ApiModel
public
class
OrderDetailVO
{
@ApiModelProperty
(
"花费数量"
)
private
Integer
costCount
;
@ApiModelProperty
(
"充值方式 100:积分兑换 110:微信充值 120:支付宝充值 "
)
private
Integer
type
;
@ApiModelProperty
(
"订单Id"
)
private
String
orderId
;
@ApiModelProperty
(
"充值账户"
)
private
String
accountName
;
@ApiModelProperty
(
"金币数量"
)
private
Integer
tokenCount
;
@ApiModelProperty
(
"时间"
)
private
Date
createdAt
;
}
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/vo/QualityContentVO.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
pojo
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* @ClassName: QualityContentVO
* @author: zjl
* @date: 2021/1/12 9:38
*/
@Data
@ApiModel
(
"精品内容返回vo"
)
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
QualityContentVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
Long
accountId
;
@ApiModelProperty
(
value
=
"姓名"
)
private
String
fullName
;
@ApiModelProperty
(
value
=
"用户名"
)
private
String
name
;
@ApiModelProperty
(
value
=
"头像"
)
private
String
headPortrait
;
@ApiModelProperty
(
value
=
"金币数"
)
private
Integer
tokenCount
;
@ApiModelProperty
(
value
=
"兑换记录数"
,
hidden
=
true
)
private
Integer
exchangeLogsCount
;
}
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/vo/StudentTokenLogVO.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
pojo
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @ClassName: StudentTokenLogVO
* @author: zjl
* @date: 2021/1/18 9:48
*/
@Data
@ApiModel
(
value
=
"学员端金币消费返回vo"
)
public
class
StudentTokenLogVO
{
@ApiModelProperty
(
"时间"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createdAt
;
@ApiModelProperty
(
"数量 +加 -减"
)
private
Integer
count
;
@ApiModelProperty
(
"业务类型 变更类型 100:积分兑换 110:微信充值 120:支付宝充值 180:帖子被打赏 181:回帖被打赏 182:作品被打赏 200:项目报名 210:课程报名 280:打赏帖子 281:打赏回帖 282:打赏作品 300:购买第三方产品"
)
private
Integer
type
;
@ApiModelProperty
(
"如果业务类型 属于平台业务,则为业务ID。如果有值,则更具该值跳相应业务的页面。如果无值则 更具订单ID跳订单详情页面"
)
private
Long
relationId
;
@ApiModelProperty
(
"业务项目名 或考试名 或作品名称"
)
private
String
relationName
;
@ApiModelProperty
(
value
=
"业务 icoc"
)
private
String
relationIconUrl
;
}
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/vo/TokenConfigVO.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
pojo
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.math.BigDecimal
;
/**
* @Date 2021/1/6 4:04 下午
* @Author lvjianhui
**/
@Data
@ApiModel
public
class
TokenConfigVO
{
@ApiModelProperty
(
"token 名称"
)
private
String
tokenName
;
@ApiModelProperty
(
"false:无条件 true:有条件"
)
private
Boolean
exchangeCondition
;
@ApiModelProperty
(
"DAY,WEEK,MONTH,QUARTER,HALFYEAR,YEAR,ALLTIME"
)
private
String
ruleType
;
@ApiModelProperty
(
"时间范围内退换总量"
)
private
Integer
ruleTokenCount
;
@ApiModelProperty
(
"兑换比例 100积分兑换 1金币时 返回100"
)
private
BigDecimal
rate
;
}
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/vo/TokenExchangeRuleVO.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
pojo
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
/**
* @ClassName: TokenExchangeRuleVO
* @author: zjl
* @date: 2021/1/11 15:20
*/
@Data
@ApiModel
(
"积分兑换金币规则返回vo"
)
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
TokenExchangeRuleVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
Long
id
;
@ApiModelProperty
(
value
=
"虚拟币名称"
)
private
String
tokenName
;
@ApiModelProperty
(
value
=
"兑换比例 100表示 100积分兑换 1金币"
)
private
BigDecimal
rate
;
@ApiModelProperty
(
value
=
"0:无条件 1:有条件"
)
private
Boolean
exchangeCondition
;
@ApiModelProperty
(
value
=
"DAY,WEEK,MONTH,QUARTER,HALFYEAR,YEAR,ALLTIME"
)
private
String
conditionRuleType
;
@ApiModelProperty
(
value
=
"时间范围内兑换总量"
)
private
Integer
conditionRuleTokenCount
;
}
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/vo/TokenLogMonthTotalVO.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
pojo
.
vo
;
import
com.yizhi.util.application.page.PageInfo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
/**
* @Date 2021/1/6 5:17 下午
* @Author lvjianhui
**/
@ApiModel
@Data
public
class
TokenLogMonthTotalVO
{
@ApiModelProperty
(
"时间"
)
private
Long
timestamp
;
@ApiModelProperty
(
"获取数量"
)
private
Integer
receiveCount
=
0
;
@ApiModelProperty
(
"使用数量"
)
private
Integer
useCount
=
0
;
@ApiModelProperty
(
value
=
"明细"
)
private
PageInfo
<
TokenLogVO
>
items
;
}
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/vo/TokenLogVO.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
pojo
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @Date 2021/1/7 10:23 上午
* @Author lvjianhui
**/
@ApiModel
@Data
public
class
TokenLogVO
{
@ApiModelProperty
(
"时间"
)
private
Date
createdAt
;
@ApiModelProperty
(
"备注"
)
private
String
remark
;
@ApiModelProperty
(
"数量 +加 -减"
)
private
Integer
count
;
@ApiModelProperty
(
"业务类型 变更类型 100:积分兑换 110:微信充值 120:支付宝充值 180:帖子被打赏 181:回帖被打赏 182:作品被打赏 200:项目报名 210:课程报名 280:打赏帖子 281:打赏回帖 282:打赏作品 300:购买第三方产品"
)
private
Integer
type
;
@ApiModelProperty
(
"如股业务类型 属于平台业务,则为业务ID。如果有值,则更具该值跳相应业务的页面。如果无值则 更具订单ID跳订单详情页面"
)
private
Long
relationId
;
@ApiModelProperty
(
"订单ID"
)
private
String
orderId
;
@ApiModelProperty
(
"业务项目名 或考试名 或作品名称"
)
private
String
relationName
;
}
cloud-mall-api/src/main/java/com/yizhi/mall/application/pojo/vo/TokenSwitchVO.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
pojo
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @Date 2021/1/14 2:51 下午
* @Author lvjianhui
**/
@ApiModel
@Data
public
class
TokenSwitchVO
{
@ApiModelProperty
(
"10:积分 20:人民币 30:第三方商城"
)
private
Integer
type
;
@ApiModelProperty
(
"true:开启,false: 关闭"
)
private
Boolean
tokenSwitch
;
}
cloud-mall-service/pom.xml
0 → 100644
View file @
df6660e0
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
cloud-mall
</artifactId>
<groupId>
com.yizhi
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<packaging>
jar
</packaging>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
cloud-mall-service
</artifactId>
<properties>
<kotlin.version>
1.4.10
</kotlin.version>
</properties>
<dependencies>
<dependency>
<groupId>
org.jetbrains.kotlin
</groupId>
<artifactId>
kotlin-stdlib
</artifactId>
<version>
${kotlin.version}
</version>
</dependency>
<dependency>
<groupId>
com.squareup.okhttp3
</groupId>
<artifactId>
okhttp
</artifactId>
<version>
3.13.1
</version>
</dependency>
<dependency>
<groupId>
com.squareup.okio
</groupId>
<artifactId>
okio
</artifactId>
<version>
1.15.0
</version>
</dependency>
<dependency>
<groupId>
org.apache.velocity
</groupId>
<artifactId>
velocity-engine-core
</artifactId>
<version>
2.0
</version>
</dependency>
<!-- JPA + QueryDsl-->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-jpa
</artifactId>
</dependency>
<dependency>
<groupId>
com.querydsl
</groupId>
<artifactId>
querydsl-apt
</artifactId>
</dependency>
<dependency>
<groupId>
com.querydsl
</groupId>
<artifactId>
querydsl-jpa
</artifactId>
</dependency>
<dependency>
<groupId>
com.yizhi
</groupId>
<artifactId>
cloud-orm
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.yizhi
</groupId>
<artifactId>
cloud-core
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.yizhi
</groupId>
<artifactId>
cloud-util
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.yizhi
</groupId>
<artifactId>
cloud-mall-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.yizhi
</groupId>
<artifactId>
cloud-system-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.yizhi
</groupId>
<artifactId>
cloud-point-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.yizhi
</groupId>
<artifactId>
cloud-training-project-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.yizhi
</groupId>
<artifactId>
cloud-enroll-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
easyexcel
</artifactId>
<version>
2.2.6
</version>
</dependency>
<dependency>
<groupId>
org.redisson
</groupId>
<artifactId>
redisson
</artifactId>
<version>
3.14.1
</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- <plugin>-->
<!-- <groupId>com.mysema.maven</groupId>-->
<!-- <artifactId>apt-maven-plugin</artifactId>-->
<!-- <version>1.1.3</version>-->
<!-- <executions>-->
<!-- <execution>-->
<!-- <goals>-->
<!-- <goal>process</goal>-->
<!-- </goals>-->
<!-- <configuration>-->
<!-- <outputDirectory>src/test/resources</outputDirectory>-->
<!-- <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>-->
<!-- </configuration>-->
<!-- </execution>-->
<!-- </executions>-->
<!-- </plugin>-->
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-deploy-plugin
</artifactId>
<configuration>
<skip>
true
</skip>
</configuration>
</plugin>
</plugins>
</build>
</project>
cloud-mall-service/src/main/java/com/yizhi/mall/application/Application.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.cache.annotation.EnableCaching
;
import
org.springframework.cloud.client.discovery.EnableDiscoveryClient
;
import
org.springframework.cloud.openfeign.EnableFeignClients
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.data.jpa.repository.config.EnableJpaAuditing
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
import
springfox.documentation.swagger2.annotations.EnableSwagger2
;
/**
* @Date 2020/10/21 9:58 上午
* @Author lvjianhui
**/
@SpringBootApplication
@EnableDiscoveryClient
@EnableJpaAuditing
@EnableSwagger2
@EnableCaching
@EnableFeignClients
(
basePackages
=
{
"com.yizhi"
})
@ComponentScan
(
basePackages
=
{
"com.yizhi"
})
@EnableTransactionManagement
public
class
Application
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
Application
.
class
,
args
);
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/FeignConfig.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application
import
com.yizhi.mall.application.config.FeignRequestIntercept
import
feign.RequestInterceptor
import
org.springframework.context.annotation.Configuration
/**
* @Date 2021/1/19 1:59 下午
* @Author lvjianhui
**/
@Configuration
open
class
FeignConfig
{
fun
requestIntercept
():
RequestInterceptor
{
return
FeignRequestIntercept
()
}
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/config/FeignRequestIntercept.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.config
import
com.yizhi.core.application.context.ContextHolder
import
feign.RequestInterceptor
import
feign.RequestTemplate
import
org.apache.commons.beanutils.BeanUtils
import
org.apache.commons.lang.StringUtils
import
org.springframework.stereotype.Component
/**
* @Date 2021/1/19 1:48 下午
* @Author lvjianhui
**/
@Component
class
FeignRequestIntercept
:
RequestInterceptor
{
override
fun
apply
(
template
:
RequestTemplate
?)
{
val
map
=
BeanUtils
.
describe
(
ContextHolder
.
get
())
map
.
filter
{
StringUtils
.
isNotEmpty
(
it
.
value
)}.
forEach
{
(
key
,
value
)
->
template
!!
.
header
(
key
,
value
)
}
}
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/config/JpaListener.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
config
;
import
com.alibaba.fastjson.JSONObject
;
import
com.yizhi.core.application.context.ContextHolder
;
import
com.yizhi.core.application.context.RequestContext
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
javax.persistence.PrePersist
;
import
javax.persistence.PreUpdate
;
import
java.lang.reflect.Method
;
/**
* @Date 2021/1/14 1:33 下午
* @Author lvjianhui
**/
public
class
JpaListener
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
JpaListener
.
class
);
@PrePersist
public
void
prePersist
(
Object
sourse
){
try
{
logger
.
trace
(
"JpaListener 保存前 ==== clazz.fields:"
+
JSONObject
.
toJSONString
(
sourse
));
Class
clazz
=
sourse
.
getClass
();
RequestContext
requestContext
=
ContextHolder
.
get
();
try
{
Method
methodsetCompanyId
=
clazz
.
getMethod
(
"setCompanyId"
,
Long
.
class
);
methodsetCompanyId
.
invoke
(
sourse
,
requestContext
.
getCompanyId
());
}
catch
(
Exception
e
)
{
logger
.
warn
(
"NoSuchMethodException methodsetCompanyId"
);
}
try
{
Method
methodSetSiteId
=
clazz
.
getMethod
(
"setSiteId"
,
Long
.
class
);
methodSetSiteId
.
invoke
(
sourse
,
requestContext
.
getSiteId
());
}
catch
(
Exception
e
)
{
logger
.
warn
(
"NoSuchMethodException methodSetSiteId"
);
}
try
{
Method
methodSetOrgId
=
clazz
.
getMethod
(
"setOrgId"
,
Long
.
class
);
methodSetOrgId
.
invoke
(
sourse
,
requestContext
.
getOrgId
());
}
catch
(
Exception
e
)
{
logger
.
warn
(
"NoSuchMethodException methodSetOrgId"
);
}
try
{
Method
methodSetAccountId
=
clazz
.
getMethod
(
"setAccountId"
,
Long
.
class
);
methodSetAccountId
.
invoke
(
sourse
,
requestContext
.
getAccountId
());
}
catch
(
Exception
e
)
{
logger
.
warn
(
"NoSuchMethodException methodSetAccountId"
);
}
try
{
Method
setAccountName
=
clazz
.
getMethod
(
"setAccountName"
,
String
.
class
);
setAccountName
.
invoke
(
sourse
,
requestContext
.
getAccountName
());
}
catch
(
Exception
e
)
{
logger
.
warn
(
"NoSuchMethodException setAccountName"
);
}
try
{
Method
setAccountFullName
=
clazz
.
getMethod
(
"setAccountFullName"
,
String
.
class
);
setAccountFullName
.
invoke
(
sourse
,
requestContext
.
getAccountFullName
());
}
catch
(
Exception
e
)
{
logger
.
warn
(
"NoSuchMethodException setAccountFullName"
);
}
try
{
Method
methodSetCreatedUid
=
clazz
.
getMethod
(
"setCreatedUid"
,
Long
.
class
);
methodSetCreatedUid
.
invoke
(
sourse
,
requestContext
.
getAccountId
());
}
catch
(
Exception
e
)
{
logger
.
warn
(
"NoSuchMethodException methodSetCreatedUid"
);
}
try
{
Method
methodSetCreatedName
=
clazz
.
getMethod
(
"setCreatedName"
,
String
.
class
);
methodSetCreatedName
.
invoke
(
sourse
,
requestContext
.
getAccountName
());
}
catch
(
Exception
e
)
{
logger
.
warn
(
"NoSuchMethodException methodSetCreatedName"
);
}
logger
.
trace
(
"JpaListener 保存前 ==== clazz.fields:"
+
JSONObject
.
toJSONString
(
sourse
));
}
catch
(
Exception
e
)
{
logger
.
warn
(
"JpaListener 保存前 ERROE ==== clazz.fields:"
+
JSONObject
.
toJSONString
(
sourse
),
e
);
}
}
@PreUpdate
public
void
preUpdate
(
Object
sourse
)
{
logger
.
trace
(
"JpaListener 更新前 ==== clazz.fields:"
+
JSONObject
.
toJSONString
(
sourse
));
Class
clazz
=
sourse
.
getClass
();
RequestContext
requestContext
=
ContextHolder
.
get
();
try
{
Method
setUpdatedUid
=
clazz
.
getMethod
(
"setUpdatedUid"
,
Long
.
class
);
setUpdatedUid
.
invoke
(
sourse
,
requestContext
.
getAccountId
());
}
catch
(
Exception
e
)
{
logger
.
warn
(
"NoSuchMethodException setUpdatedUid"
);
}
try
{
Method
setUpdatedName
=
clazz
.
getMethod
(
"setUpdatedName"
,
String
.
class
);
setUpdatedName
.
invoke
(
sourse
,
requestContext
.
getAccountName
());
}
catch
(
Exception
e
)
{
logger
.
warn
(
"NoSuchMethodException setUpdatedName"
);
}
logger
.
trace
(
"JpaListener 更新前 ==== clazz.fields:"
+
JSONObject
.
toJSONString
(
sourse
));
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/config/MallMsgEnum.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.config
/**
* @Date 2021/1/14 3:45 下午
* @Author lvjianhui
**/
enum
class
MallMsgEnum
(
var
code
:
String
,
var
msg
:
String
,
var
remark
:
String
)
{
POINT_EXCHANGE_CLOSE
(
"POINT_EXCHANGE_CLOSE"
,
"POINT_EXCHANGE_CLOSE"
,
"积分兑换金币入口已关闭"
),
POINT_RULE_ERROR
(
"POINT_RULE_ERROR"
,
"POINT_RULE_ERROR"
,
"积分规则配置异常"
),
POINT_EXCHANGE_TOKEN_LIMIT
(
"POINT_EXCHANGE_TOKEN_LIMIT"
,
"POINT_EXCHANGE_TOKEN_LIMIT"
,
"积分兑换金币已达上限"
),
POINT_AMOUNT_NOT_ENOUGH
(
"POINT_AMOUNT_NOT_ENOUGH"
,
"POINT_AMOUNT_NOT_ENOUGH"
,
"积分数量不足"
),
EXCHANGE_TOKEN_AMOUNT_ERROR
(
"EXCHANGE_TOKEN_AMOUNT_ERROR"
,
"EXCHANGE_TOKEN_AMOUNT_ERROR"
,
"兑换金币数必须大于0"
),
PROJECT_APPLYED
(
"PROJECT_APPLYED"
,
"PROJECT_APPLYED"
,
"项目已报名"
),
TOKEN_AMOUNT_ERROR
(
"TOKEN_AMOUNT_ERROR"
,
"TOKEN_AMOUNT_ERROR"
,
"金币数量不足"
),
ACCOUNT_TOKEN_PROCESSING
(
"ACCOUNT_TOKEN_PROCESSING"
,
"ACCOUNT_TOKEN_PROCESSING"
,
"账户处理中"
),
PROJECT_NOT_EXIST
(
"PROJECT_NOT_EXIST"
,
"PROJECT_NOT_EXIST"
,
"项目不存在,或已下架"
),
PROJECT_PARAMS_ERROR
(
"PROJECT_PARAMS_ERROR"
,
"PROJECT_PARAMS_ERROR"
,
"项目报名方式设置有误"
),
PROJECT_ENROOL_TIME_ERROR
(
"PROJECT_ENROOL_TIME_ERROR"
,
"PROJECT_ENROOL_TIME_ERROR"
,
"不在报名时间"
),
PROJECT_ENROLL_ACCOUNT_NUM_LIMIT
(
"PROJECT_ENROLL_ACCOUNT_NUM_LIMIT"
,
"PROJECT_ENROLL_ACCOUNT_NUM_LIMIT"
,
"报名人数已满"
)
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/config/RedisLock.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.config
/**
* @Date 2021/1/18 11:03 上午
* @Author lvjianhui
**/
object
RedisLock
{
/**
* 用户金币分布式锁
*/
var
ACCOUNT_TOKEN_LOCK
=
"ACCOUNT_TOKEN_LOCK_%s"
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/config/WebMvcConfigure.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
config
;
import
feign.RequestInterceptor
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
;
import
springfox.documentation.builders.ApiInfoBuilder
;
import
springfox.documentation.builders.PathSelectors
;
import
springfox.documentation.builders.RequestHandlerSelectors
;
import
springfox.documentation.spi.DocumentationType
;
import
springfox.documentation.spring.web.plugins.Docket
;
import
springfox.documentation.swagger2.annotations.EnableSwagger2
;
/**
* @Author: shengchenglong
* @Date: 2018/3/6 14:30
*/
@Configuration
@EnableSwagger2
public
class
WebMvcConfigure
extends
WebMvcConfigurerAdapter
{
@Bean
public
Docket
createRestApi
()
{
return
new
Docket
(
DocumentationType
.
SWAGGER_2
)
.
groupName
(
"未木云"
)
.
apiInfo
(
new
ApiInfoBuilder
()
.
title
(
"金币商城"
)
.
version
(
"1.0"
)
.
build
())
.
select
()
.
apis
(
RequestHandlerSelectors
.
basePackage
(
"com.yizhi"
))
.
paths
(
PathSelectors
.
any
())
.
build
();
}
@Override
public
void
addResourceHandlers
(
ResourceHandlerRegistry
registry
)
{
registry
.
addResourceHandler
(
"swagger-ui.html"
).
addResourceLocations
(
"classpath:/META-INF/resources/"
);
registry
.
addResourceHandler
(
"docs.html"
).
addResourceLocations
(
"classpath:/META-INF/resources/"
);
registry
.
addResourceHandler
(
"/webjars/**"
).
addResourceLocations
(
"classpath:/META-INF/resources/webjars/"
);
}
@Bean
public
RequestInterceptor
requestInterceptor
()
{
return
new
FeignRequestIntercept
();
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/config/constant/TokenLogRelationDto.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.config.constant
/**
* @Date 2021/1/18 2:01 下午
* @Author lvjianhui
**/
class
TokenLogRelationDto
{
var
relationId
:
Long
?
=
null
var
relationName
:
String
?
=
null
var
relationIconUrl
:
String
?
=
null
var
relationType
:
Int
?
=
null
var
needToken
:
Int
=
0
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/controller/manage/ManageTokenLogController.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
controller
.
manage
;
import
cn.hutool.core.date.DateUtil
;
import
com.yizhi.core.application.context.ContextHolder
;
import
com.yizhi.core.application.context.RequestContext
;
import
com.yizhi.mall.application.excel.export.TokenLogExport
;
import
com.yizhi.mall.application.pojo.qo.ManageTokenLogQO
;
import
com.yizhi.mall.application.pojo.vo.ManageTokenLogVO
;
import
com.yizhi.mall.application.service.ITokenLogService
;
import
com.yizhi.util.application.domain.BizResponse
;
import
com.yizhi.util.application.page.PageInfo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @ClassName: ManageTokenLogController
* @author: zjl
* @date: 2021/1/13 16:03
*/
@Api
(
tags
=
"管理端-金币消费"
)
@RestController
@RequestMapping
(
"/manage/tokenLog"
)
public
class
ManageTokenLogController
{
@Autowired
private
ITokenLogService
tokenLogService
;
@Autowired
private
TokenLogExport
tokenLogExport
;
@PostMapping
(
"/list"
)
@ApiOperation
(
value
=
"获取消费记录"
)
public
BizResponse
<
PageInfo
<
ManageTokenLogVO
>>
get
(
@RequestBody
ManageTokenLogQO
qo
)
{
RequestContext
context
=
ContextHolder
.
get
();
return
BizResponse
.
ok
(
tokenLogService
.
getLogListByCondition
(
context
,
qo
));
}
@PostMapping
(
"/export"
)
@ApiOperation
(
value
=
"导出消费记录"
)
public
BizResponse
<
String
>
export
(
@RequestBody
ManageTokenLogQO
qo
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
RequestContext
context
=
ContextHolder
.
get
();
map
.
put
(
"qo"
,
qo
);
map
.
put
(
"context"
,
context
);
tokenLogExport
.
execute
(
map
,
true
);
String
formatDate
=
DateUtil
.
format
(
new
Date
(),
"yyyyMMddHHmmss"
);
String
taskName
=
"导出消费记录-"
+
formatDate
;
return
BizResponse
.
ok
(
taskName
);
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/controller/manage/ManageTokenSwitchController.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
controller
.
manage
;
import
com.yizhi.mall.application.domain.TokenSwitch
;
import
com.yizhi.mall.application.pojo.qo.TokenSwitchQO
;
import
com.yizhi.mall.application.pojo.vo.ManageTokenSwitchVO
;
import
com.yizhi.mall.application.pojo.vo.TokenSwitchVO
;
import
com.yizhi.mall.application.service.ITokenSwitchService
;
import
com.yizhi.mall.application.xservice.TokenConfigXService
;
import
com.yizhi.mall.application.xservice.TokenSwitchXService
;
import
com.yizhi.util.application.domain.BizResponse
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
/**
* @ClassName: ManageTokenSwitchController
* @author: zjl
* @date: 2021/1/15 9:22
*/
@Api
(
tags
=
"管理端-兑换开关"
)
@RestController
@RequestMapping
(
"/manage/tokenSwitch"
)
public
class
ManageTokenSwitchController
{
@Autowired
private
TokenSwitchXService
tokenSwitchXService
;
@Autowired
private
ITokenSwitchService
tokenSwitchService
;
@Autowired
private
TokenConfigXService
tokenConfigXService
;
@GetMapping
(
"/type/get"
)
@ApiOperation
(
value
=
"获取已打开的兑换开关"
)
public
BizResponse
<
List
<
TokenSwitchVO
>>
getByType
(
@ApiParam
(
value
=
"10:积分 20:人民币 30:第三方商城"
)
@RequestParam
(
value
=
"type"
,
required
=
false
)
Integer
type
)
{
List
<
TokenSwitchVO
>
aSwitch
=
tokenConfigXService
.
getSwitch
(
type
);
return
BizResponse
.
ok
(
aSwitch
);
}
@PostMapping
(
"/save"
)
@ApiOperation
(
value
=
"新增/修改兑换开关"
)
public
BizResponse
<
ManageTokenSwitchVO
>
saveOrUpdate
(
@RequestBody
TokenSwitchQO
qo
)
{
TokenSwitch
tokenSwitch
=
tokenSwitchXService
.
saveOrUpdateTokenSwitch
(
qo
.
getType
(),
qo
.
getTokenSwitchBol
());
ManageTokenSwitchVO
vo
=
new
ManageTokenSwitchVO
();
BeanUtils
.
copyProperties
(
tokenSwitch
,
vo
);
return
BizResponse
.
ok
(
vo
);
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/controller/manage/TokenExchangeRuleController.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
controller
.
manage
;
import
com.yizhi.mall.application.pojo.qo.TokenExchangeRuleQO
;
import
com.yizhi.mall.application.pojo.vo.TokenConfigVO
;
import
com.yizhi.mall.application.pojo.vo.TokenExchangeRuleVO
;
import
com.yizhi.mall.application.service.IAccountTokenService
;
import
com.yizhi.mall.application.service.ITokenExchangeRuleService
;
import
com.yizhi.mall.application.xservice.TokenConfigXService
;
import
com.yizhi.util.application.domain.BizResponse
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.math.BigDecimal
;
/**
* @ClassName: TokenExchangeRuleController
* @author: zjl
* @date: 2021/1/11 15:03
*/
@RestController
@RequestMapping
(
"/manage/tokenExchangeRule"
)
@Api
(
tags
=
"管理端-积分兑换金币规则"
)
public
class
TokenExchangeRuleController
{
@Autowired
private
ITokenExchangeRuleService
tokenExchangeRuleService
;
@Autowired
private
TokenConfigXService
tokenConfigXService
;
@GetMapping
(
"/get"
)
@ApiOperation
(
value
=
"获取规则"
)
public
BizResponse
<
TokenConfigVO
>
get
()
{
TokenConfigVO
config
=
tokenConfigXService
.
getRuleBySiteId
();
return
BizResponse
.
ok
(
config
);
}
@PostMapping
(
"/save"
)
@ApiOperation
(
value
=
"新增/修改规则"
)
public
BizResponse
<
TokenExchangeRuleVO
>
saveOrUpdate
(
@RequestBody
TokenExchangeRuleQO
qo
)
{
tokenExchangeRuleService
.
saveOrUpdateTokenExchangeRule
(
qo
);
return
BizResponse
.
ok
();
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/controller/student/QualityContentController.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
controller
.
student
;
import
com.yizhi.mall.application.pojo.vo.QualityContentVO
;
import
com.yizhi.mall.application.xservice.QualityContentXService
;
import
com.yizhi.training.application.param.PaidTrainingProjectQO
;
import
com.yizhi.training.application.vo.api.PaidTrainingProjectVO
;
import
com.yizhi.util.application.domain.BizResponse
;
import
com.yizhi.util.application.page.PageInfo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
/**
* @ClassName: QualityContentController
* @author: zjl
* @date: 2021/1/12 9:35
*/
@Api
(
tags
=
"学员端-精品内容"
)
@RestController
@RequestMapping
(
"/student/qualityContent"
)
public
class
QualityContentController
{
@Autowired
private
QualityContentXService
qualityContentXService
;
@GetMapping
(
"/get"
)
@ApiOperation
(
value
=
"获取精品内容个人信息"
)
public
BizResponse
<
QualityContentVO
>
get
()
{
return
BizResponse
.
ok
(
qualityContentXService
.
getQualityContent
());
}
@PostMapping
(
"/paidProject/get"
)
@ApiOperation
(
value
=
"获取精品内容付费项目"
)
public
BizResponse
<
PageInfo
<
PaidTrainingProjectVO
>>
getPaidProject
(
@RequestBody
PaidTrainingProjectQO
qo
)
{
return
BizResponse
.
ok
(
qualityContentXService
.
getPaidTrainingProject
(
qo
));
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/controller/student/StudentTokenLogController.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
controller
.
student
;
import
com.yizhi.mall.application.pojo.vo.StudentTokenLogVO
;
import
com.yizhi.mall.application.service.ITokenLogService
;
import
com.yizhi.util.application.domain.BizResponse
;
import
com.yizhi.util.application.page.PageInfo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* @ClassName: StudentTokenLogController
* @author: zjl
* @date: 2021/1/18 9:35
*/
@Api
(
tags
=
"学员端-金币消费"
)
@RestController
@RequestMapping
(
"/student/tokenLog"
)
public
class
StudentTokenLogController
{
@Autowired
private
ITokenLogService
tokenLogService
;
@GetMapping
(
"/list"
)
@ApiOperation
(
value
=
"获取消费记录"
)
public
BizResponse
<
PageInfo
<
StudentTokenLogVO
>>
get
(
@RequestParam
(
value
=
"pageNo"
)
Integer
pageNo
,
@RequestParam
(
value
=
"pageSize"
)
Integer
pageSize
)
{
return
BizResponse
.
ok
(
tokenLogService
.
getLogPageByUserId
(
pageNo
,
pageSize
));
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/controller/student/TokenConfigController.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.controller.student
import
com.yizhi.mall.application.pojo.vo.TokenConfigVO
import
com.yizhi.mall.application.pojo.vo.TokenSwitchVO
import
com.yizhi.mall.application.xservice.TokenConfigXService
import
com.yizhi.util.application.domain.BizResponse
import
io.swagger.annotations.Api
import
io.swagger.annotations.ApiOperation
import
org.springframework.beans.factory.annotation.Autowired
import
org.springframework.web.bind.annotation.GetMapping
import
org.springframework.web.bind.annotation.RequestMapping
import
org.springframework.web.bind.annotation.RequestParam
import
org.springframework.web.bind.annotation.RestController
/**
* @Date 2021/1/6 4:02 下午
* @Author lvjianhui
**/
@RestController
@RequestMapping
(
"/student/token/config"
)
@Api
(
tags
=
arrayOf
(
"金币配置规则"
))
class
TokenConfigController
{
@Autowired
lateinit
var
tokenConfigXService
:
TokenConfigXService
@GetMapping
(
"/rule"
)
@ApiOperation
(
"兑换规则查询"
)
fun
getTokenConfig
():
BizResponse
<
TokenConfigVO
>
{
val
vo
=
tokenConfigXService
.
getRuleBySiteId
()
return
BizResponse
.
ok
(
vo
)
}
@GetMapping
(
"/switch"
)
@ApiOperation
(
"根据type 查询 指定开关 10:积分 20:人民币 30:第三方商城。如果返回数据为null,则为关闭"
)
fun
getTokenSwitch
(
@RequestParam
(
""
)
type
:
Int
):
BizResponse
<
List
<
TokenSwitchVO
>>
{
val
vos
=
tokenConfigXService
.
getSwitch
(
type
)
return
BizResponse
.
ok
(
vos
)
}
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/controller/student/TokenController.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.controller.student
import
com.yizhi.core.application.context.ContextHolder
import
com.yizhi.mall.application.pojo.qo.ApplyProjectPO
import
com.yizhi.mall.application.pojo.qo.TokenExchangePO
import
com.yizhi.mall.application.service.IAccountTokenService
import
com.yizhi.mall.application.xservice.TokenXService
import
com.yizhi.util.application.domain.BizResponse
import
io.swagger.annotations.Api
import
io.swagger.annotations.ApiOperation
import
org.springframework.beans.factory.annotation.Autowired
import
org.springframework.web.bind.annotation.*
/**
* @Date 2021/1/11 12:01 下午
* @Author lvjianhui
**/
@RestController
@RequestMapping
(
"/student/token"
)
@Api
(
tags
=
arrayOf
(
"金币"
))
class
TokenController
{
@Autowired
lateinit
var
iAccountTokenService
:
IAccountTokenService
@Autowired
lateinit
var
tokenXService
:
TokenXService
@GetMapping
(
"/amount"
)
@ApiOperation
(
"获取用户当前金币数量"
)
fun
getTokenAmount
():
BizResponse
<
Int
>
{
val
rc
=
ContextHolder
.
get
()
val
amount
=
iAccountTokenService
.
getTokenCountById
(
rc
.
companyId
,
rc
.
siteId
,
rc
.
accountId
)
return
BizResponse
.
ok
(
amount
)
}
@GetMapping
(
"/point/amount"
)
@ApiOperation
(
"获取可用积分数量"
)
fun
getPointCount
():
BizResponse
<
Int
>
{
val
amount
=
tokenXService
.
getPointCount
()
return
BizResponse
.
ok
(
amount
)
}
@PostMapping
(
"/exchange/by/point"
)
@ApiOperation
(
"积分换金币"
)
fun
exchangeToken
(
@RequestBody
po
:
TokenExchangePO
):
BizResponse
<*>
{
tokenXService
.
pointExchangeToken
(
po
)
return
BizResponse
.
ok
(
""
)
}
@PostMapping
(
"/cost/to/project"
)
@ApiOperation
(
"花费金币-项目报名"
)
fun
costToProject
(
@RequestBody
po
:
ApplyProjectPO
):
BizResponse
<*>
{
tokenXService
.
costToProject
(
po
)
return
BizResponse
.
ok
(
""
)
}
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/controller/student/TokenLogController.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.controller.student
import
com.yizhi.core.application.context.ContextHolder
import
com.yizhi.mall.application.pojo.vo.OrderDetailVO
import
com.yizhi.mall.application.pojo.vo.TokenLogMonthTotalVO
import
com.yizhi.mall.application.pojo.vo.TokenLogVO
import
com.yizhi.mall.application.xservice.TokenLogXService
import
com.yizhi.util.application.domain.BizResponse
import
com.yizhi.util.application.page.PageInfo
import
io.swagger.annotations.Api
import
io.swagger.annotations.ApiOperation
import
io.swagger.annotations.ApiParam
import
org.springframework.beans.factory.annotation.Autowired
import
org.springframework.web.bind.annotation.GetMapping
import
org.springframework.web.bind.annotation.RequestMapping
import
org.springframework.web.bind.annotation.RequestParam
import
org.springframework.web.bind.annotation.RestController
/**
* @Date 2021/1/6 5:04 下午
* @Author lvjianhui
**/
@RestController
@RequestMapping
(
"/student/token/log"
)
@Api
(
tags
=
arrayOf
(
"金币明细"
))
class
TokenLogController
{
@Autowired
lateinit
var
tokenLogXService
:
TokenLogXService
@GetMapping
(
"/list"
)
@ApiOperation
(
"按月获取金币明细"
)
fun
getTokenLogList
(
@RequestParam
(
"type"
,
required
=
false
)
@ApiParam
(
"变更类型 100:积分兑换 110:微信充值 120:支付宝充值 180:帖子被打赏 181:回帖被打赏 182:作品被打赏 200:项目报名 210:课程报名 280:打赏帖子 281:打赏回帖 282:打赏作品 300:购买第三方产品"
)
type
:
Int
?,
@RequestParam
(
"pageIndex"
,
required
=
false
,
defaultValue
=
"1"
)
pageIndex
:
Int
?,
@RequestParam
(
"pageSize"
,
required
=
false
,
defaultValue
=
"10"
)
pageSize
:
Int
?,
@RequestParam
(
"startAt"
,
required
=
false
)
startAt
:
Long
?):
BizResponse
<
TokenLogMonthTotalVO
>
{
// val requestContext = ContextHolder.get()
val
vo
=
tokenLogXService
.
getTokenTotal
(
startAt
,
type
,
pageIndex
!!
,
pageSize
!!
)
?:
return
BizResponse
.
ok
()
// val page = tokenLogXService.getLogByType(requestContext,startAt,type,pageIndex!!,pageSize!!)
// vo.items = page
return
BizResponse
.
ok
(
vo
)
}
@GetMapping
(
"/order/detail"
)
@ApiOperation
(
"获取订单详情"
)
fun
getOrderDetail
(
@RequestParam
(
"orderId"
)
orderId
:
String
):
BizResponse
<
OrderDetailVO
>
{
val
requestContext
=
ContextHolder
.
get
()
val
vo
=
tokenLogXService
.
getOrderDetail
(
requestContext
.
accountId
,
requestContext
.
companyId
,
requestContext
.
siteId
,
orderId
)
return
BizResponse
.
ok
(
vo
)
}
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/AccountExchangeLog.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
domain
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
com.baomidou.mybatisplus.annotations.TableField
;
import
com.baomidou.mybatisplus.activerecord.Model
;
import
com.baomidou.mybatisplus.annotations.TableName
;
import
java.io.Serializable
;
import
com.yizhi.mall.application.config.JpaListener
;
import
org.hibernate.annotations.DynamicInsert
;
import
org.hibernate.annotations.DynamicUpdate
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiModelProperty
;
import
javax.persistence.Entity
;
import
javax.persistence.EntityListeners
;
import
javax.persistence.Id
;
/**
* <p>
* 用户兑换金币明细记录表
* </p>
*
* @author MybatisCodeGenerator123
* @since 2021-01-11
*/
@DynamicUpdate
@DynamicInsert
@Api
(
tags
=
"AccountExchangeLog"
,
description
=
"用户兑换金币明细记录表"
)
@TableName
(
"account_exchange_log"
)
@Entity
@EntityListeners
(
value
=
{
JpaListener
.
class
})
public
class
AccountExchangeLog
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Id
private
Long
id
;
@TableField
(
"account_id"
)
private
Long
accountId
;
@ApiModelProperty
(
value
=
"类型 10:积分 100:支付宝 110:微信"
)
private
Integer
type
;
@ApiModelProperty
(
value
=
"花费总量 人名币单位为分"
)
private
Integer
count
;
@ApiModelProperty
(
value
=
"兑换比例 100 表示 100:1 100积分兑换 1金币"
)
@TableField
(
"exchange_rate"
)
private
BigDecimal
exchangeRate
;
@ApiModelProperty
(
value
=
"获得金币数量"
)
@TableField
(
"token_count"
)
private
Integer
tokenCount
;
@TableField
(
"company_id"
)
private
Long
companyId
;
@TableField
(
"site_id"
)
private
Long
siteId
;
@TableField
(
"org_id"
)
private
Long
orgId
;
@TableField
(
"created_at"
)
private
Date
createdAt
;
public
Long
getId
()
{
return
id
;
}
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
Long
getAccountId
()
{
return
accountId
;
}
public
void
setAccountId
(
Long
accountId
)
{
this
.
accountId
=
accountId
;
}
public
Integer
getType
()
{
return
type
;
}
public
void
setType
(
Integer
type
)
{
this
.
type
=
type
;
}
public
Integer
getCount
()
{
return
count
;
}
public
void
setCount
(
Integer
count
)
{
this
.
count
=
count
;
}
public
BigDecimal
getExchangeRate
()
{
return
exchangeRate
;
}
public
void
setExchangeRate
(
BigDecimal
exchangeRate
)
{
this
.
exchangeRate
=
exchangeRate
;
}
public
Integer
getTokenCount
()
{
return
tokenCount
;
}
public
void
setTokenCount
(
Integer
tokenCount
)
{
this
.
tokenCount
=
tokenCount
;
}
public
Long
getCompanyId
()
{
return
companyId
;
}
public
void
setCompanyId
(
Long
companyId
)
{
this
.
companyId
=
companyId
;
}
public
Long
getSiteId
()
{
return
siteId
;
}
public
void
setSiteId
(
Long
siteId
)
{
this
.
siteId
=
siteId
;
}
public
Long
getOrgId
()
{
return
orgId
;
}
public
void
setOrgId
(
Long
orgId
)
{
this
.
orgId
=
orgId
;
}
public
Date
getCreatedAt
()
{
return
createdAt
;
}
public
void
setCreatedAt
(
Date
createdAt
)
{
this
.
createdAt
=
createdAt
;
}
@Override
public
String
toString
()
{
return
"AccountExchangeLog{"
+
", id="
+
id
+
", accountId="
+
accountId
+
", type="
+
type
+
", count="
+
count
+
", exchangeRate="
+
exchangeRate
+
", tokenCount="
+
tokenCount
+
", companyId="
+
companyId
+
", siteId="
+
siteId
+
", orgId="
+
orgId
+
", createdAt="
+
createdAt
+
"}"
;
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/AccountExchangeSum.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
domain
;
import
java.io.Serializable
;
import
java.util.Date
;
import
com.baomidou.mybatisplus.annotations.TableField
;
import
com.baomidou.mybatisplus.activerecord.Model
;
import
com.baomidou.mybatisplus.annotations.TableName
;
import
java.io.Serializable
;
import
com.yizhi.mall.application.config.JpaListener
;
import
org.hibernate.annotations.DynamicInsert
;
import
org.hibernate.annotations.DynamicUpdate
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiModelProperty
;
import
javax.persistence.Entity
;
import
javax.persistence.EntityListeners
;
import
javax.persistence.Id
;
/**
* <p>
* 用户金币兑换汇总表
* </p>
*
* @author MybatisCodeGenerator123
* @since 2021-01-11
*/
@DynamicUpdate
@DynamicInsert
@Api
(
tags
=
"AccountExchangeSum"
,
description
=
"用户金币兑换汇总表"
)
@TableName
(
"account_exchange_sum"
)
@Entity
@EntityListeners
(
value
=
{
JpaListener
.
class
})
public
class
AccountExchangeSum
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Id
private
Long
id
;
@TableField
(
"account_id"
)
private
Long
accountId
;
@ApiModelProperty
(
value
=
"类型 10:积分 100:人名币"
)
private
Integer
type
;
@ApiModelProperty
(
value
=
"已消耗总量 人名币单位为分"
)
private
Integer
total
;
@ApiModelProperty
(
value
=
"兑换金币总量"
)
@TableField
(
"token_total"
)
private
Integer
tokenTotal
;
@TableField
(
"company_id"
)
private
Long
companyId
;
@TableField
(
"site_id"
)
private
Long
siteId
;
@TableField
(
"created_at"
)
private
Date
createdAt
;
@TableField
(
"updated_at"
)
private
Date
updatedAt
;
public
Long
getId
()
{
return
id
;
}
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
Long
getAccountId
()
{
return
accountId
;
}
public
void
setAccountId
(
Long
accountId
)
{
this
.
accountId
=
accountId
;
}
public
Integer
getType
()
{
return
type
;
}
public
void
setType
(
Integer
type
)
{
this
.
type
=
type
;
}
public
Integer
getTotal
()
{
return
total
;
}
public
void
setTotal
(
Integer
total
)
{
this
.
total
=
total
;
}
public
Integer
getTokenTotal
()
{
return
tokenTotal
;
}
public
void
setTokenTotal
(
Integer
tokenTotal
)
{
this
.
tokenTotal
=
tokenTotal
;
}
public
Long
getCompanyId
()
{
return
companyId
;
}
public
void
setCompanyId
(
Long
companyId
)
{
this
.
companyId
=
companyId
;
}
public
Long
getSiteId
()
{
return
siteId
;
}
public
void
setSiteId
(
Long
siteId
)
{
this
.
siteId
=
siteId
;
}
public
Date
getCreatedAt
()
{
return
createdAt
;
}
public
void
setCreatedAt
(
Date
createdAt
)
{
this
.
createdAt
=
createdAt
;
}
public
Date
getUpdatedAt
()
{
return
updatedAt
;
}
public
void
setUpdatedAt
(
Date
updatedAt
)
{
this
.
updatedAt
=
updatedAt
;
}
@Override
public
String
toString
()
{
return
"AccountExchangeSum{"
+
", id="
+
id
+
", accountId="
+
accountId
+
", type="
+
type
+
", total="
+
total
+
", tokenTotal="
+
tokenTotal
+
", companyId="
+
companyId
+
", siteId="
+
siteId
+
", createdAt="
+
createdAt
+
", updatedAt="
+
updatedAt
+
"}"
;
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/AccountToken.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
domain
;
import
java.io.Serializable
;
import
java.util.Date
;
import
com.baomidou.mybatisplus.annotations.TableField
;
import
com.baomidou.mybatisplus.annotations.TableName
;
import
com.yizhi.mall.application.config.JpaListener
;
import
org.hibernate.annotations.DynamicInsert
;
import
org.hibernate.annotations.DynamicUpdate
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiModelProperty
;
import
javax.persistence.Entity
;
import
javax.persistence.EntityListeners
;
import
javax.persistence.Id
;
/**
* <p>
* 用户金币表
* </p>
*
* @author MybatisCodeGenerator123
* @since 2021-01-11
*/
@DynamicUpdate
@DynamicInsert
@Api
(
tags
=
"AccountToken"
,
description
=
"用户金币表"
)
@TableName
(
"account_token"
)
@Entity
@EntityListeners
(
value
=
{
JpaListener
.
class
})
public
class
AccountToken
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Id
private
Long
id
;
@ApiModelProperty
(
value
=
"用户ID"
)
@TableField
(
"account_id"
)
private
Long
accountId
;
@ApiModelProperty
(
value
=
"当前金币数量"
)
private
Integer
amount
;
@TableField
(
"company_id"
)
private
Long
companyId
;
@TableField
(
"site_id"
)
private
Long
siteId
;
@TableField
(
"org_id"
)
private
Long
orgId
;
@TableField
(
"created_at"
)
private
Date
createdAt
;
@TableField
(
"updated_at"
)
private
Date
updatedAt
;
public
Long
getId
()
{
return
id
;
}
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
Long
getAccountId
()
{
return
accountId
;
}
public
void
setAccountId
(
Long
accountId
)
{
this
.
accountId
=
accountId
;
}
public
Integer
getAmount
()
{
return
amount
;
}
public
void
setAmount
(
Integer
amount
)
{
this
.
amount
=
amount
;
}
public
Long
getCompanyId
()
{
return
companyId
;
}
public
void
setCompanyId
(
Long
companyId
)
{
this
.
companyId
=
companyId
;
}
public
Long
getSiteId
()
{
return
siteId
;
}
public
void
setSiteId
(
Long
siteId
)
{
this
.
siteId
=
siteId
;
}
public
Long
getOrgId
()
{
return
orgId
;
}
public
void
setOrgId
(
Long
orgId
)
{
this
.
orgId
=
orgId
;
}
public
Date
getCreatedAt
()
{
return
createdAt
;
}
public
void
setCreatedAt
(
Date
createdAt
)
{
this
.
createdAt
=
createdAt
;
}
public
Date
getUpdatedAt
()
{
return
updatedAt
;
}
public
void
setUpdatedAt
(
Date
updatedAt
)
{
this
.
updatedAt
=
updatedAt
;
}
@Override
public
String
toString
()
{
return
"AccountToken{"
+
", id="
+
id
+
", accountId="
+
accountId
+
", amount="
+
amount
+
", companyId="
+
companyId
+
", siteId="
+
siteId
+
", orgId="
+
orgId
+
", createdAt="
+
createdAt
+
", updatedAt="
+
updatedAt
+
"}"
;
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/QAccountExchangeLog.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
domain
;
import
static
com
.
querydsl
.
core
.
types
.
PathMetadataFactory
.*;
import
com.querydsl.core.types.dsl.*
;
import
com.querydsl.core.types.PathMetadata
;
import
javax.annotation.Generated
;
import
com.querydsl.core.types.Path
;
/**
* QAccountExchangeLog is a Querydsl query type for AccountExchangeLog
*/
@Generated
(
"com.querydsl.codegen.EntitySerializer"
)
public
class
QAccountExchangeLog
extends
EntityPathBase
<
AccountExchangeLog
>
{
private
static
final
long
serialVersionUID
=
-
1452765066L
;
public
static
final
QAccountExchangeLog
accountExchangeLog
=
new
QAccountExchangeLog
(
"accountExchangeLog"
);
public
final
NumberPath
<
Long
>
accountId
=
createNumber
(
"accountId"
,
Long
.
class
);
public
final
NumberPath
<
Long
>
companyId
=
createNumber
(
"companyId"
,
Long
.
class
);
public
final
NumberPath
<
Integer
>
count
=
createNumber
(
"count"
,
Integer
.
class
);
public
final
DateTimePath
<
java
.
util
.
Date
>
createdAt
=
createDateTime
(
"createdAt"
,
java
.
util
.
Date
.
class
);
public
final
NumberPath
<
java
.
math
.
BigDecimal
>
exchangeRate
=
createNumber
(
"exchangeRate"
,
java
.
math
.
BigDecimal
.
class
);
public
final
NumberPath
<
Long
>
id
=
createNumber
(
"id"
,
Long
.
class
);
public
final
NumberPath
<
Long
>
orgId
=
createNumber
(
"orgId"
,
Long
.
class
);
public
final
NumberPath
<
Long
>
siteId
=
createNumber
(
"siteId"
,
Long
.
class
);
public
final
NumberPath
<
Integer
>
tokenCount
=
createNumber
(
"tokenCount"
,
Integer
.
class
);
public
final
NumberPath
<
Integer
>
type
=
createNumber
(
"type"
,
Integer
.
class
);
public
QAccountExchangeLog
(
String
variable
)
{
super
(
AccountExchangeLog
.
class
,
forVariable
(
variable
));
}
public
QAccountExchangeLog
(
Path
<?
extends
AccountExchangeLog
>
path
)
{
super
(
path
.
getType
(),
path
.
getMetadata
());
}
public
QAccountExchangeLog
(
PathMetadata
metadata
)
{
super
(
AccountExchangeLog
.
class
,
metadata
);
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/QAccountExchangeSum.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
domain
;
import
static
com
.
querydsl
.
core
.
types
.
PathMetadataFactory
.*;
import
com.querydsl.core.types.dsl.*
;
import
com.querydsl.core.types.PathMetadata
;
import
javax.annotation.Generated
;
import
com.querydsl.core.types.Path
;
/**
* QAccountExchangeSum is a Querydsl query type for AccountExchangeSum
*/
@Generated
(
"com.querydsl.codegen.EntitySerializer"
)
public
class
QAccountExchangeSum
extends
EntityPathBase
<
AccountExchangeSum
>
{
private
static
final
long
serialVersionUID
=
-
1452758147L
;
public
static
final
QAccountExchangeSum
accountExchangeSum
=
new
QAccountExchangeSum
(
"accountExchangeSum"
);
public
final
NumberPath
<
Long
>
accountId
=
createNumber
(
"accountId"
,
Long
.
class
);
public
final
NumberPath
<
Long
>
companyId
=
createNumber
(
"companyId"
,
Long
.
class
);
public
final
DateTimePath
<
java
.
util
.
Date
>
createdAt
=
createDateTime
(
"createdAt"
,
java
.
util
.
Date
.
class
);
public
final
NumberPath
<
Long
>
id
=
createNumber
(
"id"
,
Long
.
class
);
public
final
NumberPath
<
Long
>
siteId
=
createNumber
(
"siteId"
,
Long
.
class
);
public
final
NumberPath
<
Integer
>
tokenTotal
=
createNumber
(
"tokenTotal"
,
Integer
.
class
);
public
final
NumberPath
<
Integer
>
total
=
createNumber
(
"total"
,
Integer
.
class
);
public
final
NumberPath
<
Integer
>
type
=
createNumber
(
"type"
,
Integer
.
class
);
public
final
DateTimePath
<
java
.
util
.
Date
>
updatedAt
=
createDateTime
(
"updatedAt"
,
java
.
util
.
Date
.
class
);
public
QAccountExchangeSum
(
String
variable
)
{
super
(
AccountExchangeSum
.
class
,
forVariable
(
variable
));
}
public
QAccountExchangeSum
(
Path
<?
extends
AccountExchangeSum
>
path
)
{
super
(
path
.
getType
(),
path
.
getMetadata
());
}
public
QAccountExchangeSum
(
PathMetadata
metadata
)
{
super
(
AccountExchangeSum
.
class
,
metadata
);
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/QAccountToken.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
domain
;
import
static
com
.
querydsl
.
core
.
types
.
PathMetadataFactory
.*;
import
com.querydsl.core.types.dsl.*
;
import
com.querydsl.core.types.PathMetadata
;
import
javax.annotation.Generated
;
import
com.querydsl.core.types.Path
;
/**
* QAccountToken is a Querydsl query type for AccountToken
*/
@Generated
(
"com.querydsl.codegen.EntitySerializer"
)
public
class
QAccountToken
extends
EntityPathBase
<
AccountToken
>
{
private
static
final
long
serialVersionUID
=
813836302L
;
public
static
final
QAccountToken
accountToken
=
new
QAccountToken
(
"accountToken"
);
public
final
NumberPath
<
Long
>
accountId
=
createNumber
(
"accountId"
,
Long
.
class
);
public
final
NumberPath
<
Integer
>
amount
=
createNumber
(
"amount"
,
Integer
.
class
);
public
final
NumberPath
<
Long
>
companyId
=
createNumber
(
"companyId"
,
Long
.
class
);
public
final
DateTimePath
<
java
.
util
.
Date
>
createdAt
=
createDateTime
(
"createdAt"
,
java
.
util
.
Date
.
class
);
public
final
NumberPath
<
Long
>
id
=
createNumber
(
"id"
,
Long
.
class
);
public
final
NumberPath
<
Long
>
orgId
=
createNumber
(
"orgId"
,
Long
.
class
);
public
final
NumberPath
<
Long
>
siteId
=
createNumber
(
"siteId"
,
Long
.
class
);
public
final
DateTimePath
<
java
.
util
.
Date
>
updatedAt
=
createDateTime
(
"updatedAt"
,
java
.
util
.
Date
.
class
);
public
QAccountToken
(
String
variable
)
{
super
(
AccountToken
.
class
,
forVariable
(
variable
));
}
public
QAccountToken
(
Path
<?
extends
AccountToken
>
path
)
{
super
(
path
.
getType
(),
path
.
getMetadata
());
}
public
QAccountToken
(
PathMetadata
metadata
)
{
super
(
AccountToken
.
class
,
metadata
);
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/QTokenExchangeRule.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
domain
;
import
static
com
.
querydsl
.
core
.
types
.
PathMetadataFactory
.*;
import
com.querydsl.core.types.dsl.*
;
import
com.querydsl.core.types.PathMetadata
;
import
javax.annotation.Generated
;
import
com.querydsl.core.types.Path
;
/**
* QTokenExchangeRule is a Querydsl query type for TokenExchangeRule
*/
@Generated
(
"com.querydsl.codegen.EntitySerializer"
)
public
class
QTokenExchangeRule
extends
EntityPathBase
<
TokenExchangeRule
>
{
private
static
final
long
serialVersionUID
=
1378317654L
;
public
static
final
QTokenExchangeRule
tokenExchangeRule
=
new
QTokenExchangeRule
(
"tokenExchangeRule"
);
public
final
NumberPath
<
Long
>
companyId
=
createNumber
(
"companyId"
,
Long
.
class
);
public
final
NumberPath
<
Integer
>
conditionRuleTokenCount
=
createNumber
(
"conditionRuleTokenCount"
,
Integer
.
class
);
public
final
StringPath
conditionRuleType
=
createString
(
"conditionRuleType"
);
public
final
DateTimePath
<
java
.
util
.
Date
>
createdAt
=
createDateTime
(
"createdAt"
,
java
.
util
.
Date
.
class
);
public
final
StringPath
createdName
=
createString
(
"createdName"
);
public
final
NumberPath
<
Long
>
createdUid
=
createNumber
(
"createdUid"
,
Long
.
class
);
public
final
BooleanPath
exchangeCondition
=
createBoolean
(
"exchangeCondition"
);
public
final
NumberPath
<
Long
>
id
=
createNumber
(
"id"
,
Long
.
class
);
public
final
NumberPath
<
java
.
math
.
BigDecimal
>
rate
=
createNumber
(
"rate"
,
java
.
math
.
BigDecimal
.
class
);
public
final
NumberPath
<
Long
>
siteId
=
createNumber
(
"siteId"
,
Long
.
class
);
public
final
StringPath
tokenIconUrl
=
createString
(
"tokenIconUrl"
);
public
final
StringPath
tokenName
=
createString
(
"tokenName"
);
public
final
DateTimePath
<
java
.
util
.
Date
>
updatedAt
=
createDateTime
(
"updatedAt"
,
java
.
util
.
Date
.
class
);
public
final
StringPath
updatedName
=
createString
(
"updatedName"
);
public
final
NumberPath
<
Long
>
updatedUid
=
createNumber
(
"updatedUid"
,
Long
.
class
);
public
QTokenExchangeRule
(
String
variable
)
{
super
(
TokenExchangeRule
.
class
,
forVariable
(
variable
));
}
public
QTokenExchangeRule
(
Path
<?
extends
TokenExchangeRule
>
path
)
{
super
(
path
.
getType
(),
path
.
getMetadata
());
}
public
QTokenExchangeRule
(
PathMetadata
metadata
)
{
super
(
TokenExchangeRule
.
class
,
metadata
);
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/QTokenExchangeRuleLog.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
domain
;
import
static
com
.
querydsl
.
core
.
types
.
PathMetadataFactory
.*;
import
com.querydsl.core.types.dsl.*
;
import
com.querydsl.core.types.PathMetadata
;
import
javax.annotation.Generated
;
import
com.querydsl.core.types.Path
;
/**
* QTokenExchangeRuleLog is a Querydsl query type for TokenExchangeRuleLog
*/
@Generated
(
"com.querydsl.codegen.EntitySerializer"
)
public
class
QTokenExchangeRuleLog
extends
EntityPathBase
<
TokenExchangeRuleLog
>
{
private
static
final
long
serialVersionUID
=
1573957134L
;
public
static
final
QTokenExchangeRuleLog
tokenExchangeRuleLog
=
new
QTokenExchangeRuleLog
(
"tokenExchangeRuleLog"
);
public
final
NumberPath
<
Long
>
companyId
=
createNumber
(
"companyId"
,
Long
.
class
);
public
final
NumberPath
<
Integer
>
conditionRuleTokenCount
=
createNumber
(
"conditionRuleTokenCount"
,
Integer
.
class
);
public
final
StringPath
conditionRuleType
=
createString
(
"conditionRuleType"
);
public
final
DateTimePath
<
java
.
util
.
Date
>
createdAt
=
createDateTime
(
"createdAt"
,
java
.
util
.
Date
.
class
);
public
final
StringPath
createdName
=
createString
(
"createdName"
);
public
final
NumberPath
<
Long
>
createdUid
=
createNumber
(
"createdUid"
,
Long
.
class
);
public
final
NumberPath
<
Integer
>
exchangeCondition
=
createNumber
(
"exchangeCondition"
,
Integer
.
class
);
public
final
NumberPath
<
Long
>
id
=
createNumber
(
"id"
,
Long
.
class
);
public
final
NumberPath
<
java
.
math
.
BigDecimal
>
rate
=
createNumber
(
"rate"
,
java
.
math
.
BigDecimal
.
class
);
public
final
NumberPath
<
Long
>
ruleId
=
createNumber
(
"ruleId"
,
Long
.
class
);
public
final
NumberPath
<
Long
>
siteId
=
createNumber
(
"siteId"
,
Long
.
class
);
public
final
StringPath
tokenName
=
createString
(
"tokenName"
);
public
QTokenExchangeRuleLog
(
String
variable
)
{
super
(
TokenExchangeRuleLog
.
class
,
forVariable
(
variable
));
}
public
QTokenExchangeRuleLog
(
Path
<?
extends
TokenExchangeRuleLog
>
path
)
{
super
(
path
.
getType
(),
path
.
getMetadata
());
}
public
QTokenExchangeRuleLog
(
PathMetadata
metadata
)
{
super
(
TokenExchangeRuleLog
.
class
,
metadata
);
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/QTokenLog.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
domain
;
import
static
com
.
querydsl
.
core
.
types
.
PathMetadataFactory
.*;
import
com.querydsl.core.types.dsl.*
;
import
com.querydsl.core.types.PathMetadata
;
import
javax.annotation.Generated
;
import
com.querydsl.core.types.Path
;
/**
* QTokenLog is a Querydsl query type for TokenLog
*/
@Generated
(
"com.querydsl.codegen.EntitySerializer"
)
public
class
QTokenLog
extends
EntityPathBase
<
TokenLog
>
{
private
static
final
long
serialVersionUID
=
1898907597L
;
public
static
final
QTokenLog
tokenLog
=
new
QTokenLog
(
"tokenLog"
);
public
final
StringPath
accountFullName
=
createString
(
"accountFullName"
);
public
final
NumberPath
<
Long
>
accountId
=
createNumber
(
"accountId"
,
Long
.
class
);
public
final
StringPath
accountName
=
createString
(
"accountName"
);
public
final
NumberPath
<
Integer
>
afterCount
=
createNumber
(
"afterCount"
,
Integer
.
class
);
public
final
NumberPath
<
Integer
>
beforeCount
=
createNumber
(
"beforeCount"
,
Integer
.
class
);
public
final
NumberPath
<
Integer
>
changeType
=
createNumber
(
"changeType"
,
Integer
.
class
);
public
final
NumberPath
<
Integer
>
changeCount
=
createNumber
(
"changeCount"
,
Integer
.
class
);
public
final
NumberPath
<
Integer
>
costCount
=
createNumber
(
"costCount"
,
Integer
.
class
);
public
final
NumberPath
<
Long
>
companyId
=
createNumber
(
"companyId"
,
Long
.
class
);
public
final
DateTimePath
<
java
.
util
.
Date
>
createdAt
=
createDateTime
(
"createdAt"
,
java
.
util
.
Date
.
class
);
public
final
NumberPath
<
Long
>
id
=
createNumber
(
"id"
,
Long
.
class
);
public
final
StringPath
msg
=
createString
(
"msg"
);
public
final
StringPath
orderId
=
createString
(
"orderId"
);
public
final
NumberPath
<
Long
>
orgId
=
createNumber
(
"orgId"
,
Long
.
class
);
public
final
NumberPath
<
Long
>
relationId
=
createNumber
(
"relationId"
,
Long
.
class
);
public
final
NumberPath
<
Integer
>
relationType
=
createNumber
(
"relationType"
,
Integer
.
class
);
public
final
StringPath
remark
=
createString
(
"remark"
);
public
final
StringPath
relationName
=
createString
(
"relationName"
);
public
final
StringPath
relationIconUrl
=
createString
(
"relationIconUrl"
);
public
final
NumberPath
<
Long
>
siteId
=
createNumber
(
"siteId"
,
Long
.
class
);
public
final
NumberPath
<
Long
>
thirdOrderId
=
createNumber
(
"thirdOrderId"
,
Long
.
class
);
public
final
NumberPath
<
Long
>
tokenId
=
createNumber
(
"tokenId"
,
Long
.
class
);
public
final
NumberPath
<
Integer
>
type
=
createNumber
(
"type"
,
Integer
.
class
);
public
QTokenLog
(
String
variable
)
{
super
(
TokenLog
.
class
,
forVariable
(
variable
));
}
public
QTokenLog
(
Path
<?
extends
TokenLog
>
path
)
{
super
(
path
.
getType
(),
path
.
getMetadata
());
}
public
QTokenLog
(
PathMetadata
metadata
)
{
super
(
TokenLog
.
class
,
metadata
);
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/QTokenSwitch.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
domain
;
import
static
com
.
querydsl
.
core
.
types
.
PathMetadataFactory
.*;
import
com.querydsl.core.types.dsl.*
;
import
com.querydsl.core.types.PathMetadata
;
import
javax.annotation.Generated
;
import
com.querydsl.core.types.Path
;
/**
* QTokenSwitch is a Querydsl query type for TokenSwitch
*/
@Generated
(
"com.querydsl.codegen.EntitySerializer"
)
public
class
QTokenSwitch
extends
EntityPathBase
<
TokenSwitch
>
{
private
static
final
long
serialVersionUID
=
1549933067L
;
public
static
final
QTokenSwitch
tokenSwitch
=
new
QTokenSwitch
(
"tokenSwitch"
);
public
final
NumberPath
<
Long
>
companyId
=
createNumber
(
"companyId"
,
Long
.
class
);
public
final
DateTimePath
<
java
.
util
.
Date
>
createdAt
=
createDateTime
(
"createdAt"
,
java
.
util
.
Date
.
class
);
public
final
NumberPath
<
Long
>
createdUid
=
createNumber
(
"createdUid"
,
Long
.
class
);
public
final
NumberPath
<
Long
>
id
=
createNumber
(
"id"
,
Long
.
class
);
public
final
NumberPath
<
Long
>
siteId
=
createNumber
(
"siteId"
,
Long
.
class
);
public
final
BooleanPath
tokenSwitchBol
=
createBoolean
(
"tokenSwitchBol"
);
public
final
NumberPath
<
Integer
>
type
=
createNumber
(
"type"
,
Integer
.
class
);
public
final
DateTimePath
<
java
.
util
.
Date
>
updatedAt
=
createDateTime
(
"updatedAt"
,
java
.
util
.
Date
.
class
);
public
final
NumberPath
<
Long
>
updatedUid
=
createNumber
(
"updatedUid"
,
Long
.
class
);
public
QTokenSwitch
(
String
variable
)
{
super
(
TokenSwitch
.
class
,
forVariable
(
variable
));
}
public
QTokenSwitch
(
Path
<?
extends
TokenSwitch
>
path
)
{
super
(
path
.
getType
(),
path
.
getMetadata
());
}
public
QTokenSwitch
(
PathMetadata
metadata
)
{
super
(
TokenSwitch
.
class
,
metadata
);
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/TokenExchangeRule.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
domain
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
com.baomidou.mybatisplus.annotations.TableField
;
import
com.baomidou.mybatisplus.activerecord.Model
;
import
com.baomidou.mybatisplus.annotations.TableName
;
import
java.io.Serializable
;
import
com.yizhi.mall.application.config.JpaListener
;
import
org.hibernate.annotations.DynamicInsert
;
import
org.hibernate.annotations.DynamicUpdate
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiModelProperty
;
import
javax.persistence.Entity
;
import
javax.persistence.EntityListeners
;
import
javax.persistence.Id
;
/**
* <p>
* 积分兑换金币规则表
* </p>
*
* @author MybatisCodeGenerator123
* @since 2021-01-11
*/
@DynamicUpdate
@DynamicInsert
@Api
(
tags
=
"TokenExchangeRule"
,
description
=
"积分兑换金币规则表"
)
@TableName
(
"token_exchange_rule"
)
@Entity
@EntityListeners
(
value
=
{
JpaListener
.
class
})
public
class
TokenExchangeRule
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Id
private
Long
id
;
@ApiModelProperty
(
value
=
"虚拟币名称"
)
@TableField
(
"token_name"
)
private
String
tokenName
;
@TableField
(
"token_icon_url"
)
private
String
tokenIconUrl
;
@ApiModelProperty
(
value
=
"兑换比例 100表示 100积分兑换 1金币"
)
private
BigDecimal
rate
;
@ApiModelProperty
(
value
=
"0:无条件 1:有条件"
)
@TableField
(
"exchange_condition"
)
private
Boolean
exchangeCondition
;
@ApiModelProperty
(
value
=
"DAY,WEEK,MONTH,QUARTER,HALFYEAR,YEAR"
)
@TableField
(
"condition_rule_type"
)
private
String
conditionRuleType
;
@ApiModelProperty
(
value
=
"时间范围内兑换总量"
)
@TableField
(
"condition_rule_token_count"
)
private
Integer
conditionRuleTokenCount
;
@TableField
(
"company_id"
)
private
Long
companyId
;
@TableField
(
"site_Id"
)
private
Long
siteId
;
@ApiModelProperty
(
value
=
"创建人ID"
)
@TableField
(
"created_uid"
)
private
Long
createdUid
;
@ApiModelProperty
(
value
=
"创建人name"
)
@TableField
(
"created_name"
)
private
String
createdName
;
@TableField
(
"updated_uid"
)
private
Long
updatedUid
;
@TableField
(
"updated_name"
)
private
String
updatedName
;
@TableField
(
"created_at"
)
private
Date
createdAt
;
@TableField
(
"updated_at"
)
private
Date
updatedAt
;
public
Long
getId
()
{
return
id
;
}
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
String
getTokenName
()
{
return
tokenName
;
}
public
void
setTokenName
(
String
tokenName
)
{
this
.
tokenName
=
tokenName
;
}
public
String
getTokenIconUrl
()
{
return
tokenIconUrl
;
}
public
void
setTokenIconUrl
(
String
tokenIconUrl
)
{
this
.
tokenIconUrl
=
tokenIconUrl
;
}
public
BigDecimal
getRate
()
{
return
rate
;
}
public
void
setRate
(
BigDecimal
rate
)
{
this
.
rate
=
rate
;
}
public
Boolean
getExchangeCondition
()
{
return
exchangeCondition
;
}
public
void
setExchangeCondition
(
Boolean
exchangeCondition
)
{
this
.
exchangeCondition
=
exchangeCondition
;
}
public
String
getConditionRuleType
()
{
return
conditionRuleType
;
}
public
void
setConditionRuleType
(
String
conditionRuleType
)
{
this
.
conditionRuleType
=
conditionRuleType
;
}
public
Integer
getConditionRuleTokenCount
()
{
return
conditionRuleTokenCount
;
}
public
void
setConditionRuleTokenCount
(
Integer
conditionRuleTokenCount
)
{
this
.
conditionRuleTokenCount
=
conditionRuleTokenCount
;
}
public
Long
getCompanyId
()
{
return
companyId
;
}
public
void
setCompanyId
(
Long
companyId
)
{
this
.
companyId
=
companyId
;
}
public
Long
getSiteId
()
{
return
siteId
;
}
public
void
setSiteId
(
Long
siteId
)
{
this
.
siteId
=
siteId
;
}
public
Long
getCreatedUid
()
{
return
createdUid
;
}
public
void
setCreatedUid
(
Long
createdUid
)
{
this
.
createdUid
=
createdUid
;
}
public
String
getCreatedName
()
{
return
createdName
;
}
public
void
setCreatedName
(
String
createdName
)
{
this
.
createdName
=
createdName
;
}
public
Long
getUpdatedUid
()
{
return
updatedUid
;
}
public
void
setUpdatedUid
(
Long
updatedUid
)
{
this
.
updatedUid
=
updatedUid
;
}
public
String
getUpdatedName
()
{
return
updatedName
;
}
public
void
setUpdatedName
(
String
updatedName
)
{
this
.
updatedName
=
updatedName
;
}
public
Date
getCreatedAt
()
{
return
createdAt
;
}
public
void
setCreatedAt
(
Date
createdAt
)
{
this
.
createdAt
=
createdAt
;
}
public
Date
getUpdatedAt
()
{
return
updatedAt
;
}
public
void
setUpdatedAt
(
Date
updatedAt
)
{
this
.
updatedAt
=
updatedAt
;
}
@Override
public
String
toString
()
{
return
"TokenExchangeRule{"
+
", id="
+
id
+
", tokenName="
+
tokenName
+
", tokenIconUrl="
+
tokenIconUrl
+
", rate="
+
rate
+
", exchangeCondition="
+
exchangeCondition
+
", conditionRuleType="
+
conditionRuleType
+
", conditionRuleTokenCount="
+
conditionRuleTokenCount
+
", companyId="
+
companyId
+
", siteId="
+
siteId
+
", createdUid="
+
createdUid
+
", createdName="
+
createdName
+
", updatedUid="
+
updatedUid
+
", updatedName="
+
updatedName
+
", createdAt="
+
createdAt
+
", updatedAt="
+
updatedAt
+
"}"
;
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/TokenExchangeRuleLog.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
domain
;
import
com.baomidou.mybatisplus.annotations.TableField
;
import
com.baomidou.mybatisplus.annotations.TableName
;
import
com.yizhi.mall.application.config.JpaListener
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiModelProperty
;
import
org.hibernate.annotations.DynamicInsert
;
import
org.hibernate.annotations.DynamicUpdate
;
import
javax.persistence.Entity
;
import
javax.persistence.EntityListeners
;
import
javax.persistence.Id
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* <p>
* 积分兑换金币规则表日志表
* </p>
*
* @author MybatisCodeGenerator123
* @since 2021-01-11
*/
@DynamicUpdate
@DynamicInsert
@Api
(
tags
=
"TokenExchangeRuleLog"
,
description
=
"积分兑换金币规则表日志表"
)
@TableName
(
"token_exchange_rule_log"
)
@Entity
@EntityListeners
(
value
=
{
JpaListener
.
class
})
public
class
TokenExchangeRuleLog
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Id
private
Long
id
;
@TableField
(
"rule_id"
)
private
Long
ruleId
;
@ApiModelProperty
(
value
=
"虚拟币名称"
)
@TableField
(
"token_name"
)
private
String
tokenName
;
@ApiModelProperty
(
value
=
"兑换比例 100表示 100积分兑换 1金币"
)
private
BigDecimal
rate
;
@ApiModelProperty
(
value
=
"0:无条件 1:有条件"
)
@TableField
(
"exchange_condition"
)
private
Boolean
exchangeCondition
;
@ApiModelProperty
(
value
=
"DAY,WEEK,MONTH,QUARTER,HALFYEAR,YEAR"
)
@TableField
(
"condition_rule_type"
)
private
String
conditionRuleType
;
@ApiModelProperty
(
value
=
"时间范围内退换总量"
)
@TableField
(
"condition_rule_token_count"
)
private
Integer
conditionRuleTokenCount
;
@TableField
(
"company_id"
)
private
Long
companyId
;
@TableField
(
"site_Id"
)
private
Long
siteId
;
@ApiModelProperty
(
value
=
"创建人ID"
)
@TableField
(
"created_uid"
)
private
Long
createdUid
;
@ApiModelProperty
(
value
=
"创建人name"
)
@TableField
(
"created_name"
)
private
String
createdName
;
@TableField
(
"created_at"
)
private
Date
createdAt
;
public
Long
getId
()
{
return
id
;
}
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
Long
getRuleId
()
{
return
ruleId
;
}
public
void
setRuleId
(
Long
ruleId
)
{
this
.
ruleId
=
ruleId
;
}
public
String
getTokenName
()
{
return
tokenName
;
}
public
void
setTokenName
(
String
tokenName
)
{
this
.
tokenName
=
tokenName
;
}
public
BigDecimal
getRate
()
{
return
rate
;
}
public
void
setRate
(
BigDecimal
rate
)
{
this
.
rate
=
rate
;
}
public
Boolean
getExchangeCondition
()
{
return
exchangeCondition
;
}
public
void
setExchangeCondition
(
Boolean
exchangeCondition
)
{
this
.
exchangeCondition
=
exchangeCondition
;
}
public
String
getConditionRuleType
()
{
return
conditionRuleType
;
}
public
void
setConditionRuleType
(
String
conditionRuleType
)
{
this
.
conditionRuleType
=
conditionRuleType
;
}
public
Integer
getConditionRuleTokenCount
()
{
return
conditionRuleTokenCount
;
}
public
void
setConditionRuleTokenCount
(
Integer
conditionRuleTokenCount
)
{
this
.
conditionRuleTokenCount
=
conditionRuleTokenCount
;
}
public
Long
getCompanyId
()
{
return
companyId
;
}
public
void
setCompanyId
(
Long
companyId
)
{
this
.
companyId
=
companyId
;
}
public
Long
getSiteId
()
{
return
siteId
;
}
public
void
setSiteId
(
Long
siteId
)
{
this
.
siteId
=
siteId
;
}
public
Long
getCreatedUid
()
{
return
createdUid
;
}
public
void
setCreatedUid
(
Long
createdUid
)
{
this
.
createdUid
=
createdUid
;
}
public
String
getCreatedName
()
{
return
createdName
;
}
public
void
setCreatedName
(
String
createdName
)
{
this
.
createdName
=
createdName
;
}
public
Date
getCreatedAt
()
{
return
createdAt
;
}
public
void
setCreatedAt
(
Date
createdAt
)
{
this
.
createdAt
=
createdAt
;
}
@Override
public
String
toString
()
{
return
"TokenExchangeRuleLog{"
+
", id="
+
id
+
", ruleId="
+
ruleId
+
", tokenName="
+
tokenName
+
", rate="
+
rate
+
", exchangeCondition="
+
exchangeCondition
+
", conditionRuleType="
+
conditionRuleType
+
", conditionRuleTokenCount="
+
conditionRuleTokenCount
+
", companyId="
+
companyId
+
", siteId="
+
siteId
+
", createdUid="
+
createdUid
+
", createdName="
+
createdName
+
", createdAt="
+
createdAt
+
"}"
;
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/TokenLog.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
domain
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
com.baomidou.mybatisplus.annotations.TableField
;
import
com.baomidou.mybatisplus.activerecord.Model
;
import
com.baomidou.mybatisplus.annotations.TableName
;
import
java.io.Serializable
;
import
com.yizhi.mall.application.config.JpaListener
;
import
org.hibernate.annotations.DynamicInsert
;
import
org.hibernate.annotations.DynamicUpdate
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiModelProperty
;
import
javax.persistence.Entity
;
import
javax.persistence.EntityListeners
;
import
javax.persistence.Id
;
/**
* <p>
* 金币明细表
* </p>
*
* @author MybatisCodeGenerator123
* @since 2021-01-13
*/
@DynamicUpdate
@DynamicInsert
@Api
(
tags
=
"TokenLog"
,
description
=
"金币明细表"
)
@TableName
(
"token_log"
)
@Entity
@EntityListeners
(
value
=
{
JpaListener
.
class
})
public
class
TokenLog
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Id
private
Long
id
;
@ApiModelProperty
(
value
=
"金币账户ID"
)
@TableField
(
"token_id"
)
private
Long
tokenId
;
@ApiModelProperty
(
value
=
"用户ID"
)
@TableField
(
"account_id"
)
private
Long
accountId
;
@ApiModelProperty
(
value
=
"用户名"
)
@TableField
(
"account_name"
)
private
String
accountName
;
@ApiModelProperty
(
value
=
"用户姓名"
)
@TableField
(
"account_full_name"
)
private
String
accountFullName
;
@ApiModelProperty
(
value
=
"平台订单号 新增token_log是生成"
)
@TableField
(
"order_id"
)
private
String
orderId
;
@ApiModelProperty
(
value
=
"第三方订单号 如果是微信,支付宝 第三方商城 等需要填写"
)
@TableField
(
"third_order_id"
)
private
Long
thirdOrderId
;
@ApiModelProperty
(
value
=
"变动类型 -1减 ,1加"
)
@TableField
(
"change_type"
)
private
Integer
changeType
;
@ApiModelProperty
(
value
=
"变更前数量"
)
@TableField
(
"before_count"
)
private
Integer
beforeCount
;
@ApiModelProperty
(
value
=
"本次变更数量 + 加 -减"
)
@TableField
(
"change_count"
)
private
Integer
changeCount
;
@ApiModelProperty
(
value
=
"变更后数量"
)
@TableField
(
"after_count"
)
private
Integer
afterCount
;
@ApiModelProperty
(
value
=
"变更类型 100:积分兑换 110:微信充值 120:支付宝充值 180:帖子被打赏 181:回帖被打赏 182:作品被打赏 200:项目报名 210:课程报名 280:打赏帖子 281:打赏回帖 282:打赏作品 300:购买第三方产品"
)
private
Integer
type
;
@ApiModelProperty
(
value
=
"兑换金币 消耗积分或人名币数量 "
)
@TableField
(
"cost_count"
)
private
Integer
costCount
;
@ApiModelProperty
(
value
=
"业务 类型 消费购买仅在部分type下有效"
)
@TableField
(
"relation_type"
)
private
Integer
relationType
;
@ApiModelProperty
(
value
=
"业务 名 考试名 或项目名"
)
@TableField
(
"relation_name"
)
private
String
relationName
;
@ApiModelProperty
(
value
=
"业务 icoc"
)
@TableField
(
"relation_icon_url"
)
private
String
relationIconUrl
;
@ApiModelProperty
(
value
=
"业务ID 消费购买"
)
@TableField
(
"relation_id"
)
private
Long
relationId
;
@ApiModelProperty
(
value
=
"订单 提示"
)
private
String
msg
;
@ApiModelProperty
(
value
=
"备注"
)
private
String
remark
;
@TableField
(
"company_id"
)
private
Long
companyId
;
@TableField
(
"site_id"
)
private
Long
siteId
;
@TableField
(
"org_id"
)
private
Long
orgId
;
@TableField
(
"created_at"
)
private
Date
createdAt
;
public
Long
getId
()
{
return
id
;
}
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
Long
getTokenId
()
{
return
tokenId
;
}
public
void
setTokenId
(
Long
tokenId
)
{
this
.
tokenId
=
tokenId
;
}
public
Long
getAccountId
()
{
return
accountId
;
}
public
void
setAccountId
(
Long
accountId
)
{
this
.
accountId
=
accountId
;
}
public
String
getAccountName
()
{
return
accountName
;
}
public
void
setAccountName
(
String
accountName
)
{
this
.
accountName
=
accountName
;
}
public
String
getAccountFullName
()
{
return
accountFullName
;
}
public
void
setAccountFullName
(
String
accountFullName
)
{
this
.
accountFullName
=
accountFullName
;
}
public
String
getOrderId
()
{
return
orderId
;
}
public
void
setOrderId
(
String
orderId
)
{
this
.
orderId
=
orderId
;
}
public
Long
getThirdOrderId
()
{
return
thirdOrderId
;
}
public
void
setThirdOrderId
(
Long
thirdOrderId
)
{
this
.
thirdOrderId
=
thirdOrderId
;
}
public
Integer
getChangeType
()
{
return
changeType
;
}
public
void
setChangeType
(
Integer
changeType
)
{
this
.
changeType
=
changeType
;
}
public
Integer
getBeforeCount
()
{
return
beforeCount
;
}
public
void
setBeforeCount
(
Integer
beforeCount
)
{
this
.
beforeCount
=
beforeCount
;
}
public
Integer
getChangeCount
()
{
return
changeCount
;
}
public
void
setChangeCount
(
Integer
changeCount
)
{
this
.
changeCount
=
changeCount
;
}
public
Integer
getAfterCount
()
{
return
afterCount
;
}
public
void
setAfterCount
(
Integer
afterCount
)
{
this
.
afterCount
=
afterCount
;
}
public
Integer
getType
()
{
return
type
;
}
public
void
setType
(
Integer
type
)
{
this
.
type
=
type
;
}
public
Integer
getCostCount
()
{
return
costCount
;
}
public
void
setCostCount
(
Integer
costCount
)
{
this
.
costCount
=
costCount
;
}
public
Integer
getRelationType
()
{
return
relationType
;
}
public
void
setRelationType
(
Integer
relationType
)
{
this
.
relationType
=
relationType
;
}
public
String
getRelationName
()
{
return
relationName
;
}
public
void
setRelationName
(
String
relationName
)
{
this
.
relationName
=
relationName
;
}
public
String
getRelationIconUrl
()
{
return
relationIconUrl
;
}
public
void
setRelationIconUrl
(
String
relationIconUrl
)
{
this
.
relationIconUrl
=
relationIconUrl
;
}
public
Long
getRelationId
()
{
return
relationId
;
}
public
void
setRelationId
(
Long
relationId
)
{
this
.
relationId
=
relationId
;
}
public
String
getMsg
()
{
return
msg
;
}
public
void
setMsg
(
String
msg
)
{
this
.
msg
=
msg
;
}
public
String
getRemark
()
{
return
remark
;
}
public
void
setRemark
(
String
remark
)
{
this
.
remark
=
remark
;
}
public
Long
getCompanyId
()
{
return
companyId
;
}
public
void
setCompanyId
(
Long
companyId
)
{
this
.
companyId
=
companyId
;
}
public
Long
getSiteId
()
{
return
siteId
;
}
public
void
setSiteId
(
Long
siteId
)
{
this
.
siteId
=
siteId
;
}
public
Long
getOrgId
()
{
return
orgId
;
}
public
void
setOrgId
(
Long
orgId
)
{
this
.
orgId
=
orgId
;
}
public
Date
getCreatedAt
()
{
return
createdAt
;
}
public
void
setCreatedAt
(
Date
createdAt
)
{
this
.
createdAt
=
createdAt
;
}
@Override
public
String
toString
()
{
return
"TokenLog{"
+
", id="
+
id
+
", tokenId="
+
tokenId
+
", accountId="
+
accountId
+
", accountName="
+
accountName
+
", accountFullName="
+
accountFullName
+
", orderId="
+
orderId
+
", thirdOrderId="
+
thirdOrderId
+
", changeType="
+
changeType
+
", beforeCount="
+
beforeCount
+
", changeCount="
+
changeCount
+
", afterCount="
+
afterCount
+
", type="
+
type
+
", costCount="
+
costCount
+
", relationType="
+
relationType
+
", relationName="
+
relationName
+
", relationIconUrl="
+
relationIconUrl
+
", relationId="
+
relationId
+
", msg="
+
msg
+
", remark="
+
remark
+
", companyId="
+
companyId
+
", siteId="
+
siteId
+
", orgId="
+
orgId
+
", createdAt="
+
createdAt
+
"}"
;
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/domain/TokenSwitch.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
domain
;
import
java.io.Serializable
;
import
com.baomidou.mybatisplus.enums.IdType
;
import
java.util.Date
;
import
com.baomidou.mybatisplus.annotations.TableId
;
import
com.baomidou.mybatisplus.annotations.TableField
;
import
com.baomidou.mybatisplus.activerecord.Model
;
import
com.baomidou.mybatisplus.annotations.TableName
;
import
java.io.Serializable
;
import
com.yizhi.mall.application.config.JpaListener
;
import
org.hibernate.annotations.DynamicInsert
;
import
org.hibernate.annotations.DynamicUpdate
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiModelProperty
;
import
javax.persistence.Entity
;
import
javax.persistence.EntityListeners
;
import
javax.persistence.Id
;
/**
* <p>
*
* </p>
*
* @author MybatisCodeGenerator123
* @since 2021-01-11
*/
@DynamicUpdate
@DynamicInsert
@Api
(
tags
=
"TokenSwitch"
,
description
=
""
)
@TableName
(
"token_switch"
)
@Entity
@EntityListeners
(
value
=
{
JpaListener
.
class
})
public
class
TokenSwitch
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Id
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
@TableField
(
"site_id"
)
private
Long
siteId
;
@TableField
(
"company_id"
)
private
Long
companyId
;
@ApiModelProperty
(
value
=
"10:积分 20:人民币 30:第三方商城"
)
private
Integer
type
;
@ApiModelProperty
(
value
=
"如果为0,则关闭。1:打开"
)
@TableField
(
"token_switch"
)
private
Boolean
tokenSwitchBol
;
@TableField
(
"created_at"
)
private
Date
createdAt
;
@TableField
(
"created_uid"
)
private
Long
createdUid
;
@TableField
(
"updated_at"
)
private
Date
updatedAt
;
@TableField
(
"updated_uid"
)
private
Long
updatedUid
;
public
Long
getId
()
{
return
id
;
}
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
Long
getSiteId
()
{
return
siteId
;
}
public
void
setSiteId
(
Long
siteId
)
{
this
.
siteId
=
siteId
;
}
public
Long
getCompanyId
()
{
return
companyId
;
}
public
void
setCompanyId
(
Long
companyId
)
{
this
.
companyId
=
companyId
;
}
public
Integer
getType
()
{
return
type
;
}
public
void
setType
(
Integer
type
)
{
this
.
type
=
type
;
}
public
Boolean
getTokenSwitchBol
()
{
return
tokenSwitchBol
;
}
public
void
setTokenSwitchBol
(
Boolean
tokenSwitch
)
{
this
.
tokenSwitchBol
=
tokenSwitch
;
}
public
Date
getCreatedAt
()
{
return
createdAt
;
}
public
void
setCreatedAt
(
Date
createdAt
)
{
this
.
createdAt
=
createdAt
;
}
public
Long
getCreatedUid
()
{
return
createdUid
;
}
public
void
setCreatedUid
(
Long
createdUid
)
{
this
.
createdUid
=
createdUid
;
}
public
Date
getUpdatedAt
()
{
return
updatedAt
;
}
public
void
setUpdatedAt
(
Date
updatedAt
)
{
this
.
updatedAt
=
updatedAt
;
}
public
Long
getUpdatedUid
()
{
return
updatedUid
;
}
public
void
setUpdatedUid
(
Long
updatedUid
)
{
this
.
updatedUid
=
updatedUid
;
}
@Override
public
String
toString
()
{
return
"TokenSwitch{"
+
", id="
+
id
+
", siteId="
+
siteId
+
", companyId="
+
companyId
+
", type="
+
type
+
", tokenSwitchBol="
+
tokenSwitchBol
+
", createdAt="
+
createdAt
+
", createdUid="
+
createdUid
+
", updatedAt="
+
updatedAt
+
", updatedUid="
+
updatedUid
+
"}"
;
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/excel/convert/CustomTokenLogTypeConverter.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
excel
.
convert
;
import
com.alibaba.excel.converters.Converter
;
import
com.alibaba.excel.enums.CellDataTypeEnum
;
import
com.alibaba.excel.metadata.CellData
;
import
com.alibaba.excel.metadata.GlobalConfiguration
;
import
com.alibaba.excel.metadata.property.ExcelContentProperty
;
import
com.alibaba.excel.util.NumberUtils
;
import
java.text.ParseException
;
public
class
CustomTokenLogTypeConverter
implements
Converter
<
Integer
>
{
@Override
public
Class
supportJavaTypeKey
()
{
return
Integer
.
class
;
}
@Override
public
CellDataTypeEnum
supportExcelTypeKey
()
{
return
CellDataTypeEnum
.
STRING
;
}
/**
* 这里是读的时候会调用 不用管
*
* @param cellData NotNull
* @param contentProperty Nullable
* @param globalConfiguration NotNull
* @return
*/
@Override
public
Integer
convertToJavaData
(
CellData
cellData
,
ExcelContentProperty
contentProperty
,
GlobalConfiguration
globalConfiguration
)
throws
ParseException
{
return
NumberUtils
.
parseInteger
(
cellData
.
getStringValue
(),
contentProperty
);
}
/**
* 这里是写的时候会调用 不用管
*
* @param value NotNull
* @param contentProperty Nullable
* @param globalConfiguration NotNull
* @return
*/
@Override
public
CellData
convertToExcelData
(
Integer
value
,
ExcelContentProperty
contentProperty
,
GlobalConfiguration
globalConfiguration
)
{
CellData
finalValue
=
new
CellData
(
"默认"
);
switch
(
value
)
{
case
100
:
finalValue
=
new
CellData
(
"积分兑换"
);
break
;
case
110
:
finalValue
=
new
CellData
(
"微信充值"
);
break
;
case
120
:
finalValue
=
new
CellData
(
"支付宝充值"
);
break
;
case
180
:
finalValue
=
new
CellData
(
"帖子被打赏"
);
break
;
case
181
:
finalValue
=
new
CellData
(
"回帖被打赏"
);
break
;
case
182
:
finalValue
=
new
CellData
(
"作品被打赏"
);
break
;
case
200
:
finalValue
=
new
CellData
(
"项目报名"
);
break
;
case
210
:
finalValue
=
new
CellData
(
"课程报名"
);
break
;
case
280
:
finalValue
=
new
CellData
(
"打赏帖子"
);
break
;
case
281
:
finalValue
=
new
CellData
(
"打赏回帖"
);
break
;
case
282
:
finalValue
=
new
CellData
(
"打赏作品"
);
break
;
case
300
:
finalValue
=
new
CellData
(
"购买第三方产品"
);
break
;
default
:
finalValue
=
new
CellData
(
"其他"
);
break
;
}
return
finalValue
;
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/excel/export/TokenLogExport.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
excel
.
export
;
import
cn.hutool.core.date.DateUtil
;
import
com.alibaba.excel.EasyExcel
;
import
com.alibaba.excel.write.metadata.style.WriteCellStyle
;
import
com.alibaba.excel.write.style.HorizontalCellStyleStrategy
;
import
com.yizhi.application.orm.id.IdGenerator
;
import
com.yizhi.core.application.context.RequestContext
;
import
com.yizhi.core.application.context.TaskContext
;
import
com.yizhi.core.application.file.task.AbstractDefaultTask
;
import
com.yizhi.core.application.file.util.OssUpload
;
import
com.yizhi.mall.application.excel.model.TokenLogExcelModel
;
import
com.yizhi.mall.application.pojo.qo.ManageTokenLogQO
;
import
com.yizhi.mall.application.pojo.vo.ManageTokenLogVO
;
import
com.yizhi.mall.application.service.ITokenLogService
;
import
io.swagger.annotations.Api
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.poi.ss.usermodel.HorizontalAlignment
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.io.File
;
import
java.util.*
;
@Api
(
tags
=
"消费记录导出接口"
)
@Slf4j
@Component
public
class
TokenLogExport
extends
AbstractDefaultTask
<
String
,
Map
<
String
,
Object
>>
{
@Autowired
private
IdGenerator
idGenerator
;
@Autowired
private
ITokenLogService
tokenLogService
;
/**
* 获取自定义表头
*
* @return
*/
private
List
<
List
<
String
>>
head
()
{
List
<
String
>
secondHead
=
Arrays
.
asList
(
"用户名"
,
"姓名"
,
"时间"
,
"订单号"
,
"类型"
,
"备注"
,
"消耗/充值数量"
);
List
<
List
<
String
>>
list
=
new
ArrayList
<
List
<
String
>>();
for
(
int
i
=
0
;
i
<
7
;
i
++)
{
List
<
String
>
head
=
new
ArrayList
<
String
>();
head
.
add
(
"兑换记录"
+
DateUtil
.
format
(
new
Date
(),
"yyyyMMddHHmmss"
));
head
.
add
(
secondHead
.
get
(
i
));
list
.
add
(
head
);
}
return
list
;
}
/**
* 组装数据
*
* @return
*/
private
List
<
TokenLogExcelModel
>
getData
(
RequestContext
context
,
ManageTokenLogQO
qo
)
{
List
<
TokenLogExcelModel
>
records
=
new
ArrayList
<>();
try
{
qo
.
setPageSize
(
Integer
.
MAX_VALUE
);
List
<
ManageTokenLogVO
>
dataList
=
tokenLogService
.
getLogListByCondition
(
context
,
qo
).
getRecords
();
TokenLogExcelModel
data
=
null
;
if
(
CollectionUtils
.
isNotEmpty
(
dataList
))
{
for
(
ManageTokenLogVO
tokenLogVO
:
dataList
)
{
data
=
new
TokenLogExcelModel
();
BeanUtils
.
copyProperties
(
tokenLogVO
,
data
);
records
.
add
(
data
);
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
records
;
}
@Override
protected
String
execute
(
Map
<
String
,
Object
>
map
)
{
Date
now
=
new
Date
();
String
formatDate
=
DateUtil
.
format
(
now
,
"yyyyMMddHHmmss"
);
String
serialNo
=
"TOKEN-LOG-EXPORT-"
+
formatDate
;
String
taskName
=
"兑换记录明细-"
+
formatDate
;
RequestContext
context
=(
RequestContext
)
map
.
get
(
"context"
);
Long
accountId
=
context
.
getAccountId
();
Long
siteId
=
context
.
getSiteId
();
Long
companyId
=
context
.
getCompanyId
();
TaskContext
taskContext
=
new
TaskContext
(
idGenerator
.
generate
(),
serialNo
,
taskName
,
accountId
,
now
,
siteId
,
companyId
);
//记录任务日志
working
(
taskContext
);
ManageTokenLogQO
qo
=
(
ManageTokenLogQO
)
map
.
get
(
"qo"
);
List
<
TokenLogExcelModel
>
excelModelList
=
getData
(
context
,
qo
);
if
(
CollectionUtils
.
isEmpty
(
excelModelList
))
{
log
.
info
(
"没有当前需要导出的消费记录"
);
fail
(
taskContext
,
"没有当前需要导出的消费记录!"
);
return
"fail"
;
}
log
.
info
(
"开始组装消费记录"
);
try
{
String
fileName
=
"兑换记录"
+
formatDate
+
".xlsx"
;
// 头的策略
WriteCellStyle
headWriteCellStyle
=
new
WriteCellStyle
();
//设置表头左对齐
headWriteCellStyle
.
setHorizontalAlignment
(
HorizontalAlignment
.
LEFT
);
// 内容的策略
WriteCellStyle
contentWriteCellStyle
=
new
WriteCellStyle
();
//设置内容左对齐
contentWriteCellStyle
.
setHorizontalAlignment
(
HorizontalAlignment
.
LEFT
);
String
requestPath
=
"/manage/upload"
;
//OssUpload.SAVE_PATH;
File
file
=
new
File
(
requestPath
);
if
(!
file
.
exists
())
{
file
.
mkdirs
();
}
String
path
=
requestPath
+
File
.
separator
+
fileName
;
// 这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现
HorizontalCellStyleStrategy
horizontalCellStyleStrategy
=
new
HorizontalCellStyleStrategy
(
headWriteCellStyle
,
contentWriteCellStyle
);
EasyExcel
.
write
(
path
,
TokenLogExcelModel
.
class
).
registerWriteHandler
(
horizontalCellStyleStrategy
).
head
(
head
()).
sheet
(
"消费记录导出"
).
doWrite
(
excelModelList
);
String
upLoadUrl
=
OssUpload
.
upload
(
path
,
fileName
);
log
.
info
(
"导出成功:upLoadUrl:"
+
upLoadUrl
);
success
(
taskContext
,
"成功"
,
upLoadUrl
);
}
catch
(
Exception
e
)
{
fail
(
taskContext
,
"写入过程出现异常;"
);
log
.
error
(
"写入阿里云出错,出错信息:{}"
,
e
);
}
return
taskName
;
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/excel/model/TokenLogExcelModel.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
excel
.
model
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
com.yizhi.mall.application.excel.convert.CustomTokenLogTypeConverter
;
import
io.swagger.annotations.ApiModel
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* <p>
* 直播活动表
* </p>
*
* @author taoge
* @since 2020-11-17
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
@ApiModel
(
value
=
"TokenLog对象"
,
description
=
"消费记录导出"
)
public
class
TokenLogExcelModel
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ExcelProperty
(
index
=
0
,
value
=
"姓名"
)
private
String
name
;
@ExcelProperty
(
index
=
1
,
value
=
"用户名"
)
private
String
fullName
;
@ExcelProperty
(
index
=
2
,
value
=
"时间"
)
private
Date
createdAt
;
@ExcelProperty
(
index
=
3
,
value
=
"订单号"
)
private
String
orderId
;
@ExcelProperty
(
index
=
4
,
value
=
"类型"
,
converter
=
CustomTokenLogTypeConverter
.
class
)
private
Integer
type
;
@ExcelProperty
(
index
=
5
,
value
=
"备注"
)
private
String
remark
;
@ExcelProperty
(
index
=
6
,
value
=
"消耗/充值数量"
)
private
Integer
count
;
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/exception/ApiResponseHandler.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.exception
import
com.yizhi.core.application.exception.BizException
import
com.yizhi.mall.application.exception.RequestParameter.ERROR_CODE
import
com.yizhi.mall.application.exception.RequestParameter.EXCEPTION
import
com.yizhi.util.application.domain.BizResponse
import
com.yizhi.util.application.enums.i18n.Constants
import
org.slf4j.LoggerFactory
import
org.springframework.messaging.handler.annotation.support.MethodArgumentNotValidException
import
org.springframework.validation.BeanPropertyBindingResult
import
org.springframework.web.HttpRequestMethodNotSupportedException
import
org.springframework.web.bind.annotation.ControllerAdvice
import
org.springframework.web.bind.annotation.ExceptionHandler
import
org.springframework.web.bind.annotation.ResponseBody
import
javax.servlet.http.HttpServletRequest
/**
* @Author: Lvjh
* @Date 2020/02/19 18:32
*/
@ControllerAdvice
open
class
ApiResponseHandler
{
private
val
logger
=
LoggerFactory
.
getLogger
(
javaClass
)
@ExceptionHandler
(
HttpRequestMethodNotSupportedException
::
class
)
@ResponseBody
fun
requestMethodNotSupportException
(
e
:
HttpRequestMethodNotSupportedException
,
request
:
HttpServletRequest
):
BizResponse
<
Any
>
{
logger
.
error
(
" requestMethodNotSupportException uri[${request.requestURI}]"
,
e
)
return
BizResponse
.
fail
(
Constants
.
MSG_BIZ_FAIL
.
code
.
toString
(),
Constants
.
MSG_BIZ_FAIL
.
name
)
}
@ExceptionHandler
(
MethodArgumentNotValidException
::
class
)
@ResponseBody
fun
parameterInvalidException
(
e
:
MethodArgumentNotValidException
,
request
:
HttpServletRequest
):
BizResponse
<
Any
>
{
logger
.
error
(
" parameterInvalidException uri[${request.requestURI}]"
,
e
)
var
msg
=
Constants
.
MSG_BIZ_FAIL
.
name
try
{
val
propertyBindResult
:
BeanPropertyBindingResult
=
e
.
bindingResult
as
BeanPropertyBindingResult
if
(
propertyBindResult
.
hasErrors
())
{
val
sbf
=
StringBuffer
()
propertyBindResult
.
allErrors
.
forEach
{
sbf
.
append
(
it
.
defaultMessage
).
append
(
";"
)
}
msg
=
sbf
.
toString
()
}
return
BizResponse
.
fail
(
Constants
.
MSG_BIZ_FAIL
.
code
.
toString
(),
msg
)
}
catch
(
e
:
Exception
)
{
logger
.
error
(
" parameterInvalidException url[${request.requestURL}]"
,
e
)
e
.
printStackTrace
()
return
BizResponse
.
fail
(
Constants
.
MSG_BIZ_FAIL
.
code
.
toString
(),
Constants
.
MSG_BIZ_FAIL
.
name
)
}
}
@ExceptionHandler
(
Exception
::
class
)
@ResponseBody
fun
sysException
(
e
:
Exception
,
request
:
HttpServletRequest
):
BizResponse
<
Any
>
{
request
.
setAttribute
(
EXCEPTION
,
getStackTrace
(
e
))
request
.
setAttribute
(
ERROR_CODE
,
Constants
.
MSG_BIZ_FAIL
.
code
.
toString
())
val
clientIp
=
request
.
getHeader
(
"X-Real-IP"
)
logger
.
error
(
"Exception requestUrl[${request.requestURI},clientIp:$clientIp] "
,
e
)
e
.
printStackTrace
()
return
BizResponse
.
fail
(
Constants
.
MSG_BIZ_FAIL
.
code
.
toString
(),
Constants
.
MSG_BIZ_FAIL
.
name
)
}
@ExceptionHandler
(
BizException
::
class
)
@ResponseBody
fun
bizException
(
e
:
BizException
,
request
:
HttpServletRequest
):
BizResponse
<
Any
>
{
request
.
setAttribute
(
ERROR_CODE
,
e
.
code
)
request
.
setAttribute
(
EXCEPTION
,
getStackTrace
(
e
))
logger
.
error
(
"BizException requestUrl[${request.requestURL}] ${e.code}:${e.msg}"
)
return
BizResponse
.
fail
(
e
.
code
,
e
.
msg
)
}
private
fun
getStackTrace
(
e
:
Exception
):
String
{
val
stringBuffer
=
StringBuffer
(
e
.
toString
()
+
"\n"
)
val
messages
=
e
.
stackTrace
messages
.
forEach
{
stringBuffer
.
append
(
"\t $it \n"
)
}
return
stringBuffer
.
toString
()
}
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/exception/RequestParameter.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.exception
/**
* @Author: Lvjh
* @Date 2020/02/19 18:32
*/
object
RequestParameter
{
const
val
CUSTOMER_MOBILE
=
"customer_mobile"
const
val
CUSTOMER_ID
=
"customer_id"
const
val
REQUEST_UUID
=
"request_uuid"
const
val
VERSION
=
"version"
const
val
PLATFORM
=
"channel_code"
const
val
DEVICE_UUID
=
"device_uuid"
const
val
TIMESTAMP
=
"timestamp"
const
val
EXCEPTION
=
"exception"
const
val
ERROR_CODE
=
"error_code"
const
val
TIME_ZONE
=
"user_timezone"
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/handler/AccountManagerHandler.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
handler
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.yizhi.core.application.cache.RedisCache
;
import
com.yizhi.system.application.feign.AuthFeignClient
;
import
com.yizhi.system.application.vo.practice.OrgAccountVo
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
/**
* @ClassName: AccountManagerHandler
* @author: zjl
* @date: 2021/1/15 14:09
*/
@Component
public
class
AccountManagerHandler
{
@Autowired
private
AuthFeignClient
authFeignClient
;
@Autowired
private
RedisCache
redisCache
;
private
String
REDIS_KEY_MANAGE
=
"MALL_ADMIN_MANAGE_ORG_OR_USER"
;
// 缓存两小时
private
Long
duration
=
2
*
3600L
;
private
Logger
logger
=
LoggerFactory
.
getLogger
(
AccountManagerHandler
.
class
);
public
OrgAccountVo
getManageOrgAndUser
(
Long
adminId
,
Long
siteId
)
{
String
key
=
REDIS_KEY_MANAGE
+
adminId
;
Object
cache
=
redisCache
.
get
(
key
);
if
(
cache
!=
null
)
{
logger
.
info
(
"查询用户管辖区 缓存命中 :{}"
,
adminId
);
return
JSON
.
parseObject
(
cache
.
toString
(),
OrgAccountVo
.
class
);
}
else
{
logger
.
info
(
"查询用户管辖区 未命中缓存 :{}"
,
adminId
);
OrgAccountVo
vo
=
authFeignClient
.
getOrgAndUserOfAdmin
(
adminId
,
siteId
);
redisCache
.
set
(
key
,
JSON
.
toJSONString
(
vo
),
duration
);
return
JSON
.
parseObject
(
JSONObject
.
toJSONString
(
vo
),
OrgAccountVo
.
class
);
}
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/repository/AccountExchangeLogRepository.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
repository
;
import
com.yizhi.mall.application.domain.AccountExchangeLog
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.querydsl.QuerydslPredicateExecutor
;
/**
* <p>
* Mapper 接口
* </p>
*
* @author MybatisCodeGenerator123
* @since 2021-01-07
*/
public
interface
AccountExchangeLogRepository
extends
JpaRepository
<
AccountExchangeLog
,
Long
>,
QuerydslPredicateExecutor
<
AccountExchangeLog
>{
/**
* 获取用户兑换记录数
* @param accountId
* @param siteId
* @return
*/
Integer
countAccountExchangeLogsByAccountIdAndSiteId
(
Long
accountId
,
Long
siteId
);
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/repository/AccountExchangeSumRepository.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
repository
;
import
com.yizhi.mall.application.domain.AccountExchangeSum
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.querydsl.QuerydslPredicateExecutor
;
import
org.springframework.stereotype.Repository
;
/**
* <p>
* Mapper 接口
* </p>
*
* @author MybatisCodeGenerator123
* @since 2021-01-07
*/
public
interface
AccountExchangeSumRepository
extends
JpaRepository
<
AccountExchangeSum
,
Long
>,
QuerydslPredicateExecutor
<
AccountExchangeSum
>{
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/repository/AccountTokenRepository.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
repository
;
import
com.yizhi.mall.application.domain.AccountToken
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.querydsl.QuerydslPredicateExecutor
;
import
org.springframework.stereotype.Repository
;
/**
* <p>
* Mapper 接口
* </p>
*
* @author MybatisCodeGenerator123
* @since 2021-01-07
*/
public
interface
AccountTokenRepository
extends
JpaRepository
<
AccountToken
,
Long
>,
QuerydslPredicateExecutor
<
AccountToken
>{
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/repository/TokenExchangeRuleRepository.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
repository
;
import
com.yizhi.mall.application.domain.TokenExchangeRule
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.querydsl.QuerydslPredicateExecutor
;
/**
* @ClassName: TokenExchangeRuleRepository
* @author: zjl
* @date: 2021/1/11 15:46
*/
public
interface
TokenExchangeRuleRepository
extends
JpaRepository
<
TokenExchangeRule
,
Long
>,
QuerydslPredicateExecutor
<
TokenExchangeRule
>
{
TokenExchangeRule
findByCompanyIdAndSiteId
(
Long
companyId
,
Long
siteId
);
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/repository/TokenLogRepository.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
repository
;
import
com.yizhi.mall.application.domain.TokenLog
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.querydsl.QuerydslPredicateExecutor
;
/**
* <p>
* Mapper 接口
* </p>
*
* @author MybatisCodeGenerator123
* @since 2021-01-07
*/
public
interface
TokenLogRepository
extends
JpaRepository
<
TokenLog
,
Long
>,
QuerydslPredicateExecutor
<
TokenLog
>{
Integer
countAccountExchangeLogsByAccountIdAndSiteIdAndChangeType
(
Long
accountId
,
Long
siteId
,
Integer
changeType
);
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/repository/TokenSwitchRepository.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
repository
;
import
com.yizhi.mall.application.domain.TokenSwitch
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.querydsl.QuerydslPredicateExecutor
;
/**
* @ClassName: TokenSwitchRepository
* @author: zjl
* @date: 2021/1/15 9:56
*/
public
interface
TokenSwitchRepository
extends
JpaRepository
<
TokenSwitch
,
Long
>,
QuerydslPredicateExecutor
<
TokenSwitch
>
{
TokenSwitch
findByCompanyIdAndSiteIdAndType
(
Long
companyId
,
Long
siteId
,
Integer
type
);
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/repository/TokenexchangeruleLogRepository.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
repository
;
import
com.yizhi.mall.application.domain.TokenExchangeRuleLog
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.querydsl.QuerydslPredicateExecutor
;
/**
* @ClassName: TokenexchangeruleLogRepository
* @author: zjl
* @date: 2021/1/26 9:29
*/
public
interface
TokenexchangeruleLogRepository
extends
JpaRepository
<
TokenExchangeRuleLog
,
Long
>,
QuerydslPredicateExecutor
<
TokenExchangeRuleLog
>
{
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/BaseService.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.service
import
com.querydsl.jpa.impl.JPAQueryFactory
import
org.springframework.beans.factory.annotation.Autowired
import
org.springframework.stereotype.Service
import
javax.annotation.PostConstruct
import
javax.persistence.EntityManager
/**
* @Date 2020/10/22 3:21 下午
* @Author lvjianhui
*/
@Service
open
class
BaseService
{
@Autowired
lateinit
var
entityManager
:
EntityManager
;
lateinit
var
jpaqueryFactory
:
JPAQueryFactory
;
@PostConstruct
fun
initFactory
()
{
jpaqueryFactory
=
JPAQueryFactory
(
entityManager
)
}
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/IAccountExchangeLogService.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.service
import
java.util.*
/**
*
*
* 服务类
*
*
* @author MybatisCodeGenerator123
* @since 2021-01-07
*/
interface
IAccountExchangeLogService
{
fun
getPointExchangeTokenTotalByDate
(
startAt
:
Date
?,
endAt
:
Date
?):
Int
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/IAccountExchangeSumService.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.service
import
com.yizhi.mall.application.domain.AccountExchangeSum
/**
*
*
* 服务类
*
*
* @author MybatisCodeGenerator123
* @since 2021-01-07
*/
interface
IAccountExchangeSumService
{
fun
getCostPointTotal
():
Int
fun
getSumByType
(
type
:
Int
):
AccountExchangeSum
?
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/IAccountTokenService.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
service
;
import
com.yizhi.mall.application.domain.AccountToken
;
/**
* <p>
* 服务类
* </p>
*
* @author MybatisCodeGenerator123
* @since 2021-01-07
*/
public
interface
IAccountTokenService
{
public
Integer
getTokenCountById
(
Long
companyId
,
Long
siteId
,
Long
accountId
);
public
AccountToken
getTokenAccount
();
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/ITokenExchangeRuleService.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
service
;
import
com.yizhi.mall.application.domain.TokenExchangeRule
;
import
com.yizhi.mall.application.pojo.qo.TokenExchangeRuleQO
;
import
com.yizhi.mall.application.pojo.vo.TokenExchangeRuleVO
;
/**
* @ClassName: ITokenExchangeRuleService
* @author: zjl
* @date: 2021/1/11 15:32
*/
public
interface
ITokenExchangeRuleService
{
/**
* 获取规则
*
* @return
*/
TokenExchangeRule
getTokenExchangeRule
();
/**
* 新增/修改规则
*
* @param qo
* @return
*/
TokenExchangeRuleVO
saveOrUpdateTokenExchangeRule
(
TokenExchangeRuleQO
qo
);
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/ITokenLogService.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.service
import
com.yizhi.core.application.context.RequestContext
import
com.yizhi.mall.application.domain.TokenLog
import
com.yizhi.mall.application.pojo.qo.ManageTokenLogQO
import
com.yizhi.mall.application.pojo.vo.ManageTokenLogVO
import
com.yizhi.mall.application.pojo.vo.StudentTokenLogVO
import
com.yizhi.mall.application.pojo.vo.TokenLogMonthTotalVO
import
com.yizhi.util.application.page.PageInfo
import
org.springframework.data.domain.Page
import
java.util.*
/**
*
*
* 服务类
*
*
* @author MybatisCodeGenerator123
* @since 2021-01-07
*/
interface
ITokenLogService
{
fun
getLogByAccountIdAndType
(
companyId
:
Long
?,
siteId
:
Long
?,
accountId
:
Long
?,
type
:
Int
?,
pageIndex
:
Int
?,
pageSize
:
Int
?,
startAt
:
Date
?,
endAt
:
Date
?):
Page
<
TokenLog
>
fun
getTokenTotal
(
startAt
:
Date
,
endAt
:
Date
,
type
:
Int
?):
TokenLogMonthTotalVO
fun
getLastLog
(
type
:
Int
?,
companyId
:
Long
?,
siteId
:
Long
?,
accountId
:
Long
?):
TokenLog
?
fun
getOrderByOrderId
(
accountId
:
Long
,
companyId
:
Long
,
siteId
:
Long
,
orderId
:
String
):
TokenLog
fun
getLogListByAccountIdAndType
(
companyId
:
Long
?,
siteId
:
Long
?,
accountId
:
Long
?,
type
:
Int
?):
List
<
TokenLog
>?
fun
getLogListByCondition
(
context
:
RequestContext
?,
qo
:
ManageTokenLogQO
?):
PageInfo
<
ManageTokenLogVO
>?
fun
getLogPageByUserId
(
pageNo
:
Int
?,
pageSize
:
Int
?):
PageInfo
<
StudentTokenLogVO
>?
fun
getLogByRelationIdAndType
(
relationId
:
Long
?,
logType
:
Int
?):
List
<
TokenLog
>?
fun
getEnrollCount
(
relationId
:
Long
,
logType
:
Int
):
Long
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/ITokenSwitchService.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.service
import
com.yizhi.mall.application.domain.TokenSwitch
/**
*
*
* 服务类
*
*
* @author MybatisCodeGenerator123
* @since 2021-01-07
*/
interface
ITokenSwitchService
{
fun
getSwitchList
(
companyId
:
Long
,
siteId
:
Long
):
List
<
TokenSwitch
>?
fun
getSwitchByType
(
type
:
Int
?,
companyId
:
Long
,
siteId
:
Long
):
List
<
TokenSwitch
>?
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/impl/AccountExchangeLogServiceImpl.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.service.impl
import
com.yizhi.core.application.context.ContextHolder
import
com.yizhi.mall.application.TokenLogType
import
com.yizhi.mall.application.domain.QAccountExchangeLog
import
com.yizhi.mall.application.domain.TokenExchangeRule
import
com.yizhi.mall.application.service.BaseService
import
com.yizhi.mall.application.service.IAccountExchangeLogService
import
org.springframework.amqp.core.ExchangeTypes
import
org.springframework.stereotype.Service
import
java.util.*
/**
*
*
* 服务实现类
*
*
* @author MybatisCodeGenerator123
* @since 2021-01-07
*/
@Service
class
AccountExchangeLogServiceImpl
:
BaseService
(),
IAccountExchangeLogService
{
override
fun
getPointExchangeTokenTotalByDate
(
startAt
:
Date
?,
endAt
:
Date
?):
Int
{
val
log
=
QAccountExchangeLog
.
accountExchangeLog
val
rc
=
ContextHolder
.
get
()
var
condition
=
log
.
companyId
.
eq
(
rc
.
companyId
)
.
and
(
log
.
siteId
.
eq
(
rc
.
siteId
))
.
and
(
log
.
accountId
.
eq
(
rc
.
accountId
))
.
and
(
log
.
type
.
eq
(
TokenLogType
.
POINT_EXCHANGE
.
code
))
if
(
startAt
!=
null
&&
endAt
!=
null
)
{
condition
=
condition
.
and
(
log
.
createdAt
.
goe
(
startAt
))
.
and
(
log
.
createdAt
.
lt
(
endAt
))
}
return
jpaqueryFactory
.
select
(
log
.
tokenCount
.
sum
())
.
from
(
log
)
.
where
(
condition
)
.
fetchOne
()
?:
0
}
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/impl/AccountExchangeSumServiceImpl.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.service.impl
import
com.yizhi.core.application.context.ContextHolder
import
com.yizhi.mall.application.TokenLogType
import
com.yizhi.mall.application.domain.AccountExchangeSum
import
com.yizhi.mall.application.domain.QAccountExchangeSum
import
com.yizhi.mall.application.service.BaseService
import
com.yizhi.mall.application.service.IAccountExchangeSumService
import
org.springframework.stereotype.Service
/**
*
*
* 服务实现类
*
*
* @author MybatisCodeGenerator123
* @since 2021-01-07
*/
@Service
class
AccountExchangeSumServiceImpl
:
BaseService
(),
IAccountExchangeSumService
{
override
fun
getCostPointTotal
():
Int
{
val
rc
=
ContextHolder
.
get
()
val
exchangeSum
=
QAccountExchangeSum
.
accountExchangeSum
val
condition
=
exchangeSum
.
companyId
.
eq
(
rc
.
companyId
)
.
and
(
exchangeSum
.
siteId
.
eq
(
rc
.
siteId
))
.
and
(
exchangeSum
.
accountId
.
eq
(
rc
.
accountId
))
.
and
(
exchangeSum
.
type
.
eq
(
TokenLogType
.
POINT_EXCHANGE
.
code
))
val
sum
=
jpaqueryFactory
.
select
(
exchangeSum
)
.
from
(
exchangeSum
)
.
where
(
condition
)
.
limit
(
1
)
.
fetchOne
()
?:
return
0
return
sum
.
total
?:
0
}
override
fun
getSumByType
(
type
:
Int
):
AccountExchangeSum
?
{
val
rc
=
ContextHolder
.
get
()
val
exchangeSum
=
QAccountExchangeSum
.
accountExchangeSum
val
condition
=
exchangeSum
.
companyId
.
eq
(
rc
.
companyId
)
.
and
(
exchangeSum
.
siteId
.
eq
(
rc
.
siteId
))
.
and
(
exchangeSum
.
accountId
.
eq
(
rc
.
accountId
))
.
and
(
exchangeSum
.
type
.
eq
(
type
))
return
jpaqueryFactory
.
select
(
exchangeSum
)
.
from
(
exchangeSum
)
.
where
(
condition
)
.
limit
(
1
)
.
fetchOne
()
}
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/impl/AccountTokenServiceImpl.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
service
.
impl
;
import
com.querydsl.core.types.Predicate
;
import
com.querydsl.core.types.dsl.BooleanExpression
;
import
com.yizhi.core.application.context.ContextHolder
;
import
com.yizhi.core.application.context.RequestContext
;
import
com.yizhi.mall.application.domain.AccountToken
;
import
com.yizhi.mall.application.domain.QAccountToken
;
import
com.yizhi.mall.application.service.IAccountTokenService
;
import
org.springframework.stereotype.Service
;
import
com.yizhi.mall.application.service.BaseService
;
/**
* <p>
* 服务实现类
* </p>
*
* @author MybatisCodeGenerator123
* @since 2021-01-07
*/
@Service
public
class
AccountTokenServiceImpl
extends
BaseService
implements
IAccountTokenService
{
@Override
public
Integer
getTokenCountById
(
Long
companyId
,
Long
siteId
,
Long
accountId
)
{
QAccountToken
accountToken
=
QAccountToken
.
accountToken
;
Predicate
condition
=
accountToken
.
accountId
.
eq
(
accountId
).
and
(
accountToken
.
companyId
.
eq
(
companyId
)).
and
(
accountToken
.
siteId
.
eq
(
siteId
));
AccountToken
at
=
jpaqueryFactory
.
select
(
accountToken
).
from
(
accountToken
).
where
(
condition
).
fetchOne
();
if
(
at
==
null
)
return
0
;
if
(
at
.
getAmount
()
==
null
)
return
0
;
return
at
.
getAmount
();
}
@Override
public
AccountToken
getTokenAccount
()
{
RequestContext
rc
=
ContextHolder
.
get
();
QAccountToken
accountToken
=
QAccountToken
.
accountToken
;
Predicate
condition
=
accountToken
.
accountId
.
eq
(
rc
.
getAccountId
())
.
and
(
accountToken
.
companyId
.
eq
(
rc
.
getCompanyId
()))
.
and
(
accountToken
.
siteId
.
eq
(
rc
.
getSiteId
()));
return
jpaqueryFactory
.
select
(
accountToken
).
from
(
accountToken
).
where
(
condition
).
limit
(
1
).
fetchOne
();
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/impl/ITokenExchangeRuleServiceImpl.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
service
.
impl
;
import
com.yizhi.application.orm.id.IdGenerator
;
import
com.yizhi.core.application.context.ContextHolder
;
import
com.yizhi.core.application.context.RequestContext
;
import
com.yizhi.mall.application.domain.TokenExchangeRule
;
import
com.yizhi.mall.application.domain.TokenExchangeRuleLog
;
import
com.yizhi.mall.application.pojo.qo.TokenExchangeRuleQO
;
import
com.yizhi.mall.application.pojo.vo.TokenExchangeRuleVO
;
import
com.yizhi.mall.application.repository.TokenExchangeRuleRepository
;
import
com.yizhi.mall.application.repository.TokenexchangeruleLogRepository
;
import
com.yizhi.mall.application.service.BaseService
;
import
com.yizhi.mall.application.service.ITokenExchangeRuleService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.Objects
;
/**
* @ClassName: ITokenExchangeRuleServiceImpl
* @author: zjl
* @date: 2021/1/11 15:33
*/
@Service
public
class
ITokenExchangeRuleServiceImpl
extends
BaseService
implements
ITokenExchangeRuleService
{
@Autowired
private
TokenExchangeRuleRepository
repository
;
@Autowired
private
TokenexchangeruleLogRepository
logRepository
;
@Autowired
private
IdGenerator
idGenerator
;
/**
* 获取站点积分兑换金币规则
* @return
*/
@Override
public
TokenExchangeRule
getTokenExchangeRule
()
{
TokenExchangeRuleVO
vo
=
new
TokenExchangeRuleVO
();
RequestContext
context
=
ContextHolder
.
get
();
Long
companyId
=
context
.
getCompanyId
();
Long
siteId
=
context
.
getSiteId
();
TokenExchangeRule
rule
=
repository
.
findByCompanyIdAndSiteId
(
companyId
,
siteId
);
if
(
Objects
.
isNull
(
rule
))
{
return
null
;
}
return
rule
;
}
/**
* 新增/修改站点积分兑换金币规则
* @return
* @param qo
*/
@Override
@Transactional
public
TokenExchangeRuleVO
saveOrUpdateTokenExchangeRule
(
TokenExchangeRuleQO
qo
)
{
TokenExchangeRuleVO
vo
=
new
TokenExchangeRuleVO
();
RequestContext
context
=
ContextHolder
.
get
();
Long
companyId
=
context
.
getCompanyId
();
Long
siteId
=
context
.
getSiteId
();
TokenExchangeRule
get
=
repository
.
findByCompanyIdAndSiteId
(
companyId
,
siteId
);
if
(
Objects
.
isNull
(
get
))
{
//站点无兑换规则 新增
get
=
new
TokenExchangeRule
();
get
.
setId
(
idGenerator
.
generate
());
}
get
.
setExchangeCondition
(
qo
.
getExchangeCondition
());
if
(
qo
.
getExchangeCondition
())
{
//条件限制
get
.
setConditionRuleTokenCount
(
qo
.
getConditionRuleTokenCount
());
get
.
setConditionRuleType
(
qo
.
getConditionRuleType
().
toUpperCase
());
}
get
.
setRate
(
qo
.
getRate
());
get
.
setTokenName
(
qo
.
getTokenName
());
TokenExchangeRule
save
=
repository
.
save
(
get
);
synchronousToLog
(
save
);
return
vo
;
}
/**
* 同步记录到log表
* @param rule
* @return
*/
public
void
synchronousToLog
(
TokenExchangeRule
rule
)
{
//新增规则后 再新增记录到兑换规则log表
TokenExchangeRuleLog
log
=
new
TokenExchangeRuleLog
();
log
.
setId
(
idGenerator
.
generate
());
log
.
setRuleId
(
rule
.
getId
());
log
.
setTokenName
(
rule
.
getTokenName
());
log
.
setRate
(
rule
.
getRate
());
log
.
setExchangeCondition
(
rule
.
getExchangeCondition
());
if
(
rule
.
getExchangeCondition
())
{
log
.
setConditionRuleTokenCount
(
rule
.
getConditionRuleTokenCount
());
log
.
setConditionRuleType
(
rule
.
getConditionRuleType
().
toUpperCase
());
}
log
=
logRepository
.
save
(
log
);
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/impl/TokenLogServiceImpl.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.service.impl
import
com.baomidou.mybatisplus.toolkit.CollectionUtils
import
com.google.common.collect.Lists
import
com.querydsl.core.types.Predicate
import
com.yizhi.core.application.context.ContextHolder
import
com.yizhi.core.application.context.RequestContext
import
com.yizhi.mall.application.TokenLogType
import
com.yizhi.mall.application.domain.QTokenLog
import
com.yizhi.mall.application.domain.TokenLog
import
com.yizhi.mall.application.handler.AccountManagerHandler
import
com.yizhi.mall.application.pojo.qo.ManageTokenLogQO
import
com.yizhi.mall.application.pojo.vo.ManageTokenLogVO
import
com.yizhi.mall.application.pojo.vo.StudentTokenLogVO
import
com.yizhi.mall.application.pojo.vo.TokenLogMonthTotalVO
import
com.yizhi.mall.application.pojo.vo.TokenLogVO
import
com.yizhi.mall.application.repository.TokenLogRepository
import
com.yizhi.mall.application.service.BaseService
import
com.yizhi.mall.application.service.ITokenLogService
import
com.yizhi.system.application.vo.practice.AccountOrgVo
import
com.yizhi.util.application.page.PageInfo
import
org.springframework.beans.factory.annotation.Autowired
import
org.springframework.data.domain.Page
import
org.springframework.data.domain.PageRequest
import
org.springframework.data.querydsl.QSort
import
org.springframework.stereotype.Service
import
java.util.*
import
java.util.stream.Collectors
import
kotlin.collections.ArrayList
import
kotlin.reflect.typeOf
/**
*
*
* 服务实现类
*
*
* @author MybatisCodeGenerator123
* @since 2021-01-07
*/
@Service
class
TokenLogServiceImpl
:
BaseService
(),
ITokenLogService
{
@Autowired
lateinit
var
tokenLogRepository
:
TokenLogRepository
@Autowired
lateinit
var
accountManagerhandler
:
AccountManagerHandler
override
fun
getEnrollCount
(
relationId
:
Long
,
logType
:
Int
):
Long
{
val
rc
=
ContextHolder
.
get
()
val
qTokenLog
=
QTokenLog
.
tokenLog
val
predicate
:
Predicate
=
qTokenLog
.
companyId
.
eq
(
rc
.
companyId
)
.
and
(
qTokenLog
.
siteId
.
eq
(
rc
.
siteId
))
.
and
(
qTokenLog
.
relationId
.
eq
(
relationId
))
.
and
(
qTokenLog
.
relationType
.
eq
(
logType
))
return
jpaqueryFactory
.
select
(
qTokenLog
.
accountId
.
countDistinct
())
.
from
(
qTokenLog
)
.
where
(
predicate
)
.
fetchCount
()
?:
0
}
override
fun
getLogByRelationIdAndType
(
relationId
:
Long
?,
logType
:
Int
?):
List
<
TokenLog
>?
{
val
rc
=
ContextHolder
.
get
()
val
qTokenLog
=
QTokenLog
.
tokenLog
val
predicate
:
Predicate
=
qTokenLog
.
accountId
.
eq
(
rc
.
accountId
)
.
and
(
qTokenLog
.
companyId
.
eq
(
rc
.
companyId
))
.
and
(
qTokenLog
.
siteId
.
eq
(
rc
.
siteId
))
.
and
(
qTokenLog
.
relationId
.
eq
(
relationId
))
.
and
(
qTokenLog
.
relationType
.
eq
(
logType
))
return
jpaqueryFactory
.
select
(
qTokenLog
)
.
from
(
qTokenLog
)
.
where
(
predicate
)
.
fetch
()
}
override
fun
getOrderByOrderId
(
accountId
:
Long
,
companyId
:
Long
,
siteId
:
Long
,
orderId
:
String
):
TokenLog
{
val
qTokenLog
=
QTokenLog
.
tokenLog
val
predicate
=
qTokenLog
.
companyId
.
eq
(
companyId
)
.
and
(
qTokenLog
.
siteId
.
eq
(
siteId
))
.
and
(
qTokenLog
.
accountId
.
eq
(
accountId
))
.
and
(
qTokenLog
.
orderId
.
eq
(
orderId
))
return
jpaqueryFactory
.
select
(
qTokenLog
)
.
from
(
qTokenLog
)
.
where
(
predicate
)
.
fetchOne
()
!!
}
override
fun
getLogByAccountIdAndType
(
companyId
:
Long
?,
siteId
:
Long
?,
accountId
:
Long
?,
type
:
Int
?,
pageIndex
:
Int
?,
pageSize
:
Int
?,
startAt
:
Date
?,
endAt
:
Date
?):
Page
<
TokenLog
>
{
val
qTokenLog
=
QTokenLog
.
tokenLog
var
predicate
=
qTokenLog
.
companyId
.
eq
(
companyId
)
.
and
(
qTokenLog
.
siteId
.
eq
(
siteId
))
.
and
(
qTokenLog
.
accountId
.
eq
(
accountId
))
.
and
(
qTokenLog
.
createdAt
.
goe
(
startAt
))
.
and
(
qTokenLog
.
createdAt
.
lt
(
endAt
))
if
(
null
!=
type
)
{
predicate
=
predicate
.
and
(
qTokenLog
.
type
.
eq
(
type
))
}
val
page
=
PageRequest
.
of
(
pageIndex
!!
-
1
,
pageSize
!!
,
QSort
.
by
(
qTokenLog
.
createdAt
.
desc
()))
return
tokenLogRepository
!!
.
findAll
(
predicate
,
page
)
}
override
fun
getLastLog
(
type
:
Int
?,
companyId
:
Long
?,
siteId
:
Long
?,
accountId
:
Long
?):
TokenLog
?
{
val
qTokenLog
=
QTokenLog
.
tokenLog
var
predicate
=
qTokenLog
.
accountId
.
eq
(
accountId
)
.
and
(
qTokenLog
.
companyId
.
eq
(
companyId
))
.
and
(
qTokenLog
.
siteId
.
eq
(
siteId
))
if
(
null
!=
type
)
{
predicate
=
predicate
.
and
(
qTokenLog
.
type
.
eq
(
type
))
}
return
jpaqueryFactory
.
select
(
qTokenLog
)
.
from
(
qTokenLog
)
.
where
(
predicate
)
.
orderBy
(
qTokenLog
.
createdAt
.
desc
())
.
limit
(
1
)
.
fetchOne
()
}
override
fun
getTokenTotal
(
startAt
:
Date
,
endAt
:
Date
,
type
:
Int
?):
TokenLogMonthTotalVO
{
val
rc
=
ContextHolder
.
get
()
val
qTokenLog
=
QTokenLog
.
tokenLog
var
predicate
=
qTokenLog
.
accountId
.
eq
(
rc
.
accountId
)
.
and
(
qTokenLog
.
companyId
.
eq
(
rc
.
companyId
))
.
and
(
qTokenLog
.
siteId
.
eq
(
rc
.
siteId
))
.
and
(
qTokenLog
.
createdAt
.
goe
(
startAt
))
.
and
(
qTokenLog
.
createdAt
.
lt
(
endAt
))
if
(
type
!=
null
)
{
predicate
=
predicate
.
and
(
qTokenLog
.
type
.
eq
(
type
))
}
val
list
=
jpaqueryFactory
.
select
(
qTokenLog
.
changeCount
.
sum
(),
qTokenLog
.
changeType
)
.
from
(
qTokenLog
)
.
where
(
predicate
)
.
groupBy
(
qTokenLog
.
changeType
)
.
fetch
()
val
vo
=
TokenLogMonthTotalVO
()
if
(
list
==
null
||
list
.
isEmpty
())
{
return
vo
}
for
(
tuple
in
list
)
{
if
(
null
==
tuple
.
get
(
qTokenLog
.
changeType
))
{
return
vo
}
if
(
tuple
.
get
(
qTokenLog
.
changeType
)
==
1
)
{
vo
.
receiveCount
=
tuple
.
get
(
qTokenLog
.
changeCount
.
sum
())
}
if
(
tuple
.
get
(
qTokenLog
.
changeType
)
==
-
1
)
{
vo
.
useCount
=
tuple
.
get
(
qTokenLog
.
changeCount
.
sum
())
}
}
return
vo
}
/**
* 获取指定用户消费记录
* @param companyId
* @param siteId
* @param accountId
* @param type
* @return
*/
override
fun
getLogListByAccountIdAndType
(
companyId
:
Long
?,
siteId
:
Long
?,
accountId
:
Long
?,
type
:
Int
?):
List
<
TokenLog
>?
{
val
qTokenLog
=
QTokenLog
.
tokenLog
var
predicate
=
qTokenLog
.
companyId
.
eq
(
companyId
)
.
and
(
qTokenLog
.
siteId
.
eq
(
siteId
))
.
and
(
qTokenLog
.
accountId
.
eq
(
accountId
))
if
(
null
!=
type
)
{
predicate
=
predicate
.
and
(
qTokenLog
.
type
.
eq
(
type
))
}
return
Lists
.
newArrayList
(
tokenLogRepository
.
findAll
(
predicate
).
iterator
())
}
/**
* 管理端获取消费记录
* @param qo
* @return
*/
override
fun
getLogListByCondition
(
context
:
RequestContext
?,
qo
:
ManageTokenLogQO
?):
PageInfo
<
ManageTokenLogVO
>?
{
val
adminId
=
context
!!
.
accountId
val
siteId
=
context
.
siteId
val
pageNo
=
qo
!!
.
pageNo
val
pageSize
=
qo
.
pageSize
var
kwd
=
qo
.
kwd
.
trim
{
it
<=
' '
}
val
voPageInfo
=
PageInfo
<
ManageTokenLogVO
>()
voPageInfo
.
pageNo
=
qo
.
pageNo
voPageInfo
.
pageSize
=
qo
.
pageSize
val
qTokenLog
=
QTokenLog
.
tokenLog
var
predicate
=
qTokenLog
.
companyId
.
eq
(
context
.
companyId
)
.
and
(
qTokenLog
.
siteId
.
eq
(
context
.
siteId
))
if
(
qo
.
startAt
!=
null
&&
qo
.
endAt
!=
null
)
{
predicate
=
predicate
.
and
(
qTokenLog
.
createdAt
.
goe
(
qo
.
startAt
))
.
and
(
qTokenLog
.
createdAt
.
lt
(
qo
.
endAt
))
}
if
(
null
!=
qo
.
type
)
{
predicate
=
predicate
.
and
(
qTokenLog
.
type
.
eq
(
qo
.
type
))
}
if
(
null
!=
kwd
&&
kwd
!==
""
)
{
kwd
=
"%$kwd%"
predicate
=
predicate
.
and
(
qTokenLog
.
accountFullName
.
like
(
kwd
)
.
or
(
qTokenLog
.
accountName
.
like
(
kwd
))
.
or
(
qTokenLog
.
orderId
.
like
(
kwd
)))
}
if
(!
context
.
isAdmin
)
{
//不是管理员 查询管辖区
val
vo
=
accountManagerhandler
!!
.
getManageOrgAndUser
(
adminId
,
siteId
)
val
accountIds
=
vo
.
users
.
stream
().
map
{
obj
:
AccountOrgVo
->
obj
.
accountId
}.
collect
(
Collectors
.
toList
())
predicate
=
predicate
.
and
(
qTokenLog
.
orgId
.
`in`
(
vo
.
orgs
)
.
or
(
qTokenLog
.
accountId
.
`in`
(
accountIds
)))
}
val
page
=
PageRequest
.
of
(
pageNo
-
1
,
pageSize
,
QSort
.
by
(
qTokenLog
.
createdAt
.
desc
()))
val
tokenLogPage
=
tokenLogRepository
!!
.
findAll
(
predicate
,
page
)
val
content
=
tokenLogPage
.
content
if
(
CollectionUtils
.
isNotEmpty
(
content
))
{
var
voList
=
transform
(
content
)
voPageInfo
.
pageTotal
=
tokenLogPage
.
totalPages
voPageInfo
.
pageRecords
=
tokenLogPage
.
totalElements
.
toInt
()
voPageInfo
.
setRecords
(
voList
)
}
return
voPageInfo
}
/**
* 转换成volist
* @param tokenLogList
* @return
*/
fun
transform
(
tokenLogList
:
List
<
TokenLog
?>):
List
<
ManageTokenLogVO
>
{
val
voList
=
ArrayList
<
ManageTokenLogVO
>(
tokenLogList
.
size
)
var
vo
:
ManageTokenLogVO
?
=
null
for
(
tokenLog
in
tokenLogList
)
{
vo
=
ManageTokenLogVO
()
vo
.
createdAt
=
tokenLog
!!
.
createdAt
vo
.
name
=
tokenLog
.
accountName
vo
.
fullName
=
if
(
null
==
tokenLog
.
accountFullName
)
tokenLog
.
accountName
else
tokenLog
.
accountFullName
vo
.
orderId
=
tokenLog
.
orderId
vo
.
type
=
tokenLog
.
type
vo
.
remark
=
tokenLog
.
relationName
vo
.
relationName
=
tokenLog
.
relationName
vo
.
count
=
tokenLog
.
changeCount
voList
.
add
(
vo
)
}
return
voList
}
/**
* 获取学员端兑换记录分页
* @param pageNo
* @param pageSize
* @return
*/
override
fun
getLogPageByUserId
(
pageNo
:
Int
?,
pageSize
:
Int
?):
PageInfo
<
StudentTokenLogVO
>?
{
var
pageNo
=
pageNo
var
pageSize
=
pageSize
val
voPageInfo
=
PageInfo
<
StudentTokenLogVO
>()
pageNo
=
pageNo
?:
1
pageSize
=
pageSize
?:
10
voPageInfo
.
pageNo
=
pageNo
voPageInfo
.
pageSize
=
pageSize
val
page
=
getLogListByUserId
(
pageNo
,
pageSize
)
val
content
=
page
.
content
;
if
(
CollectionUtils
.
isNotEmpty
(
content
))
{
var
voList
=
transformStudentTokenLogVO
(
content
)
voPageInfo
.
pageTotal
=
page
.
totalPages
voPageInfo
.
pageRecords
=
page
.
totalElements
.
toInt
()
voPageInfo
.
records
=
voList
}
return
voPageInfo
}
/**
* 获取学员端兑换记录分页后的list
* @param pageNo
* @param pageSize
* @return
*/
fun
getLogListByUserId
(
pageNo
:
Int
,
pageSize
:
Int
?):
Page
<
TokenLog
>
{
val
context
=
ContextHolder
.
get
()
val
userId
=
context
.
accountId
val
companyId
=
context
.
companyId
val
siteId
=
context
.
siteId
val
qTokenLog
=
QTokenLog
.
tokenLog
val
predicate
=
qTokenLog
.
companyId
.
eq
(
companyId
)
.
and
(
qTokenLog
.
siteId
.
eq
(
siteId
))
.
and
(
qTokenLog
.
accountId
.
eq
(
userId
)
.
and
(
qTokenLog
.
changeType
.
eq
(-
1
))
//-1为兑换
)
val
page
=
PageRequest
.
of
(
pageNo
-
1
,
pageSize
!!
,
QSort
.
by
(
qTokenLog
.
createdAt
.
desc
()))
val
tokenLogPage
=
tokenLogRepository
!!
.
findAll
(
predicate
,
page
)
return
tokenLogPage
;
}
/**
* 转换成StudentTokenLogVOlist
* @param tokenLogList
* @return
*/
fun
transformStudentTokenLogVO
(
tokenLogList
:
List
<
TokenLog
>):
List
<
StudentTokenLogVO
>
{
val
voList
=
ArrayList
<
StudentTokenLogVO
>(
tokenLogList
.
size
)
var
vo
:
StudentTokenLogVO
?
=
null
for
(
tokenLog
in
tokenLogList
)
{
vo
=
StudentTokenLogVO
()
vo
.
createdAt
=
tokenLog
!!
.
createdAt
vo
.
relationIconUrl
=
tokenLog
.
relationIconUrl
vo
.
type
=
tokenLog
.
type
vo
.
relationName
=
tokenLog
.
relationName
vo
.
relationId
=
tokenLog
.
relationId
vo
.
count
=
tokenLog
.
changeCount
voList
.
add
(
vo
)
}
return
voList
}
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/service/impl/TokenSwitchServiceImpl.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.service.impl
import
com.yizhi.core.application.context.ContextHolder
import
com.yizhi.mall.application.domain.QTokenSwitch
import
com.yizhi.mall.application.domain.TokenSwitch
import
com.yizhi.mall.application.service.BaseService
import
com.yizhi.mall.application.service.ITokenSwitchService
import
org.springframework.stereotype.Service
/**
* @Date 2021/1/14 2:59 下午
* @Author lvjianhui
**/
@Service
class
TokenSwitchServiceImpl
:
BaseService
(),
ITokenSwitchService
{
override
fun
getSwitchList
(
companyId
:
Long
,
siteId
:
Long
):
List
<
TokenSwitch
>?
{
val
tokenSwitch
=
QTokenSwitch
.
tokenSwitch
var
condition
=
tokenSwitch
.
companyId
.
eq
(
companyId
).
and
(
tokenSwitch
.
siteId
.
eq
(
siteId
))
return
jpaqueryFactory
.
select
(
tokenSwitch
)
.
from
(
tokenSwitch
)
.
where
(
condition
)
.
fetch
()
}
override
fun
getSwitchByType
(
type
:
Int
?,
companyId
:
Long
,
siteId
:
Long
):
List
<
TokenSwitch
>?
{
val
tokenSwitch
=
QTokenSwitch
.
tokenSwitch
var
condition
=
tokenSwitch
.
companyId
.
eq
(
companyId
).
and
(
tokenSwitch
.
siteId
.
eq
(
siteId
))
if
(
type
!=
null
)
{
condition
=
condition
.
and
(
tokenSwitch
.
type
.
eq
(
type
))
}
return
jpaqueryFactory
.
select
(
tokenSwitch
)
.
from
(
tokenSwitch
)
.
where
(
condition
)
.
fetch
()
}
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/utils/Extend.kt
0 → 100644
View file @
df6660e0
//package com.yizhi.mall.application.utils
//
//import cn.hutool.core.map.MapUtil
//import com.yizhi.core.application.context.RequestContext
//import org.apache.commons.beanutils.BeanUtils
//import org.springframework.web.bind.annotation.GetMapping
//import org.springframework.web.bind.annotation.RequestMapping
//import java.lang.reflect.Method
//import java.lang.reflect.Proxy
//
//
///**
// * @Date 2021/1/19 9:54 上午
// * @Author lvjianhui
// **/
//fun Any.setFeignHeadInvoke(
// clazz: Any?,
// method: Method,
// params: Array<*>,
// requestContext: RequestContext?) {
// try {
// var annotation:Any = method.getAnnotation(RequestMapping::class.java)
// val annotationGet = method.getAnnotation(GetMapping::class.java)
// val annotationPost = method.getAnnotation(GetMapping::class.java)
// if (annotation == null && null != annotationGet) {
// annotation = annotationGet
// }
// if (annotation == null && null != annotationPost) {
// annotation = annotationPost
// }
// val invocationHandler = Proxy.getInvocationHandler(annotation)
// val declaredField = invocationHandler.javaClass.getDeclaredField("memberValues")
// declaredField.isAccessible = true
// val memberValues = declaredField[invocationHandler] as MutableMap<String, Any>
// val map = BeanUtils.describe(requestContext)
// val headers = MapUtil.join(map, ",", "=", true)
// val list = headers.split(",")
// memberValues["headers"] = list
// method.invoke(clazz, params[0])
// } catch (e: Exception) {
// e.printStackTrace()
// throw e
// }
//}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/utils/MallDateUtils.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.utils
import
cn.hutool.core.date.DateUtil
import
com.yizhi.mall.application.ExchangeConditionType
import
java.util.*
object
MallDateUtils
{
/**
* @param conditionType 时间段枚举
* @param date 时间点
* @return 返回指定时间 默认的时间范围的开始 结束时间
*/
fun
getSAtAndEAtByConditionCode
(
conditionType
:
ExchangeConditionType
,
date
:
Date
):
Pair
<
Date
,
Date
>
{
var
calendar
=
Calendar
.
getInstance
()
calendar
.
time
=
date
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
)
calendar
.
set
(
Calendar
.
MINUTE
,
0
)
calendar
.
set
(
Calendar
.
SECOND
,
0
)
var
startAt
:
Date
?
=
null
var
endAt
:
Date
?
=
null
when
(
conditionType
.
code
)
{
// 年
ExchangeConditionType
.
YEAR
.
code
->
{
calendar
.
set
(
Calendar
.
MONTH
,
Calendar
.
JANUARY
)
calendar
.
set
(
Calendar
.
DAY_OF_MONTH
,
1
)
startAt
=
calendar
.
time
calendar
.
add
(
Calendar
.
YEAR
,
1
)
endAt
=
calendar
.
time
}
// 半年
ExchangeConditionType
.
HALFYEAR
.
code
->
{
calendar
.
set
(
Calendar
.
MONTH
,
Calendar
.
JULY
)
calendar
.
set
(
Calendar
.
DAY_OF_MONTH
,
1
)
// 下半年
if
(
date
.
time
>=
calendar
.
time
.
time
)
{
startAt
=
calendar
.
time
calendar
.
add
(
Calendar
.
MONTH
,
6
)
endAt
=
calendar
.
time
}
else
{
endAt
=
calendar
.
time
calendar
.
set
(
Calendar
.
MONTH
,
Calendar
.
JANUARY
)
startAt
=
calendar
.
time
}
}
// 季度
ExchangeConditionType
.
QUARTER
.
code
->
{
val
quarter
=
DateUtil
.
quarter
(
calendar
.
time
)
-
1
calendar
.
set
(
Calendar
.
MONTH
,
Calendar
.
JANUARY
)
calendar
.
set
(
Calendar
.
DAY_OF_MONTH
,
1
)
calendar
.
add
(
Calendar
.
MONTH
,
quarter
*
3
)
startAt
=
calendar
.
time
calendar
.
add
(
Calendar
.
MONTH
,
3
)
endAt
=
calendar
.
time
}
// 月
ExchangeConditionType
.
MONTH
.
code
->
{
calendar
.
set
(
Calendar
.
MONTH
,
calendar
.
get
(
Calendar
.
MONTH
))
calendar
.
set
(
Calendar
.
DAY_OF_MONTH
,
1
)
startAt
=
calendar
.
time
calendar
.
add
(
Calendar
.
MONTH
,
1
)
endAt
=
calendar
.
time
}
// 周
ExchangeConditionType
.
WEEK
.
code
->
{
calendar
.
set
(
Calendar
.
DAY_OF_WEEK
,
Calendar
.
MONDAY
)
calendar
.
set
(
Calendar
.
WEEK_OF_YEAR
,
calendar
.
get
(
Calendar
.
WEEK_OF_YEAR
))
startAt
=
calendar
.
time
calendar
.
add
(
Calendar
.
WEEK_OF_YEAR
,
1
)
endAt
=
calendar
.
time
}
// 天
ExchangeConditionType
.
DAY
.
code
->
{
startAt
=
calendar
.
time
calendar
.
add
(
Calendar
.
DAY_OF_YEAR
,
1
)
endAt
=
calendar
.
time
}
}
return
Pair
(
startAt
!!
,
endAt
!!
);
}
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/utils/MallOrderIdUtils.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.utils
import
cn.hutool.core.date.DateUtil
import
cn.hutool.core.util.RandomUtil
import
com.yizhi.core.application.context.ContextHolder
import
java.util.*
/**
* @Date 2021/1/15 3:09 下午
* @Author lvjianhui
**/
object
MallOrderIdUtils
{
fun
generateorderIdByUserAndLog
(
tokenLog
:
Long
):
String
{
val
accountId
=
ContextHolder
.
get
().
accountId
val
currentDate
=
Date
()
val
sn
=
StringBuffer
().
append
(
currentDate
.
time
).
append
(
tokenLog
).
append
(
accountId
)
val
randomStr
=
RandomUtil
.
randomString
(
sn
.
toString
(),
8
)
val
currentDateStr
=
DateUtil
.
format
(
currentDate
,
"yyMMddHHmmssSSS"
)
return
currentDateStr
+
randomStr
}
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/utils/RedissonUtils.kt
0 → 100644
View file @
df6660e0
//package com.yizhi.mall.application.utils
//
//import org.redisson.Redisson
//import org.redisson.api.RedissonClient
//import org.redisson.config.Config
//import org.springframework.beans.factory.annotation.Value
//import org.springframework.stereotype.Component
//import javax.annotation.PostConstruct
//
//@Component
//class RedissonUtils {
//
// companion object {
// var address = ""
// var password = ""
// var redissonClient : RedissonClient? = null
// }
//
// @PostConstruct
// fun setAddress(@Value("\${spring.redis.host}") address: String,
// @Value("\${spring.redis.port}") port: Int) {
// RedissonUtils.address = "$address:$port"
// }
//
// @PostConstruct
// fun setPasswords(@Value("\${spring.redis.password}") password: String) {
// RedissonUtils.password = password
// }
//
//
// @PostConstruct
// fun get() {
// val config = Config()
// config.useSingleServer()
// .setAddress(address).password = password
// redissonClient = Redisson.create(config)
// }
//
//
//}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/AccountTokenXService.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.xservice
import
com.yizhi.mall.application.TokenLogType
import
com.yizhi.mall.application.config.constant.TokenLogRelationDto
import
com.yizhi.mall.application.domain.TokenExchangeRule
/**
* @Date 2021/1/18 1:32 下午
* @Author lvjianhui
**/
interface
AccountTokenXService
{
/**
* 全局唯一金币变动入口
*/
fun
updateTokenAccount
(
changeTokenAbs
:
Int
,
logType
:
TokenLogType
,
rule
:
TokenExchangeRule
?,
relationMsg
:
TokenLogRelationDto
?)
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/QualityContentXService.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
xservice
;
import
com.yizhi.mall.application.pojo.vo.QualityContentVO
;
import
com.yizhi.training.application.param.PaidTrainingProjectQO
;
import
com.yizhi.training.application.vo.api.PaidTrainingProjectVO
;
import
com.yizhi.util.application.page.PageInfo
;
/**
* @ClassName: QualityContentXService
* @author: zjl
* @date: 2021/1/12 9:51
*/
public
interface
QualityContentXService
{
/**
* 获取精品内容个人信息
* @return
*/
QualityContentVO
getQualityContent
();
/**
* 获取付费项目并排序筛选
* @param qo
* @return
*/
PageInfo
<
PaidTrainingProjectVO
>
getPaidTrainingProject
(
PaidTrainingProjectQO
qo
);
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/TokenConfigXService.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.xservice
import
com.yizhi.mall.application.pojo.vo.TokenConfigVO
import
com.yizhi.mall.application.pojo.vo.TokenSwitchVO
/**
* @Date 2021/1/6 4:51 下午
* @Author lvjianhui
**/
interface
TokenConfigXService
{
fun
getRuleBySiteId
():
TokenConfigVO
?
fun
getSwitch
(
type
:
Int
?):
List
<
TokenSwitchVO
>?
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/TokenLogXService.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.xservice
import
com.yizhi.core.application.context.RequestContext
import
com.yizhi.mall.application.pojo.vo.OrderDetailVO
import
com.yizhi.mall.application.pojo.vo.TokenLogMonthTotalVO
import
com.yizhi.mall.application.pojo.vo.TokenLogVO
import
com.yizhi.util.application.page.PageInfo
import
java.util.*
/**
* @Date 2021/1/7 10:54 上午
* @Author lvjianhui
**/
interface
TokenLogXService
{
fun
getLogByType
(
startAt
:
Date
,
endAt
:
Date
,
type
:
Int
?,
pageIndex
:
Int
,
pageSize
:
Int
):
PageInfo
<
TokenLogVO
>
fun
getTokenTotal
(
startAt
:
Long
?,
type
:
Int
?,
pageIndex
:
Int
,
pageSize
:
Int
):
TokenLogMonthTotalVO
?
fun
getOrderDetail
(
accountId
:
Long
,
companyId
:
Long
,
siteId
:
Long
,
orderId
:
String
):
OrderDetailVO
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/TokenSwitchXService.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
xservice
;
import
com.yizhi.mall.application.domain.TokenSwitch
;
/**
* @ClassName: TokenSwitchXService
* @author: zjl
* @date: 2021/1/15 9:53
*/
public
interface
TokenSwitchXService
{
/**
* 新增/修改开关
* @param type
* @param tokenSwitchBol
* @return
*/
TokenSwitch
saveOrUpdateTokenSwitch
(
Integer
type
,
Boolean
tokenSwitchBol
);
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/TokenXService.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.xservice
import
com.yizhi.mall.application.pojo.qo.ApplyProjectPO
import
com.yizhi.mall.application.pojo.qo.TokenExchangePO
/**
* @Date 2021/1/13 2:34 下午
* @Author lvjianhui
**/
interface
TokenXService
{
/**
* 查看可用积分数量
*/
fun
getPointCount
():
Int
/**
* 积分兑换金币
*/
fun
pointExchangeToken
(
po
:
TokenExchangePO
)
/**
* 项目报名
*/
fun
costToProject
(
po
:
ApplyProjectPO
)
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/TrXService.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.xservice
import
com.yizhi.mall.application.TokenLogType
import
com.yizhi.mall.application.config.constant.TokenLogRelationDto
import
com.yizhi.mall.application.domain.TokenExchangeRule
/**
* @Date 2021/1/18 3:05 下午
* @Author lvjianhui
**/
interface
TrXService
{
fun
trApplyCostToken
(
changeToken
:
Int
,
logType
:
TokenLogType
,
rule
:
TokenExchangeRule
?,
relationMsg
:
TokenLogRelationDto
)
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/impl/AccountTokenXServiceImpl.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.xservice.impl
import
com.yizhi.application.orm.id.IdGenerator
import
com.yizhi.core.application.cache.RedisCache
import
com.yizhi.core.application.context.ContextHolder
import
com.yizhi.core.application.exception.BizException
import
com.yizhi.mall.application.TokenLogType
import
com.yizhi.mall.application.config.MallMsgEnum
import
com.yizhi.mall.application.config.RedisLock
import
com.yizhi.mall.application.config.constant.TokenLogRelationDto
import
com.yizhi.mall.application.domain.*
import
com.yizhi.mall.application.repository.AccountExchangeLogRepository
import
com.yizhi.mall.application.repository.AccountExchangeSumRepository
import
com.yizhi.mall.application.repository.AccountTokenRepository
import
com.yizhi.mall.application.repository.TokenLogRepository
import
com.yizhi.mall.application.service.*
import
com.yizhi.mall.application.utils.MallOrderIdUtils
import
com.yizhi.mall.application.xservice.AccountTokenXService
import
com.yizhi.mall.application.xservice.TokenConfigXService
import
org.springframework.beans.factory.annotation.Autowired
import
org.springframework.stereotype.Service
import
javax.transaction.Transactional
/**
* @Date 2021/1/18 1:32 下午
* @Author lvjianhui
**/
@Service
open
class
AccountTokenXServiceImpl
:
AccountTokenXService
{
@Autowired
lateinit
var
iAccountExchangeSumService
:
IAccountExchangeSumService
@Autowired
lateinit
var
tokenConfigXService
:
TokenConfigXService
@Autowired
lateinit
var
accountTokenService
:
IAccountTokenService
@Autowired
lateinit
var
accountTokenRepository
:
AccountTokenRepository
@Autowired
lateinit
var
tokenLogRepository
:
TokenLogRepository
@Autowired
lateinit
var
accountExchangeLogRepository
:
AccountExchangeLogRepository
@Autowired
lateinit
var
idGenerator
:
IdGenerator
@Autowired
lateinit
var
accountExchangeSunRepository
:
AccountExchangeSumRepository
@Autowired
lateinit
var
redisCache
:
RedisCache
@Transactional
override
fun
updateTokenAccount
(
changeTokenAbs
:
Int
,
logType
:
TokenLogType
,
rule
:
TokenExchangeRule
?,
relationMsg
:
TokenLogRelationDto
?)
{
val
changeToken
=
changeTokenAbs
*
logType
.
addOrsSub
val
rc
=
ContextHolder
.
get
()
val
redisAccountKey
=
RedisLock
.
ACCOUNT_TOKEN_LOCK
.
format
(
rc
.
accountId
)
val
timeout
=
10L
try
{
// 增加分布式锁。如果set完成,没有执行 expire 和 delete方法,则会出现key永不过期的问题
val
lock
=
redisCache
.
setIfAbsent
(
redisAccountKey
,
"1"
)
redisCache
.
expire
(
redisAccountKey
,
timeout
)
if
(!
lock
)
{
throw
BizException
(
MallMsgEnum
.
ACCOUNT_TOKEN_PROCESSING
.
code
,
MallMsgEnum
.
ACCOUNT_TOKEN_PROCESSING
.
msg
)
}
// 增加金币
var
accountToken
=
accountTokenService
.
tokenAccount
val
beforToken
=
accountToken
?.
amount
?:
0
if
(
null
==
accountToken
)
{
accountToken
=
AccountToken
()
accountToken
.
id
=
idGenerator
.
generate
()
accountToken
.
amount
=
changeToken
}
else
{
accountToken
.
amount
=
accountToken
.
amount
+
changeToken
}
accountTokenRepository
.
save
(
accountToken
)
val
log
=
TokenLog
()
log
.
id
=
idGenerator
.
generate
()
log
.
changeType
=
logType
.
addOrsSub
log
.
changeCount
=
changeToken
log
.
beforeCount
=
beforToken
log
.
afterCount
=
log
.
changeCount
+
log
.
beforeCount
log
.
type
=
logType
.
code
log
.
relationIconUrl
=
relationMsg
?.
relationIconUrl
log
.
relationName
=
relationMsg
?.
relationName
log
.
relationId
=
relationMsg
?.
relationId
log
.
relationType
=
logType
.
code
if
(
logType
.
code
==
TokenLogType
.
POINT_EXCHANGE
.
code
)
{
log
.
costCount
=
rule
!!
.
rate
.
toInt
()
*
changeToken
log
.
relationName
=
"-${log.costCount}积分"
}
log
.
msg
=
logType
.
msg
log
.
orderId
=
logType
.
orderPre
+
MallOrderIdUtils
.
generateorderIdByUserAndLog
(
log
.
id
)
tokenLogRepository
.
save
(
log
)
if
(
logType
.
addOrsSub
==
-
1
||
null
==
rule
)
{
return
}
val
type
=
TokenLogType
.
POINT_EXCHANGE
var
sum
=
iAccountExchangeSumService
.
getSumByType
(
type
.
code
)
if
(
sum
==
null
)
{
sum
=
AccountExchangeSum
()
sum
.
id
=
idGenerator
.
generate
()
sum
.
type
=
type
.
code
sum
.
total
=
rule
.
rate
.
toInt
()
*
changeToken
sum
.
tokenTotal
=
changeToken
}
else
{
sum
.
total
=
sum
.
total
+
rule
.
rate
.
toInt
()
*
changeToken
sum
.
tokenTotal
=
sum
.
tokenTotal
+
changeToken
}
accountExchangeSunRepository
.
save
(
sum
)
val
exchangeLog
=
AccountExchangeLog
()
exchangeLog
.
id
=
idGenerator
.
generate
()
exchangeLog
.
count
=
rule
.
rate
.
toInt
()
*
changeToken
exchangeLog
.
exchangeRate
=
rule
.
rate
exchangeLog
.
tokenCount
=
changeToken
exchangeLog
.
type
=
TokenLogType
.
POINT_EXCHANGE
.
code
accountExchangeLogRepository
.
save
(
exchangeLog
)
redisCache
.
delete
(
redisAccountKey
)
}
catch
(
e
:
Exception
)
{
redisCache
.
delete
(
redisAccountKey
)
}
finally
{
redisCache
.
delete
(
redisAccountKey
)
}
}
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/impl/QualityContentXServiceImpl.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
xservice
.
impl
;
import
com.baomidou.mybatisplus.toolkit.CollectionUtils
;
import
com.yizhi.core.application.context.ContextHolder
;
import
com.yizhi.core.application.context.RequestContext
;
import
com.yizhi.mall.application.TokenLogType
;
import
com.yizhi.mall.application.domain.TokenLog
;
import
com.yizhi.mall.application.pojo.vo.QualityContentVO
;
import
com.yizhi.mall.application.repository.TokenLogRepository
;
import
com.yizhi.mall.application.service.IAccountTokenService
;
import
com.yizhi.mall.application.service.ITokenLogService
;
import
com.yizhi.mall.application.xservice.QualityContentXService
;
import
com.yizhi.system.application.system.remote.AccountClient
;
import
com.yizhi.training.application.feign.PaidTrainingProjectClient
;
import
com.yizhi.training.application.param.PaidTrainingProjectQO
;
import
com.yizhi.training.application.vo.api.PaidTrainingProjectVO
;
import
com.yizhi.util.application.page.PageInfo
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* @ClassName: QualityContentXServiceImpl
* @author: zjl
* @date: 2021/1/12 9:51
*/
@Service
public
class
QualityContentXServiceImpl
implements
QualityContentXService
{
@Autowired
private
AccountClient
accountClient
;
@Autowired
private
PaidTrainingProjectClient
paidTrainingProjectClient
;
@Autowired
private
IAccountTokenService
accountTokenService
;
@Autowired
private
TokenLogRepository
tokenLogRepository
;
@Autowired
private
ITokenLogService
tokenLogService
;
/**
* 获取精品内容
* @return
*/
@Override
public
QualityContentVO
getQualityContent
()
{
RequestContext
context
=
ContextHolder
.
get
();
Long
companyId
=
context
.
getCompanyId
();
Long
siteId
=
context
.
getSiteId
();
Long
accountId
=
context
.
getAccountId
();
String
fullName
=
context
.
getAccountFullName
()
==
null
?
context
.
getAccountName
()
:
context
.
getAccountFullName
();
Integer
tokenCount
=
accountTokenService
.
getTokenCountById
(
companyId
,
siteId
,
accountId
);
Integer
exchangeLogsCount
=
tokenLogRepository
.
countAccountExchangeLogsByAccountIdAndSiteIdAndChangeType
(
accountId
,
siteId
,
-
1
);
QualityContentVO
vo
=
new
QualityContentVO
(
accountId
,
fullName
,
context
.
getAccountName
(),
context
.
getHeadPortrait
(),
tokenCount
,
exchangeLogsCount
);
return
vo
;
}
/**
* 获取付费项目并排序筛选
* @param qo
* @return
*/
@Override
public
PageInfo
<
PaidTrainingProjectVO
>
getPaidTrainingProject
(
PaidTrainingProjectQO
qo
)
{
PageInfo
<
PaidTrainingProjectVO
>
voPageInfo
=
new
PageInfo
<>();
Integer
pageNo
=
qo
.
getPageNo
();
Integer
pageSize
=
qo
.
getPageSize
();
voPageInfo
.
setPageNo
(
pageNo
);
voPageInfo
.
setPageSize
(
pageSize
);
List
<
PaidTrainingProjectVO
>
voList
=
null
;
RequestContext
context
=
ContextHolder
.
get
();
Long
companyId
=
context
.
getCompanyId
();
Long
siteId
=
context
.
getSiteId
();
Long
accountId
=
context
.
getAccountId
();
qo
.
setSiteId
(
siteId
);
//用户金币数
Integer
tokenCount
=
accountTokenService
.
getTokenCountById
(
companyId
,
siteId
,
accountId
);
//获取排序后的付费项目
voList
=
paidTrainingProjectClient
.
getPaidTrainingProject
(
qo
);
if
(
CollectionUtils
.
isNotEmpty
(
voList
))
{
//筛选
if
(
qo
.
getExchangeState
()
>
0
)
{
//用户兑换项目记录
List
<
TokenLog
>
hasExchangeProjects
=
tokenLogService
.
getLogListByAccountIdAndType
(
companyId
,
siteId
,
accountId
,
TokenLogType
.
PROJECT_APPLY
.
getCode
());
List
<
Long
>
hasExchangeIds
=
hasExchangeProjects
.
stream
().
map
(
TokenLog:
:
getRelationId
).
collect
(
Collectors
.
toList
());
voList
=
filterList
(
hasExchangeIds
,
voList
,
tokenCount
,
qo
.
getExchangeState
());
}
voPageInfo
.
setPageTotal
(
(
voList
.
size
()
+
pageSize
-
1
)
/
pageSize
);
voPageInfo
.
setPageRecords
(
voList
.
size
());
Integer
start
=
(
pageNo
-
1
)
*
pageSize
;
Integer
end
=
pageNo
*
pageSize
>
voList
.
size
()
?
voList
.
size
()
:
pageNo
*
pageSize
;
voList
=
voList
.
subList
(
start
,
end
);
}
voPageInfo
.
setRecords
(
voList
);
voPageInfo
.
setPageSortField
(
qo
.
getOrderField
());
voPageInfo
.
setPageSortType
(
qo
.
getOrder
());
return
voPageInfo
;
}
/**
* 通过兑换状态筛选
*/
public
List
<
PaidTrainingProjectVO
>
filterList
(
List
<
Long
>
hasExchangeIds
,
List
<
PaidTrainingProjectVO
>
voList
,
Integer
tokenCount
,
Integer
exchangeState
)
{
switch
(
exchangeState
)
{
//1(已兑换)
case
1
:
voList
=
voList
.
stream
().
filter
(
t
->
hasExchangeIds
.
contains
(
t
.
getId
())).
collect
(
Collectors
.
toList
());
break
;
//2(未兑换)
case
2
:
voList
=
voList
.
stream
().
filter
(
t
->
!
hasExchangeIds
.
contains
(
t
.
getId
())).
collect
(
Collectors
.
toList
());
break
;
//3(可兑换: 未兑换 && 金币数>=实际价格)
case
3
:
voList
=
voList
.
stream
().
filter
(
t
->
(!
hasExchangeIds
.
contains
(
t
.
getId
()))
&&
(
tokenCount
.
compareTo
(
t
.
getActualPrice
())
>=
0
)
).
collect
(
Collectors
.
toList
());
break
;
default
:
break
;
}
return
voList
;
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/impl/TokenConfigXServiceImpl.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.xservice.impl
import
com.yizhi.application.orm.id.IdGenerator
import
com.yizhi.core.application.context.ContextHolder
import
com.yizhi.mall.application.domain.TokenExchangeRule
import
com.yizhi.mall.application.pojo.vo.TokenConfigVO
import
com.yizhi.mall.application.pojo.vo.TokenSwitchVO
import
com.yizhi.mall.application.repository.TokenExchangeRuleRepository
import
com.yizhi.mall.application.repository.TokenexchangeruleLogRepository
import
com.yizhi.mall.application.service.ITokenExchangeRuleService
import
com.yizhi.mall.application.service.ITokenSwitchService
import
com.yizhi.mall.application.xservice.TokenConfigXService
import
org.springframework.beans.factory.annotation.Autowired
import
org.springframework.stereotype.Service
import
java.math.BigDecimal
/**
* @Date 2021/1/6 4:51 下午
* @Author lvjianhui
**/
@Service
class
TokenConfigXServiceImpl
:
TokenConfigXService
{
@Autowired
lateinit
var
tokenSwitchService
:
ITokenSwitchService
@Autowired
lateinit
var
tokenExchangeRuleService
:
ITokenExchangeRuleService
@Autowired
lateinit
var
repository
:
TokenExchangeRuleRepository
@Autowired
lateinit
var
idGenerator
:
IdGenerator
override
fun
getRuleBySiteId
():
TokenConfigVO
?
{
var
rule
=
tokenExchangeRuleService
.
tokenExchangeRule
if
(
rule
==
null
)
{
rule
=
TokenExchangeRule
()
rule
.
id
=
idGenerator
.
generate
()
rule
.
exchangeCondition
=
false
rule
.
rate
=
BigDecimal
(
100
)
rule
.
tokenName
=
"金币"
repository
.
save
(
rule
)
}
val
vo
=
TokenConfigVO
();
vo
.
tokenName
=
rule
.
tokenName
vo
.
rate
=
rule
.
rate
vo
.
exchangeCondition
=
rule
.
exchangeCondition
vo
.
ruleType
=
rule
.
conditionRuleType
vo
.
ruleTokenCount
=
rule
.
conditionRuleTokenCount
return
vo
}
override
fun
getSwitch
(
type
:
Int
?):
List
<
TokenSwitchVO
>?
{
val
rc
=
ContextHolder
.
get
()
val
switchList
=
tokenSwitchService
.
getSwitchByType
(
type
,
rc
.
companyId
,
rc
.
siteId
)
?:
return
null
if
(
switchList
.
isEmpty
())
{
return
null
}
val
vos
=
arrayListOf
<
TokenSwitchVO
>()
switchList
.
forEach
{
val
vo
=
TokenSwitchVO
()
vo
.
tokenSwitch
=
it
.
tokenSwitchBol
vo
.
type
=
it
.
type
vos
.
add
(
vo
)
}
return
vos
}
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/impl/TokenLogXServiceImpl.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.xservice.impl
import
com.yizhi.core.application.context.ContextHolder
import
com.yizhi.core.application.context.RequestContext
import
com.yizhi.mall.application.ExchangeConditionType
import
com.yizhi.mall.application.domain.TokenLog
import
com.yizhi.mall.application.pojo.vo.OrderDetailVO
import
com.yizhi.mall.application.pojo.vo.TokenLogMonthTotalVO
import
com.yizhi.mall.application.pojo.vo.TokenLogVO
import
com.yizhi.mall.application.service.ITokenLogService
import
com.yizhi.mall.application.utils.MallDateUtils
import
com.yizhi.mall.application.xservice.TokenLogXService
import
com.yizhi.util.application.page.PageInfo
import
org.apache.commons.lang.StringUtils
import
org.springframework.beans.factory.annotation.Autowired
import
org.springframework.stereotype.Service
import
java.util.*
/**
* @Date 2021/1/7 10:54 上午
* @Author lvjianhui
**/
@Service
class
TokenLogXServiceImpl
:
TokenLogXService
{
@Autowired
lateinit
var
tokenLogService
:
ITokenLogService
override
fun
getLogByType
(
startAt
:
Date
,
endAt
:
Date
,
type
:
Int
?,
pageIndex
:
Int
,
pageSize
:
Int
):
PageInfo
<
TokenLogVO
>
{
val
context
=
ContextHolder
.
get
()
val
pageInfo
=
PageInfo
<
TokenLogVO
>()
pageInfo
.
pageNo
=
pageIndex
pageInfo
.
pageSize
=
pageSize
val
page
=
tokenLogService
.
getLogByAccountIdAndType
(
context
.
companyId
,
context
.
siteId
,
context
.
accountId
,
type
,
pageIndex
,
pageSize
,
startAt
,
endAt
)
pageInfo
.
pageTotal
=
page
.
totalPages
val
list
=
page
.
content
val
vos
=
arrayListOf
<
TokenLogVO
>()
list
.
forEach
{
val
vo
=
TokenLogVO
()
vo
.
createdAt
=
it
.
createdAt
vo
.
type
=
it
.
type
vo
.
orderId
=
it
.
orderId
vo
.
relationId
=
it
.
relationId
vo
.
relationName
=
it
.
relationName
vo
.
count
=
it
.
changeCount
vos
.
add
(
vo
)
}
pageInfo
.
pageRecords
=
page
.
totalElements
.
toInt
()
pageInfo
.
records
=
vos
return
pageInfo
}
override
fun
getTokenTotal
(
startAt
:
Long
?,
type
:
Int
?,
pageIndex
:
Int
,
pageSize
:
Int
):
TokenLogMonthTotalVO
?
{
var
vo
=
TokenLogMonthTotalVO
()
val
pageInfo
=
PageInfo
<
TokenLogVO
>()
pageInfo
.
pageNo
=
pageIndex
pageInfo
.
pageSize
=
pageSize
pageInfo
.
pageTotal
=
0
pageInfo
.
pageRecords
=
0
vo
.
items
=
pageInfo
val
currentDate
=
getStartAndEndAt
(
startAt
,
type
)
?:
let
{
// 没有任何记录
vo
.
timestamp
=
Date
().
time
return
vo
}
val
startAndEnd
=
MallDateUtils
.
getSAtAndEAtByConditionCode
(
ExchangeConditionType
.
MONTH
,
currentDate
)
val
startAt
=
startAndEnd
.
first
val
endAt
=
startAndEnd
.
second
vo
=
tokenLogService
.
getTokenTotal
(
startAt
,
endAt
,
type
)
vo
.
items
=
getLogByType
(
startAt
,
endAt
,
type
,
pageIndex
,
pageSize
)
vo
.
timestamp
=
currentDate
.
time
return
vo
}
override
fun
getOrderDetail
(
accountId
:
Long
,
companyId
:
Long
,
siteId
:
Long
,
orderId
:
String
):
OrderDetailVO
{
val
log
=
tokenLogService
.
getOrderByOrderId
(
accountId
,
companyId
,
siteId
,
orderId
)
!!
val
vo
=
OrderDetailVO
()
vo
.
tokenCount
=
log
.
changeCount
vo
.
costCount
=
log
.
costCount
vo
.
type
=
log
.
type
vo
.
createdAt
=
log
.
createdAt
vo
.
accountName
=
log
.
accountFullName
if
(
StringUtils
.
isEmpty
(
vo
.
accountName
))
{
vo
.
accountName
=
log
.
accountName
}
vo
.
orderId
=
log
.
orderId
return
vo
}
/**
* 按月获取开始结束
*/
private
fun
getStartAndEndAt
(
startAt
:
Long
?,
type
:
Int
?):
Date
?
{
val
context
=
ContextHolder
.
get
()
if
(
startAt
!=
null
)
{
return
Date
(
startAt
)
}
// 时间为null,查询最后一条log,获取最新一条记录的月份
val
tokenLog
:
TokenLog
=
tokenLogService
.
getLastLog
(
type
,
context
.
companyId
,
context
.
siteId
,
context
.
accountId
)
?:
return
null
return
tokenLog
.
createdAt
}
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/impl/TokenSwitchXServiceImpl.java
0 → 100644
View file @
df6660e0
package
com
.
yizhi
.
mall
.
application
.
xservice
.
impl
;
import
com.yizhi.application.orm.id.IdGenerator
;
import
com.yizhi.core.application.context.ContextHolder
;
import
com.yizhi.core.application.context.RequestContext
;
import
com.yizhi.mall.application.domain.TokenSwitch
;
import
com.yizhi.mall.application.repository.TokenSwitchRepository
;
import
com.yizhi.mall.application.xservice.TokenSwitchXService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Objects
;
/**
* @ClassName: TokenSwitchXServiceImpl
* @author: zjl
* @date: 2021/1/15 9:54
*/
@Service
public
class
TokenSwitchXServiceImpl
implements
TokenSwitchXService
{
@Autowired
private
TokenSwitchRepository
repository
;
@Autowired
private
IdGenerator
idGenerator
;
/**
* 新增/修改开关
* @param type
* @param tokenSwitchBol
* @return
*/
@Override
public
TokenSwitch
saveOrUpdateTokenSwitch
(
Integer
type
,
Boolean
tokenSwitchBol
)
{
RequestContext
context
=
ContextHolder
.
get
();
TokenSwitch
tokenSwitch
=
repository
.
findByCompanyIdAndSiteIdAndType
(
context
.
getCompanyId
(),
context
.
getSiteId
(),
type
);
if
(
Objects
.
isNull
(
tokenSwitch
))
{
//站点无兑换规则 新增
tokenSwitch
=
new
TokenSwitch
();
tokenSwitch
.
setId
(
idGenerator
.
generate
());
}
tokenSwitch
.
setTokenSwitchBol
(
tokenSwitchBol
);
tokenSwitch
.
setType
(
type
);
TokenSwitch
save
=
repository
.
save
(
tokenSwitch
);
return
save
;
}
}
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/impl/TokenXServiceImpl.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.xservice.impl
import
com.yizhi.core.application.context.ContextHolder
import
com.yizhi.core.application.exception.BizException
import
com.yizhi.enroll.application.feign.EnrollFeignClient
import
com.yizhi.mall.application.ExchangeConditionType
import
com.yizhi.mall.application.TokenLogType
import
com.yizhi.mall.application.TokenSwitchType
import
com.yizhi.mall.application.config.MallMsgEnum
import
com.yizhi.mall.application.config.constant.TokenLogRelationDto
import
com.yizhi.mall.application.domain.*
import
com.yizhi.mall.application.pojo.qo.ApplyProjectPO
import
com.yizhi.mall.application.pojo.qo.TokenExchangePO
import
com.yizhi.mall.application.service.*
import
com.yizhi.mall.application.utils.MallDateUtils
import
com.yizhi.mall.application.xservice.AccountTokenXService
import
com.yizhi.mall.application.xservice.TokenConfigXService
import
com.yizhi.mall.application.xservice.TokenXService
import
com.yizhi.mall.application.xservice.TrXService
import
com.yizhi.point.application.feign.PointDetailsFeignClients
import
com.yizhi.training.application.feign.TrainingProjectClient
import
org.slf4j.LoggerFactory
import
org.springframework.beans.factory.annotation.Autowired
import
org.springframework.stereotype.Service
import
java.math.BigDecimal
import
java.util.*
/**
* @Date 2021/1/13 2:34 下午
* @Author lvjianhui
**/
@Service
open
class
TokenXServiceImpl
:
TokenXService
{
private
val
logger
=
LoggerFactory
.
getLogger
(
javaClass
)
@Autowired
lateinit
var
pointClient
:
PointDetailsFeignClients
@Autowired
lateinit
var
iAccountExchangeSumService
:
IAccountExchangeSumService
@Autowired
lateinit
var
tokenConfigXService
:
TokenConfigXService
@Autowired
lateinit
var
iAccountExchangeLogService
:
IAccountExchangeLogService
@Autowired
lateinit
var
tokenExchangeRuleService
:
ITokenExchangeRuleService
@Autowired
lateinit
var
accountTokenService
:
IAccountTokenService
@Autowired
lateinit
var
accountTokenXService
:
AccountTokenXService
@Autowired
lateinit
var
tokenLogService
:
ITokenLogService
@Autowired
lateinit
var
trainingProjectClient
:
TrainingProjectClient
@Autowired
lateinit
var
enrollFeignClient
:
EnrollFeignClient
@Autowired
lateinit
var
trXService
:
TrXService
override
fun
costToProject
(
po
:
ApplyProjectPO
)
{
var
msg
=
TokenLogRelationDto
()
when
(
po
.
relationType
)
{
TokenLogType
.
PROJECT_APPLY
.
code
->
{
msg
=
projectApplyCheck
(
po
,
msg
)
}
}
val
accountToken
=
accountTokenService
.
tokenAccount
val
userToken
=
accountToken
?.
amount
?:
0
if
(
msg
.
needToken
>
userToken
)
{
// 余额不足
throw
BizException
(
MallMsgEnum
.
TOKEN_AMOUNT_ERROR
.
code
,
MallMsgEnum
.
TOKEN_AMOUNT_ERROR
.
msg
)
}
trXService
.
trApplyCostToken
(
msg
.
needToken
,
TokenLogType
.
PROJECT_APPLY
,
null
,
msg
)
}
private
fun
projectApplyCheck
(
po
:
ApplyProjectPO
,
msg
:
TokenLogRelationDto
):
TokenLogRelationDto
{
val
costList
=
tokenLogService
.
getLogByRelationIdAndType
(
po
.
relationtId
,
po
.
relationType
)
if
(
costList
!=
null
&&
costList
.
size
>
0
)
{
// 已报名
throw
BizException
(
MallMsgEnum
.
PROJECT_APPLYED
.
code
,
MallMsgEnum
.
PROJECT_APPLYED
.
msg
)
}
val
vo
=
trainingProjectClient
.
getOne
(
po
.
relationtId
)
// 付费
if
(
vo
==
null
||
vo
.
status
!=
1
||
vo
.
enableEnroll
!=
1
)
{
throw
BizException
(
MallMsgEnum
.
PROJECT_PARAMS_ERROR
.
code
,
MallMsgEnum
.
PROJECT_PARAMS_ERROR
.
msg
)
}
// 报名条件
val
enrool
=
enrollFeignClient
.
selectByProjectId
(
po
.
relationtId
)
if
(
enrool
==
null
||
enrool
.
enablePay
!=
1
)
{
throw
BizException
(
MallMsgEnum
.
PROJECT_PARAMS_ERROR
.
code
,
MallMsgEnum
.
PROJECT_PARAMS_ERROR
.
msg
)
}
val
currentTimeMillis
=
System
.
currentTimeMillis
()
if
((
enrool
.
startTime
!=
null
&&
enrool
.
startTime
.
time
>
currentTimeMillis
)
||
(
enrool
.
endTime
!=
null
&&
enrool
.
endTime
.
time
<
currentTimeMillis
)
)
{
throw
BizException
(
MallMsgEnum
.
PROJECT_ENROOL_TIME_ERROR
.
code
,
MallMsgEnum
.
PROJECT_ENROOL_TIME_ERROR
.
msg
)
}
// 报名人数
if
(
enrool
.
personLimitNum
!=
null
&&
enrool
.
personLimitNum
!=
0
)
{
// 查询报名人数
val
count
=
tokenLogService
.
getEnrollCount
(
po
.
relationtId
,
po
.
relationType
)
if
(
count
>=
enrool
.
personLimitNum
)
{
val
msg
=
MallMsgEnum
.
PROJECT_ENROLL_ACCOUNT_NUM_LIMIT
throw
BizException
(
msg
.
code
,
msg
.
msg
)
}
}
msg
.
relationIconUrl
=
vo
.
logoImg
msg
.
relationId
=
po
.
relationtId
msg
.
relationName
=
vo
.
name
msg
.
needToken
=
enrool
.
actualPrice
?:
0
return
msg
}
override
fun
getPointCount
():
Int
{
val
rc
=
ContextHolder
.
get
()
// 积分总和
val
pointCount
=
pointClient
.
queryPiont
(
rc
.
accountId
,
rc
.
companyId
,
rc
.
siteId
,
rc
.
orgId
)
?:
0
val
pointUsedCount
=
iAccountExchangeSumService
.
getCostPointTotal
()
if
(
pointUsedCount
>
pointCount
)
{
return
0
}
return
pointCount
-
pointUsedCount
}
override
fun
pointExchangeToken
(
po
:
TokenExchangePO
)
{
// 查看开关
checkExchangeSwitch
()
val
needExchangeToken
=
po
.
tokenCount
val
rule
=
tokenExchangeRuleService
.
tokenExchangeRule
?:
let
{
logger
.
error
(
"兑换规则配置异常"
)
throw
BizException
(
MallMsgEnum
.
POINT_RULE_ERROR
.
code
,
MallMsgEnum
.
POINT_RULE_ERROR
.
msg
)
}
// 查看规则
checkRuleLimit
(
rule
,
needExchangeToken
)
accountTokenXService
.
updateTokenAccount
(
needExchangeToken
,
TokenLogType
.
POINT_EXCHANGE
,
rule
,
null
)
}
private
fun
checkRuleLimit
(
rule
:
TokenExchangeRule
,
needExchangeToken
:
Int
)
{
if
(
needExchangeToken
<=
0
)
{
val
msg
=
MallMsgEnum
.
EXCHANGE_TOKEN_AMOUNT_ERROR
throw
BizException
(
msg
.
code
,
msg
.
msg
)
}
val
ruleRate
=
rule
.
rate
// 积分够不够
val
canUsePointCount
=
getPointCount
()
val
needPointCount
=
ruleRate
*
BigDecimal
(
needExchangeToken
)
// 需要积分大于可用积分
if
(
needPointCount
.
compareTo
(
BigDecimal
(
canUsePointCount
))
==
1
)
{
val
msg
=
MallMsgEnum
.
POINT_AMOUNT_NOT_ENOUGH
throw
BizException
(
msg
.
code
,
msg
.
msg
)
}
if
(!
rule
.
exchangeCondition
)
{
return
}
val
ruleType
=
rule
.
conditionRuleType
val
ruleCount
=
rule
.
conditionRuleTokenCount
val
currentTime
=
Date
()
var
startAndEndAt
:
Pair
<
Date
,
Date
>?
=
null
if
(
ruleType
!=
ExchangeConditionType
.
ALLTIME
.
code
)
{
startAndEndAt
=
MallDateUtils
.
getSAtAndEAtByConditionCode
(
ExchangeConditionType
.
getByCode
(
ruleType
),
currentTime
)
}
// 查询已兑换金币数
val
currentDateToken
=
iAccountExchangeLogService
.
getPointExchangeTokenTotalByDate
(
startAndEndAt
?.
first
,
startAndEndAt
?.
second
)
val
afterCount
=
needExchangeToken
+
currentDateToken
if
(
afterCount
>
ruleCount
)
{
val
msg
=
MallMsgEnum
.
POINT_EXCHANGE_TOKEN_LIMIT
throw
BizException
(
msg
.
code
,
msg
.
msg
)
}
}
private
fun
checkExchangeSwitch
()
{
val
vo
=
tokenConfigXService
.
getSwitch
(
TokenSwitchType
.
POINT_EXCHANGE
.
type
)
if
(
null
==
vo
||
vo
.
isEmpty
()
||
!
vo
.
first
().
tokenSwitch
)
{
val
code
=
MallMsgEnum
.
POINT_EXCHANGE_CLOSE
throw
BizException
(
code
.
code
,
code
.
msg
)
}
}
}
\ No newline at end of file
cloud-mall-service/src/main/java/com/yizhi/mall/application/xservice/impl/TrXServiceImpl.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall.application.xservice.impl
import
com.yizhi.enroll.application.feign.EnrollFeignClient
import
com.yizhi.mall.application.TokenLogType
import
com.yizhi.mall.application.config.constant.TokenLogRelationDto
import
com.yizhi.mall.application.domain.TokenExchangeRule
import
com.yizhi.mall.application.xservice.AccountTokenXService
import
com.yizhi.mall.application.xservice.TrXService
import
org.springframework.beans.factory.annotation.Autowired
import
org.springframework.stereotype.Service
import
javax.transaction.Transactional
/**
* @Date 2021/1/18 3:05 下午
* @Author lvjianhui
**/
@Service
open
class
TrXServiceImpl
:
TrXService
{
@Autowired
lateinit
var
enrollFeignClient
:
EnrollFeignClient
@Autowired
lateinit
var
accountTokenXService
:
AccountTokenXService
@Transactional
override
fun
trApplyCostToken
(
changeToken
:
Int
,
logType
:
TokenLogType
,
rule
:
TokenExchangeRule
?,
relationMsg
:
TokenLogRelationDto
)
{
// 扣费
accountTokenXService
.
updateTokenAccount
(
changeToken
,
TokenLogType
.
PROJECT_APPLY
,
null
,
relationMsg
)
// 报名成功
enrollFeignClient
.
insertTrEnrollRecord
(
relationMsg
.
relationId
)
}
}
\ No newline at end of file
cloud-mall-service/src/main/resources/bootstrap.yml
0 → 100644
View file @
df6660e0
server
:
port
:
31061
spring
:
application
:
name
:
'
mall'
profiles
:
active
:
'
dev'
jpa
:
show-sql
:
true
# nacos
cloud
:
nacos
:
config
:
shared-dataids
:
'
common-${spring.profiles.active}.properties'
namespace
:
${spring.profiles.active}
prefix
:
'
${spring.application.name}'
file-extension
:
'
properties'
server-addr
:
'
192.168.1.22:3333,192.168.1.22:4444,192.168.1.22:5555'
# server-addr: '192.168.1.13:3333,192.168.1.24:4444,192.168.1.38:5555'
ACTIVE
:
${spring.profiles.active}
cloud-mall-service/src/test/java/MybatisCodeGenerator.java
0 → 100644
View file @
df6660e0
import
com.baomidou.mybatisplus.generator.AutoGenerator
;
import
com.baomidou.mybatisplus.generator.config.*
;
import
com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert
;
import
com.baomidou.mybatisplus.generator.config.rules.DbColumnType
;
import
com.baomidou.mybatisplus.generator.config.rules.DbType
;
import
com.baomidou.mybatisplus.generator.config.rules.NamingStrategy
;
import
org.junit.Ignore
;
import
org.junit.Test
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* <p>
* 代码生成器演示
* </p>
*/
//@Ignore
public
class
MybatisCodeGenerator
{
/**
* <p>
* MySQL 生成演示
* </p>
*/
@Test
public
void
generator
()
{
AutoGenerator
mpg
=
new
AutoGenerator
();
// 全局配置
GlobalConfig
gc
=
new
GlobalConfig
();
gc
.
setFileOverride
(
true
);
gc
.
setActiveRecord
(
true
);
// 不需要ActiveRecord特性的请改为false
gc
.
setEnableCache
(
false
);
// XML 二级缓存
gc
.
setBaseResultMap
(
true
);
// XML ResultMap
gc
.
setBaseColumnList
(
false
);
// XML columList
// 第一次生成代码可直接放到代码中,开发中期不建议生成代码直接覆盖以前代码
gc
.
setOutputDir
(
"cloud-mall-service/src/test/java"
);
gc
.
setAuthor
(
"MybatisCodeGenerator"
);
mpg
.
setGlobalConfig
(
gc
);
// 数据源配置
DataSourceConfig
dsc
=
new
DataSourceConfig
();
dsc
.
setDbType
(
DbType
.
MYSQL
);
dsc
.
setTypeConvert
(
new
MySqlTypeConvert
()
{
// 自定义数据库表字段类型转换【可选】
@Override
public
DbColumnType
processTypeConvert
(
String
fieldType
)
{
System
.
out
.
println
(
"转换类型:"
+
fieldType
);
// 注意!!processTypeConvert 存在默认类型转换,如果不是你要的效果请自定义返回、非如下直接返回。
return
super
.
processTypeConvert
(
fieldType
);
}
});
dsc
.
setDriverName
(
"com.mysql.jdbc.Driver"
);
dsc
.
setUsername
(
"devDB"
);
dsc
.
setPassword
(
"devDB@123"
);
dsc
.
setUrl
(
"jdbc:mysql://192.168.1.31:3306/cloud_mall?useUnicode=true&characterEncoding=UTF-8&"
);
mpg
.
setDataSource
(
dsc
);
// 策略配置
StrategyConfig
strategy
=
new
StrategyConfig
();
strategy
.
setTablePrefix
(
new
String
[]
{
""
});
// 此处可以修改为您的表前缀
strategy
.
setNaming
(
NamingStrategy
.
underline_to_camel
);
// 表名生成策略
strategy
.
setInclude
(
new
String
[]
{
"token_log"
});
// 需要生成的表
strategy
.
setEntityLombokModel
(
false
);
mpg
.
setStrategy
(
strategy
);
// 包配置
PackageConfig
pc
=
new
PackageConfig
();
pc
.
setParent
(
"com.yizhi.mall.application"
);
pc
.
setController
(
"controller"
);
pc
.
setEntity
(
"domain"
);
pc
.
setMapper
(
"repository"
);
mpg
.
setPackageInfo
(
pc
);
// // 注入自定义配置,可以在 VM 中使用 cfg.abc 【可无】
// InjectionConfig cfg = new InjectionConfig() {
// @Override
// public void initMap() {
// Map<String, Object> map = new HashMap<String, Object>();
// map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
// this.setMap(map);
// }
// };
// List<FileOutConfig> focList = new ArrayList<FileOutConfig>();
// 调整 xml 生成目录演示
// focList.add(new FileOutConfig("/mapper.xml.vm") {
// @Override
// public String outputFile(TableInfo tableInfo) {
// return "/develop/code/xml/" + tableInfo.getEntityName() + ".xml";
// }
// });
// cfg.setFileOutConfigList(focList);
// mpg.setCfg(cfg);
TemplateConfig
tc
=
new
TemplateConfig
();
tc
.
setXml
(
null
);
tc
.
setController
(
null
);
tc
.
setEntity
(
"entity.java.vm"
);
tc
.
setMapper
(
null
);
tc
.
setServiceImpl
(
null
);
tc
.
setService
(
null
);
mpg
.
setTemplate
(
tc
);
//
// // 执行生成
mpg
.
execute
();
}
}
\ No newline at end of file
cloud-mall-service/src/test/java/com/yizhi/mall/DateUtils.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall
import
cn.hutool.core.date.DateUtil
import
org.junit.Test
import
java.util.*
/**
* @Date 2021/1/11 4:25 下午
* @Author lvjianhui
**/
class
DateUtils
{
@Test
fun
test
()
{
var
calendar
=
Calendar
.
getInstance
()
// calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), 1)
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
)
calendar
.
set
(
Calendar
.
MINUTE
,
0
)
calendar
.
set
(
Calendar
.
SECOND
,
0
)
// 年
calendar
.
set
(
Calendar
.
YEAR
,
calendar
.
get
(
Calendar
.
YEAR
))
calendar
.
set
(
Calendar
.
MONTH
,
Calendar
.
JANUARY
)
calendar
.
set
(
Calendar
.
DAY_OF_MONTH
,
1
)
println
(
"年开始======"
+
DateUtil
.
format
(
calendar
.
time
,
"yyyyMMdd HH:mm:ss"
))
calendar
.
add
(
Calendar
.
YEAR
,
1
)
println
(
"年结束======"
+
DateUtil
.
format
(
calendar
.
time
,
"yyyyMMdd HH:mm:ss"
))
calendar
.
clear
()
calendar
=
Calendar
.
getInstance
()
// 月
calendar
.
set
(
Calendar
.
YEAR
,
calendar
.
get
(
Calendar
.
YEAR
))
calendar
.
set
(
Calendar
.
MONTH
,
calendar
.
get
(
Calendar
.
MONTH
))
calendar
.
set
(
Calendar
.
DAY_OF_MONTH
,
1
)
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
)
calendar
.
set
(
Calendar
.
MINUTE
,
0
)
calendar
.
set
(
Calendar
.
SECOND
,
0
)
println
(
"月开始======"
+
DateUtil
.
format
(
calendar
.
time
,
"yyyyMMdd HH:mm:ss"
))
calendar
.
add
(
Calendar
.
MONTH
,
1
)
println
(
"月结束======"
+
DateUtil
.
format
(
calendar
.
time
,
"yyyyMMdd HH:mm:ss"
))
calendar
.
clear
()
calendar
=
Calendar
.
getInstance
()
// 周
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
)
calendar
.
set
(
Calendar
.
MINUTE
,
0
)
calendar
.
set
(
Calendar
.
SECOND
,
0
)
calendar
.
set
(
Calendar
.
YEAR
,
calendar
.
get
(
Calendar
.
YEAR
))
calendar
.
set
(
Calendar
.
DAY_OF_WEEK
,
Calendar
.
MONDAY
)
calendar
.
set
(
Calendar
.
WEEK_OF_YEAR
,
calendar
.
get
(
Calendar
.
WEEK_OF_YEAR
))
println
(
"周开始======"
+
DateUtil
.
format
(
calendar
.
time
,
"yyyyMMdd HH:mm:ss"
))
calendar
.
add
(
Calendar
.
WEEK_OF_YEAR
,
1
)
println
(
"周结束======"
+
DateUtil
.
format
(
calendar
.
time
,
"yyyyMMdd HH:mm:ss"
))
calendar
.
clear
()
calendar
=
Calendar
.
getInstance
()
// 季度
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
)
calendar
.
set
(
Calendar
.
MINUTE
,
0
)
calendar
.
set
(
Calendar
.
SECOND
,
0
)
calendar
.
set
(
Calendar
.
YEAR
,
calendar
.
get
(
Calendar
.
YEAR
))
val
quarter
=
DateUtil
.
quarter
(
calendar
.
time
)
-
1
calendar
.
set
(
Calendar
.
MONTH
,
Calendar
.
JANUARY
)
calendar
.
set
(
Calendar
.
DAY_OF_MONTH
,
1
)
calendar
.
add
(
Calendar
.
MONTH
,
quarter
*
3
)
println
(
"季度开始======"
+
DateUtil
.
format
(
calendar
.
time
,
"yyyyMMdd HH:mm:ss"
))
calendar
.
add
(
Calendar
.
MONTH
,
3
)
println
(
"季度结束======"
+
DateUtil
.
format
(
calendar
.
time
,
"yyyyMMdd HH:mm:ss"
))
calendar
.
clear
()
calendar
=
Calendar
.
getInstance
()
// 季度
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
)
calendar
.
set
(
Calendar
.
MINUTE
,
0
)
calendar
.
set
(
Calendar
.
SECOND
,
0
)
println
(
"日开始======"
+
DateUtil
.
format
(
calendar
.
time
,
"yyyyMMdd HH:mm:ss"
))
calendar
.
add
(
Calendar
.
DAY_OF_YEAR
,
1
)
println
(
"日开始======"
+
DateUtil
.
format
(
calendar
.
time
,
"yyyyMMdd HH:mm:ss"
))
calendar
.
clear
()
calendar
=
Calendar
.
getInstance
()
// calendar.time = Date(Date().time + 3600 * 1000 * 24 * 30 *6L)
// 半年
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
)
calendar
.
set
(
Calendar
.
MINUTE
,
0
)
calendar
.
set
(
Calendar
.
SECOND
,
0
)
calendar
.
set
(
Calendar
.
MONTH
,
Calendar
.
JULY
)
calendar
.
set
(
Calendar
.
DAY_OF_MONTH
,
1
)
if
(
Date
().
time
>=
calendar
.
time
.
time
)
{
println
(
"半年开始======"
+
DateUtil
.
format
(
calendar
.
time
,
"yyyyMMdd HH:mm:ss"
))
calendar
.
add
(
Calendar
.
MONTH
,
6
)
println
(
"半年结束======"
+
DateUtil
.
format
(
calendar
.
time
,
"yyyyMMdd HH:mm:ss"
))
}
else
{
println
(
"半年开始======"
+
DateUtil
.
format
(
calendar
.
time
,
"yyyyMMdd HH:mm:ss"
))
calendar
.
set
(
Calendar
.
MONTH
,
Calendar
.
JANUARY
)
println
(
"半年结束======"
+
DateUtil
.
format
(
calendar
.
time
,
"yyyyMMdd HH:mm:ss"
))
}
}
}
\ No newline at end of file
cloud-mall-service/src/test/java/com/yizhi/mall/Test.kt
0 → 100644
View file @
df6660e0
package
com.yizhi.mall
import
com.alibaba.fastjson.JSONObject
import
com.yizhi.mall.application.feign.TokenControllerClient
import
org.junit.Test
import
org.springframework.web.bind.annotation.GetMapping
import
java.lang.reflect.Proxy
/**
* @Date 2021/1/7 12:52 下午
* @Author lvjianhui
**/
//@Ignore
//@RunWith(SpringRunner::class)
//@SpringBootTest(classes = arrayOf(ITokenLogService::class))
open
class
Test
{
// @Autowired(required = true)
// private lateinit var tokenLogService: ITokenLogService
//
// @Test
// fun test() {
// tokenLogService.getLogByAccountIdAndType(1314,1314,1314,10,1,10);
// }
@Test
fun
test
()
{
val
clazz
:
Class
<*>
=
TokenControllerClient
::
class
.
java
val
method
=
clazz
.
getMethod
(
"get"
)
var
rm
=
method
.
getAnnotation
(
GetMapping
::
class
.
java
)
val
invocationHandler
=
Proxy
.
getInvocationHandler
(
rm
)
val
declaredField
=
invocationHandler
.
javaClass
.
getDeclaredField
(
"memberValues"
)
declaredField
.
isAccessible
=
true
;
val
memberValues
=
declaredField
[
invocationHandler
]
as
HashMap
<
String
,
String
>
memberValues
[
"headers"
]
=
"test.annotation.new.value"
println
(
JSONObject
.
toJSONString
(
rm
.
value
))
}
}
\ No newline at end of file
cloud-mall-service/src/test/resources/entity.java.vm
0 → 100644
View file @
df6660e0
package
${
package
.
Entity
};
#
if
(${
activeRecord
})
import
java
.
io
.
Serializable
;
#
end
#
foreach
($
pkg
in
${
table
.
importPackages
})
import
${
pkg
};
#
end
#
if
(${
entityLombokModel
})
import
com
.
baomidou
.
mybatisplus
.
annotations
.
Version
;
import
lombok
.
Data
;
#
end
import
org
.
hibernate
.
annotations
.
DynamicInsert
;
import
org
.
hibernate
.
annotations
.
DynamicUpdate
;
import
io
.
swagger
.
annotations
.
Api
;
import
io
.
swagger
.
annotations
.
ApiModelProperty
;
import
javax
.
persistence
.
Entity
;
import
javax
.
persistence
.
Id
;
/**
*
<
p
>
*
$
!{table.comment}
*
</
p
>
*
*
@
author
${
author
}
*
@
since
${
date
}
*/
#
if
(${
entityLombokModel
})
@
Data
#
end
@
DynamicUpdate
@
DynamicInsert
@
Api
(
tags
=
"${entity}"
,
description
=
"${table.comment}"
)
#
if
(${
table
.
convert
})
@
TableName
(
"${table.name}"
)
@
Entity
#
end
#
if
(${
superEntityClass
})
public
class
${
entity
}
extends
${
superEntityClass
}#
if
(${
activeRecord
})<${
entity
}>#
end
{
###
elseif
(${
activeRecord
})
##
public
class
${
entity
}
{
#
else
public
class
${
entity
}
implements
Serializable
{
#
end
private
static
final
long
serialVersionUID
=
1L
;
##
##
#
foreach
($
field
in
${
table
.
fields
})
#
if
(${
field
.
keyFlag
})
#
set
($
keyPropertyName
=${
field
.
propertyName
})
#
end
#
if
(
"$!field.comment"
!= "")
@
ApiModelProperty
(
value
=
"${field.comment}"
)
#
end
##
#
if
(${
field
.
name
}==
"id"
)
@
Id
#
end
##
#
if
(${
field
.
keyFlag
})
##
#
if
(${
field
.
keyIdentityFlag
})
@
TableId
(
value
=
"${field.name}"
,
type
=
IdType
.
AUTO
)
#
elseif
(${
field
.
convert
})
@
TableId
(
"${field.name}"
)
#
end
##
#
elseif
(${
field
.
fill
})
##
#
if
(${
field
.
convert
})
@
TableField
(
value
=
"${field.name}"
,
fill
=
FieldFill
.${
field
.
fill
})
#
else
@
TableField
(
fill
=
FieldFill
.${
field
.
fill
})
#
end
#
elseif
(${
field
.
convert
})
#
if
(${
field
.
name
}==
"create_by_id"
||
${
field
.
name
}==
"create_by_name"
||
${
field
.
name
}==
"create_time"
||
${
field
.
name
}==
"update_by_id"
||
${
field
.
name
}==
"update_by_name"
||
${
field
.
name
}==
"update_time"
)
@
TableField
(
value
=
"${field.name}"
,
fill
=
FieldFill
.
INSERT
)
#
else
@
TableField
(
"${field.name}"
)
#
end
#
end
##
#
if
(${
versionFieldName
}==${
field
.
name
})
@
Version
#
end
##
#
if
(${
logicDeleteFieldName
}==${
field
.
name
})
@
TableLogic
#
end
private
${
field
.
propertyType
}
${
field
.
propertyName
};
#
end
##
#
if
(
!${entityLombokModel})
#
foreach
($
field
in
${
table
.
fields
})
#
if
(${
field
.
propertyType
.
equals
(
"boolean"
)})
#
set
($
getprefix
=
"is"
)
#
else
#
set
($
getprefix
=
"get"
)
#
end
public
${
field
.
propertyType
}
${
getprefix
}${
field
.
capitalName
}()
{
return
${
field
.
propertyName
};
}
#
if
(${
entityBuilderModel
})
public
${
entity
}
set
${
field
.
capitalName
}(${
field
.
propertyType
}
${
field
.
propertyName
})
{
#
else
public
void
set
${
field
.
capitalName
}(${
field
.
propertyType
}
${
field
.
propertyName
})
{
#
end
this
.${
field
.
propertyName
}
=
${
field
.
propertyName
};
#
if
(${
entityBuilderModel
})
return
this
;
#
end
}
#
end
#
end
#
if
(${
entityColumnConstant
})
#
foreach
($
field
in
${
table
.
fields
})
public
static
final
String
${
field
.
name
.
toUpperCase
()}
=
"${field.name}"
;
#
end
#
end
###
if
(${
activeRecord
})
##
@
Override
##
protected
Serializable
pkVal
()
{
###
if
(${
keyPropertyName
})
##
return
this
.${
keyPropertyName
};
###
else
##
return
this
.
id
;
###
end
##
}
##
###
end
#
if
(
!${entityLombokModel})
@
Override
public
String
toString
()
{
return
"${entity}{"
+
#
foreach
($
field
in
${
table
.
fields
})
#
if
($
!{velocityCount}==1)
"${field.propertyName}="
+
${
field
.
propertyName
}
+
#
else
", ${field.propertyName}="
+
${
field
.
propertyName
}
+
#
end
#
end
"}"
;
}
#
end
}
cloud-mall-service/src/test/resources/mapper.java.vm
0 → 100644
View file @
df6660e0
package
${
package
.
Mapper
};
import
${
package
.
Entity
}.${
entity
};
import
org
.
springframework
.
data
.
jpa
.
repository
.
JpaRepository
;
import
org
.
springframework
.
data
.
querydsl
.
QuerydslPredicateExecutor
;
/**
*
<
p
>
*
$
!{table.comment} Mapper 接口
*
</
p
>
*
*
@
author
${
author
}
*
@
since
${
date
}
*/
#
if
(${
kotlin
})
interface
${
table
.
mapperName
}
:
${
superMapperClass
}<${
entity
}>
#
else
public
interface
${
table
.
mapperName
}
extends
JpaRepository
<${
entity
},
Long
>,
QuerydslPredicateExecutor
<${
entity
}>{
}
#
end
cloud-mall-service/src/test/resources/service.java.vm
0 → 100644
View file @
df6660e0
package
${
package
.
Service
};
/**
*
<
p
>
*
$
!{table.comment} 服务类
*
</
p
>
*
*
@
author
${
author
}
*
@
since
${
date
}
*/
#
if
(${
kotlin
})
interface
${
table
.
serviceName
}
:
${
superServiceClass
}<${
entity
}>
#
else
public
interface
${
table
.
serviceName
}
{
}
#
end
cloud-mall-service/src/test/resources/serviceImpl.java.vm
0 → 100644
View file @
df6660e0
package
${
package
.
ServiceImpl
};
import
${
package
.
Service
}.${
table
.
serviceName
};
import
org
.
springframework
.
stereotype
.
Service
;
import
com
.
yizhi
.
practice
.
application
.
service
.
BaseService
;
/**
*
<
p
>
*
$
!{table.comment} 服务实现类
*
</
p
>
*
*
@
author
${
author
}
*
@
since
${
date
}
*/
@
Service
#
if
(${
kotlin
})
open
class
${
table
.
serviceImplName
}
:
${
superServiceImplClass
}<${
table
.
mapperName
},
${
entity
}>(),
${
table
.
serviceName
}
{
}
#
else
public
class
${
table
.
serviceImplName
}
extends
BaseService
implements
${
table
.
serviceName
}{
}
#
end
pom.xml
0 → 100644
View file @
df6660e0
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<modules>
<module>
cloud-mall-service
</module>
<module>
cloud-mall-api
</module>
</modules>
<parent>
<groupId>
com.yizhi
</groupId>
<artifactId>
wmy-parent
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<relativePath/>
</parent>
<groupId>
com.yizhi
</groupId>
<artifactId>
cloud-mall
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<packaging>
pom
</packaging>
<properties>
<kotlin.compiler.incremental>
true
</kotlin.compiler.incremental>
</properties>
<repositories>
<repository>
<id>
wmy4.0
</id>
<url>
http://mvn.km365.pw/nexus/content/groups/wmy4.0-group/
</url>
<releases>
<enabled>
true
</enabled>
</releases>
<snapshots>
<enabled>
true
</enabled>
<updatePolicy>
always
</updatePolicy>
</snapshots>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>
org.jetbrains.kotlin
</groupId>
<artifactId>
kotlin-maven-plugin
</artifactId>
<version>
${kotlin.version}
</version>
<executions>
<execution>
<id>
compile
</id>
<goals>
<goal>
compile
</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>
${project.basedir}/src/main/kotlin
</sourceDir>
<sourceDir>
${project.basedir}/src/main/java
</sourceDir>
</sourceDirs>
</configuration>
</execution>
<execution>
<id>
test-compile
</id>
<goals>
<goal>
test-compile
</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>
${project.basedir}/src/test/kotlin
</sourceDir>
<sourceDir>
${project.basedir}/src/test/java
</sourceDir>
</sourceDirs>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
<version>
3.5.1
</version>
<executions>
<!-- 替换会被 maven 特别处理的 default-compile -->
<execution>
<id>
default-compile
</id>
<phase>
none
</phase>
</execution>
<!-- 替换会被 maven 特别处理的 default-testCompile -->
<execution>
<id>
default-testCompile
</id>
<phase>
none
</phase>
</execution>
<execution>
<id>
java-compile
</id>
<phase>
compile
</phase>
<goals>
<goal>
compile
</goal>
</goals>
</execution>
<execution>
<id>
java-test-compile
</id>
<phase>
test-compile
</phase>
<goals>
<goal>
testCompile
</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
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