Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fzm-joying
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lei
fzm-joying
Commits
42420728
Commit
42420728
authored
Jul 05, 2021
by
tangtuo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增后台管理系统nft剧本管理页面的接口
parent
17e1a095
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
611 additions
and
19 deletions
+611
-19
pom.xml
joying-admin/pom.xml
+1
-4
MySaTokenAction.java
...min/src/main/java/com/fzm/admin/auth/MySaTokenAction.java
+34
-0
StpAdminUtil.java
...-admin/src/main/java/com/fzm/admin/auth/StpAdminUtil.java
+0
-0
StpServiceImpl.java
...dmin/src/main/java/com/fzm/admin/auth/StpServiceImpl.java
+29
-0
AdminController.java
...c/main/java/com/fzm/admin/controller/AdminController.java
+28
-2
CategoryController.java
...ain/java/com/fzm/admin/controller/CategoryController.java
+32
-0
NftController.java
...src/main/java/com/fzm/admin/controller/NftController.java
+77
-0
LoginParam.java
...-admin/src/main/java/com/fzm/admin/params/LoginParam.java
+19
-0
application-dev.yml
joying-admin/src/main/resources/application-dev.yml
+8
-0
pom.xml
joying-common/pom.xml
+5
-0
Admin.java
joying-common/src/main/java/com/fzm/common/entity/Admin.java
+62
-0
NftListVo.java
...mon/src/main/java/com/fzm/common/entity/vo/NftListVo.java
+38
-0
ResultCode.java
...common/src/main/java/com/fzm/common/enums/ResultCode.java
+1
-0
AdminMapper.java
...mmon/src/main/java/com/fzm/common/mapper/AdminMapper.java
+14
-0
NftMapper.java
...common/src/main/java/com/fzm/common/mapper/NftMapper.java
+17
-0
AdminService.java
...on/src/main/java/com/fzm/common/service/AdminService.java
+13
-0
NftService.java
...mmon/src/main/java/com/fzm/common/service/NftService.java
+57
-0
AdminServiceImpl.java
...in/java/com/fzm/common/service/impl/AdminServiceImpl.java
+39
-0
NftServiceImpl.java
...main/java/com/fzm/common/service/impl/NftServiceImpl.java
+68
-3
OssUtil.java
...ng-common/src/main/java/com/fzm/common/utils/OssUtil.java
+19
-9
NftMapper.xml
joying-common/src/main/resources/mapper/NftMapper.xml
+46
-0
NftController.java
...rc/main/java/com/fzm/portal/controller/NftController.java
+4
-1
No files found.
joying-admin/pom.xml
View file @
42420728
...
@@ -47,10 +47,7 @@
...
@@ -47,10 +47,7 @@
<groupId>
com.spring4all
</groupId>
<groupId>
com.spring4all
</groupId>
<artifactId>
swagger-spring-boot-starter
</artifactId>
<artifactId>
swagger-spring-boot-starter
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
com.github.pagehelper
</groupId>
<artifactId>
pagehelper-spring-boot-starter
</artifactId>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
...
...
joying-admin/src/main/java/com/fzm/admin/auth/MySaTokenAction.java
0 → 100644
View file @
42420728
package
com
.
fzm
.
admin
.
auth
;
import
cn.dev33.satoken.action.SaTokenActionDefaultImpl
;
import
com.fzm.common.entity.Admin
;
import
com.fzm.common.entity.User
;
import
com.fzm.common.service.AdminService
;
import
com.fzm.common.service.UserService
;
import
com.fzm.common.utils.JwtUtil
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
/**
* 继承Sa-Token行为Bean默认实现, 重写部分逻辑
*/
@Component
public
class
MySaTokenAction
extends
SaTokenActionDefaultImpl
{
@Resource
private
AdminService
adminService
;
/**
* 生成自定义token
*
* @param loginId
* @param loginType
* @return
*/
@Override
public
String
createToken
(
Object
loginId
,
String
loginType
)
{
Admin
loginUser
=
adminService
.
getById
((
Integer
)
loginId
);
return
JwtUtil
.
generateToken
(
loginUser
);
}
}
joying-admin/src/main/java/com/fzm/admin/auth/StpAdminUtil.java
0 → 100644
View file @
42420728
This diff is collapsed.
Click to expand it.
joying-admin/src/main/java/com/fzm/admin/auth/StpServiceImpl.java
0 → 100644
View file @
42420728
package
com
.
fzm
.
admin
.
auth
;
import
cn.dev33.satoken.stp.StpInterface
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
/**
* @author tangtuo
* @date 2021/7/5 15:11
*
* <p>
* 查询当前角色的权限
* </p>
*/
@Component
public
class
StpServiceImpl
implements
StpInterface
{
@Override
public
List
<
String
>
getPermissionList
(
Object
loginId
,
String
loginType
)
{
return
null
;
}
@Override
public
List
<
String
>
getRoleList
(
Object
loginId
,
String
loginType
)
{
return
null
;
}
}
joying-admin/src/main/java/com/fzm/admin/controller/AdminController.java
View file @
42420728
package
com
.
fzm
.
admin
.
controller
;
package
com
.
fzm
.
admin
.
controller
;
import
cn.dev33.satoken.stp.StpUtil
;
import
com.fzm.admin.auth.StpAdminUtil
;
import
com.fzm.admin.params.LoginParam
;
import
com.fzm.common.constant.TokenConstant
;
import
com.fzm.common.entity.Admin
;
import
com.fzm.common.model.ResponseModel
;
import
com.fzm.common.service.AdminService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
/**
* @author tangtuo
* @author tangtuo
...
@@ -12,4 +24,18 @@ import org.springframework.web.bind.annotation.RestController;
...
@@ -12,4 +24,18 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping
(
"/admin"
)
@RequestMapping
(
"/admin"
)
@Api
(
tags
=
"后台用户管理"
)
@Api
(
tags
=
"后台用户管理"
)
public
class
AdminController
{
public
class
AdminController
{
@Resource
private
AdminService
adminService
;
@PostMapping
(
"/login"
)
@ApiOperation
(
value
=
"登录"
)
public
ResponseModel
<
Map
<
String
,
Object
>>
login
(
@Validated
@RequestBody
LoginParam
loginParam
)
{
Admin
admin
=
adminService
.
login
(
loginParam
.
getUsername
(),
loginParam
.
getPassword
());
StpAdminUtil
.
login
(
admin
.
getId
());
HashMap
<
String
,
Object
>
result
=
new
HashMap
<>();
result
.
put
(
"user"
,
admin
);
result
.
put
(
TokenConstant
.
TOKEN_HEADER
,
StpAdminUtil
.
getTokenValue
());
return
ResponseModel
.
success
(
result
);
}
}
}
joying-admin/src/main/java/com/fzm/admin/controller/CategoryController.java
0 → 100644
View file @
42420728
package
com
.
fzm
.
admin
.
controller
;
import
com.fzm.common.entity.Category
;
import
com.fzm.common.model.ResponseModel
;
import
com.fzm.common.service.CategoryService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.annotation.Resource
;
import
java.util.List
;
/**
* @author tangtuo
* @date 2021/7/1 14:37
*/
@RestController
@RequestMapping
(
value
=
"/category"
)
@Api
(
tags
=
"类目管理"
)
public
class
CategoryController
{
@Resource
private
CategoryService
categoryService
;
@GetMapping
(
"/list"
)
@ApiOperation
(
value
=
"查询所有类目信息"
)
public
ResponseModel
<
List
<
Category
>>
list
()
{
return
ResponseModel
.
success
(
categoryService
.
list
());
}
}
joying-admin/src/main/java/com/fzm/admin/controller/NftController.java
0 → 100644
View file @
42420728
package
com
.
fzm
.
admin
.
controller
;
import
com.fzm.common.entity.Nft
;
import
com.fzm.common.entity.vo.NftListVo
;
import
com.fzm.common.model.ResponseModel
;
import
com.fzm.common.service.NftService
;
import
com.github.pagehelper.PageInfo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
/**
* @author tangtuo
* @date 2021/7/5 15:34
*/
@RestController
@RequestMapping
(
"/nft"
)
@Api
(
tags
=
"剧本nft管理"
)
public
class
NftController
{
@Resource
private
NftService
nftService
;
@GetMapping
(
"/list"
)
@ApiOperation
(
value
=
"查询nft列表"
)
public
ResponseModel
<
PageInfo
<
NftListVo
>>
list
(
@ApiParam
(
value
=
"页码"
,
required
=
true
)
@RequestParam
Integer
pageNum
,
@ApiParam
(
value
=
"每页记录数"
,
required
=
true
)
@RequestParam
Integer
pageSize
,
@ApiParam
(
value
=
"类目id"
)
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Integer
categoryId
,
@ApiParam
(
value
=
"作品名称"
)
@RequestParam
(
required
=
false
)
String
name
,
@ApiParam
(
value
=
"作品标签"
)
@RequestParam
(
required
=
false
)
String
theme
,
@ApiParam
(
value
=
"注册手机号"
)
@RequestParam
(
required
=
false
)
String
telephone
,
@ApiParam
(
value
=
"上架状态 0-未上架 1-已上架"
)
@RequestParam
(
required
=
false
)
Integer
status
,
@ApiParam
(
value
=
"创建开始日期,yyyy-MM-dd格式"
)
@RequestParam
(
required
=
false
)
String
start
,
@ApiParam
(
value
=
"创建截止日期,yyyy-MM-dd格式"
)
@RequestParam
(
required
=
false
)
String
end
)
{
PageInfo
<
NftListVo
>
page
=
nftService
.
page
(
pageNum
,
pageSize
,
categoryId
,
name
,
theme
,
telephone
,
status
,
start
,
end
);
return
ResponseModel
.
success
(
page
);
}
@ApiOperation
(
value
=
"置顶"
)
@PostMapping
(
"/top/{id}"
)
public
ResponseModel
<
Boolean
>
top
(
@ApiParam
(
value
=
"nft主键"
)
@PathVariable
Integer
id
)
{
return
ResponseModel
.
success
(
nftService
.
top
(
id
));
}
@ApiOperation
(
value
=
"取消置顶"
)
@PostMapping
(
"/untop/{id}"
)
public
ResponseModel
<
Boolean
>
untop
(
@ApiParam
(
value
=
"nft主键"
)
@PathVariable
Integer
id
)
{
return
ResponseModel
.
success
(
nftService
.
untop
(
id
));
}
@ApiOperation
(
value
=
"上架"
)
@PostMapping
(
"/onShelf/{id}"
)
public
ResponseModel
onShelf
(
@ApiParam
(
value
=
"nft主键"
)
@PathVariable
Integer
id
)
{
return
ResponseModel
.
success
(
nftService
.
onShelf
(
id
));
}
@ApiOperation
(
value
=
"下架"
)
@PostMapping
(
"/offShelf/{id}"
)
public
ResponseModel
offShelf
(
@ApiParam
(
value
=
"nft主键"
)
@PathVariable
Integer
id
)
{
return
ResponseModel
.
success
(
nftService
.
offShelf
(
id
));
}
@ApiOperation
(
value
=
"查看详情"
)
@PostMapping
(
"/detail/{id}"
)
public
ResponseModel
<
Nft
>
getById
(
@ApiParam
(
value
=
"nft主键"
)
@PathVariable
Integer
id
)
{
return
ResponseModel
.
success
(
nftService
.
getById
(
id
));
}
@ApiOperation
(
value
=
"下载文件"
)
@PostMapping
(
"/download/{id}"
)
public
void
download
(
@ApiParam
(
value
=
"nft主键"
)
@PathVariable
Integer
id
)
{
nftService
.
download
(
id
);
}
}
joying-admin/src/main/java/com/fzm/admin/params/LoginParam.java
0 → 100644
View file @
42420728
package
com
.
fzm
.
admin
.
params
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
/**
* @author tangtuo
* @date 2021/7/5 15:26
*/
@Data
public
class
LoginParam
{
@NotBlank
(
message
=
"用户名不能为空"
)
private
String
username
;
@NotBlank
(
message
=
"密码不能为空"
)
private
String
password
;
}
joying-admin/src/main/resources/application-dev.yml
View file @
42420728
...
@@ -94,3 +94,11 @@ chain:
...
@@ -94,3 +94,11 @@ chain:
contract-name
:
user.evm.0xd996a3a866c577596df260844a045a068ec5accd8d71ccaa3d578c9617ec5490
contract-name
:
user.evm.0xd996a3a866c577596df260844a045a068ec5accd8d71ccaa3d578c9617ec5490
contract-address
:
1iDWTHZQxPES4hLveZRcwJH6AMaMfZfZZ
contract-address
:
1iDWTHZQxPES4hLveZRcwJH6AMaMfZfZZ
aliyun
:
oss
:
app-key
:
LTAI5tHGn7cVJdEtihTFLSeB
app-secret
:
XYmfBSbLaZoblGXZwIXkbhfBD7a1eg
end-point
:
oss-cn-hangzhou.aliyuncs.com
simple-bucket
:
test-nft
encrypt-bucket
:
test-nft-2
joying-common/pom.xml
View file @
42420728
...
@@ -79,6 +79,11 @@
...
@@ -79,6 +79,11 @@
</exclusion>
</exclusion>
</exclusions>
</exclusions>
</dependency>
</dependency>
<dependency>
<groupId>
com.github.pagehelper
</groupId>
<artifactId>
pagehelper-spring-boot-starter
</artifactId>
</dependency>
</dependencies>
</dependencies>
<properties>
<properties>
...
...
joying-common/src/main/java/com/fzm/common/entity/Admin.java
0 → 100644
View file @
42420728
package
com
.
fzm
.
common
.
entity
;
import
com.baomidou.mybatisplus.annotation.*
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
com.fzm.common.constant.TokenConstant
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
/**
* @author tangtuo
* @date 2021/7/5 15:02
*/
@Data
@Accessors
(
chain
=
true
)
@TableName
(
"tb_admin"
)
public
class
Admin
extends
AbstractUser
{
@TableId
(
type
=
IdType
.
AUTO
)
private
Integer
id
;
@ApiModelProperty
(
"用户名"
)
private
String
username
;
@ApiModelProperty
(
"昵称"
)
private
String
nickname
;
@ApiModelProperty
(
"密码"
)
@JsonProperty
(
access
=
JsonProperty
.
Access
.
WRITE_ONLY
)
private
String
password
;
@ApiModelProperty
(
"角色id"
)
private
Integer
roleId
;
@ApiModelProperty
(
"创建时间"
)
private
Date
createDate
;
@ApiModelProperty
(
"修改时间"
)
private
Date
updateDate
;
@ApiModelProperty
(
"记录创建的时间戳"
)
@TableField
(
fill
=
FieldFill
.
INSERT
)
@JsonProperty
(
access
=
JsonProperty
.
Access
.
WRITE_ONLY
)
private
Long
createTime
;
@ApiModelProperty
(
"记录更新的时间戳"
)
@TableField
(
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonProperty
(
access
=
JsonProperty
.
Access
.
WRITE_ONLY
)
private
Long
updateTime
;
@Override
public
String
appId
()
{
return
TokenConstant
.
TOKEN_APP_ID_ADMIN
;
}
@Override
public
Integer
userId
()
{
return
id
;
}
}
joying-common/src/main/java/com/fzm/common/entity/vo/NftListVo.java
0 → 100644
View file @
42420728
package
com
.
fzm
.
common
.
entity
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author tangtuo
* @date 2021/7/5 15:58
*/
@Data
public
class
NftListVo
{
@ApiModelProperty
(
"作品id"
)
private
Integer
id
;
@ApiModelProperty
(
"名称"
)
private
String
name
;
@ApiModelProperty
(
"主题,多个用逗号,隔开"
)
private
String
theme
;
@ApiModelProperty
(
"发行人账号"
)
private
String
publisherAccount
;
@ApiModelProperty
(
"发行人昵称"
)
private
String
publisherNickname
;
@ApiModelProperty
(
"nft发行时间"
)
private
Date
publishTime
;
@ApiModelProperty
(
"是否置顶 0-否 1-是"
)
private
Integer
isTop
;
@ApiModelProperty
(
"0-下架 1-上架"
)
private
Integer
status
;
}
joying-common/src/main/java/com/fzm/common/enums/ResultCode.java
View file @
42420728
...
@@ -10,6 +10,7 @@ public enum ResultCode implements IErrorCode {
...
@@ -10,6 +10,7 @@ public enum ResultCode implements IErrorCode {
REGISTER_ERROR
(
410
,
"您已注册过"
),
REGISTER_ERROR
(
410
,
"您已注册过"
),
LOGIN_ERROR
(
411
,
"登录失败"
),
LOGIN_ERROR
(
411
,
"登录失败"
),
FILE_UPLOAD_ERROR
(
412
,
"文件上传失败"
),
FILE_UPLOAD_ERROR
(
412
,
"文件上传失败"
),
FILE_DOWNLOAD_ERROR
(
412
,
"文件下载失败"
),
TOKEN_VALID_ERROR
(
413
,
"token校验失败"
),
TOKEN_VALID_ERROR
(
413
,
"token校验失败"
),
CODE_ERROR
(
414
,
"验证码发送失败"
),
CODE_ERROR
(
414
,
"验证码发送失败"
),
;
;
...
...
joying-common/src/main/java/com/fzm/common/mapper/AdminMapper.java
0 → 100644
View file @
42420728
package
com
.
fzm
.
common
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.fzm.common.entity.Admin
;
import
com.fzm.common.entity.Category
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* @author tangtuo
* @date 2021/7/1 14:35
*/
@Mapper
public
interface
AdminMapper
extends
BaseMapper
<
Admin
>
{
}
joying-common/src/main/java/com/fzm/common/mapper/NftMapper.java
View file @
42420728
package
com
.
fzm
.
common
.
mapper
;
package
com
.
fzm
.
common
.
mapper
;
import
cn.hutool.core.date.DateTime
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.fzm.common.entity.Nft
;
import
com.fzm.common.entity.Nft
;
import
com.fzm.common.entity.vo.CollectionNftVo
;
import
com.fzm.common.entity.vo.CollectionNftVo
;
import
com.fzm.common.entity.vo.NftListVo
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
...
@@ -17,6 +19,7 @@ public interface NftMapper extends BaseMapper<Nft> {
...
@@ -17,6 +19,7 @@ public interface NftMapper extends BaseMapper<Nft> {
/**
/**
* 查询nft列表
* 查询nft列表
*
* @param pageNum
* @param pageNum
* @param pageSize
* @param pageSize
* @param categoryId
* @param categoryId
...
@@ -25,4 +28,18 @@ public interface NftMapper extends BaseMapper<Nft> {
...
@@ -25,4 +28,18 @@ public interface NftMapper extends BaseMapper<Nft> {
List
<
Nft
>
list
(
@Param
(
"pageNum"
)
Integer
pageNum
,
@Param
(
"pageSize"
)
Integer
pageSize
,
@Param
(
"categoryId"
)
Integer
categoryId
);
List
<
Nft
>
list
(
@Param
(
"pageNum"
)
Integer
pageNum
,
@Param
(
"pageSize"
)
Integer
pageSize
,
@Param
(
"categoryId"
)
Integer
categoryId
);
List
<
CollectionNftVo
>
getCollectionList
(
@Param
(
"list"
)
List
<
Integer
>
list
);
List
<
CollectionNftVo
>
getCollectionList
(
@Param
(
"list"
)
List
<
Integer
>
list
);
/**
* 后天管理系统根据条件检索
*
* @param categoryId
* @param name
* @param telephone
* @param theme
* @param status
* @param startDate
* @param endDate
* @return
*/
List
<
NftListVo
>
page
(
@Param
(
"categoryId"
)
Integer
categoryId
,
@Param
(
"name"
)
String
name
,
@Param
(
"telephone"
)
String
telephone
,
@Param
(
"theme"
)
String
theme
,
@Param
(
"status"
)
Integer
status
,
@Param
(
"startDate"
)
DateTime
startDate
,
@Param
(
"endDate"
)
DateTime
endDate
);
}
}
joying-common/src/main/java/com/fzm/common/service/AdminService.java
0 → 100644
View file @
42420728
package
com
.
fzm
.
common
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.fzm.common.entity.Admin
;
/**
* @author tangtuo
* @date 2021/7/5 15:08
*/
public
interface
AdminService
extends
IService
<
Admin
>
{
Admin
login
(
String
username
,
String
password
);
}
joying-common/src/main/java/com/fzm/common/service/NftService.java
View file @
42420728
...
@@ -3,6 +3,8 @@ package com.fzm.common.service;
...
@@ -3,6 +3,8 @@ package com.fzm.common.service;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.fzm.common.entity.Nft
;
import
com.fzm.common.entity.Nft
;
import
com.fzm.common.entity.vo.CollectionNftVo
;
import
com.fzm.common.entity.vo.CollectionNftVo
;
import
com.fzm.common.entity.vo.NftListVo
;
import
com.github.pagehelper.PageInfo
;
import
java.util.List
;
import
java.util.List
;
...
@@ -60,4 +62,59 @@ public interface NftService extends IService<Nft> {
...
@@ -60,4 +62,59 @@ public interface NftService extends IService<Nft> {
* @return
* @return
*/
*/
String
generateNftId
(
Integer
categoryId
);
String
generateNftId
(
Integer
categoryId
);
/**
* 后台管理系统根据条件检索nft列表
*
* @param pageNum
* @param pageSize
* @param categoryId
* @param name
* @param theme
* @param telephone
* @param status
* @param start
* @param end
* @return
*/
PageInfo
<
NftListVo
>
page
(
Integer
pageNum
,
Integer
pageSize
,
Integer
categoryId
,
String
name
,
String
theme
,
String
telephone
,
Integer
status
,
String
start
,
String
end
);
/**
* 置顶
*
* @param id
* @return
*/
Boolean
top
(
Integer
id
);
/**
* 取消置顶
*
* @param id
* @return
*/
Boolean
untop
(
Integer
id
);
/**
* 上架
*
* @param id
* @return
*/
Boolean
onShelf
(
Integer
id
);
/**
* 下架
*
* @param id
* @return
*/
Boolean
offShelf
(
Integer
id
);
/**
* 下载附件
*
* @param id
*/
void
download
(
Integer
id
);
}
}
joying-common/src/main/java/com/fzm/common/service/impl/AdminServiceImpl.java
0 → 100644
View file @
42420728
package
com
.
fzm
.
common
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.fzm.common.entity.Admin
;
import
com.fzm.common.enums.ResultCode
;
import
com.fzm.common.exception.GlobalException
;
import
com.fzm.common.mapper.AdminMapper
;
import
com.fzm.common.service.AdminService
;
import
org.springframework.security.crypto.password.PasswordEncoder
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
/**
* @author tangtuo
* @date 2021/7/5 15:09
*/
@Service
public
class
AdminServiceImpl
extends
ServiceImpl
<
AdminMapper
,
Admin
>
implements
AdminService
{
@Resource
private
PasswordEncoder
passwordEncoder
;
@Override
public
Admin
login
(
String
username
,
String
password
)
{
QueryWrapper
<
Admin
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"username"
,
username
);
Admin
admin
=
getOne
(
queryWrapper
);
if
(
admin
==
null
)
{
throw
GlobalException
.
newException
(
ResultCode
.
UNAUTHORIZED
,
"您还没有注册"
);
}
if
(!
passwordEncoder
.
matches
(
password
,
admin
.
getPassword
()))
{
throw
GlobalException
.
newException
(
ResultCode
.
UNAUTHORIZED
,
"密码有误"
);
}
return
admin
;
}
}
joying-common/src/main/java/com/fzm/common/service/impl/NftServiceImpl.java
View file @
42420728
...
@@ -3,15 +3,19 @@ package com.fzm.common.service.impl;
...
@@ -3,15 +3,19 @@ package com.fzm.common.service.impl;
import
cn.dev33.satoken.stp.StpUtil
;
import
cn.dev33.satoken.stp.StpUtil
;
import
cn.fzm.chain.simplesdk.client.ParaChainClient
;
import
cn.fzm.chain.simplesdk.client.ParaChainClient
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.RandomUtil
;
import
cn.hutool.core.util.RandomUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.fzm.common.constant.RedisConstant
;
import
com.fzm.common.constant.RedisConstant
;
import
com.fzm.common.constant.SystemConstant
;
import
com.fzm.common.constant.SystemConstant
;
import
com.fzm.common.entity.BaseEntity
;
import
com.fzm.common.entity.Category
;
import
com.fzm.common.entity.Category
;
import
com.fzm.common.entity.Nft
;
import
com.fzm.common.entity.Nft
;
import
com.fzm.common.entity.User
;
import
com.fzm.common.entity.User
;
import
com.fzm.common.entity.vo.CollectionNftVo
;
import
com.fzm.common.entity.vo.CollectionNftVo
;
import
com.fzm.common.entity.vo.NftListVo
;
import
com.fzm.common.enums.ResultCode
;
import
com.fzm.common.enums.ResultCode
;
import
com.fzm.common.exception.GlobalException
;
import
com.fzm.common.exception.GlobalException
;
import
com.fzm.common.mapper.NftMapper
;
import
com.fzm.common.mapper.NftMapper
;
...
@@ -19,7 +23,10 @@ import com.fzm.common.service.CategoryService;
...
@@ -19,7 +23,10 @@ import com.fzm.common.service.CategoryService;
import
com.fzm.common.service.NftService
;
import
com.fzm.common.service.NftService
;
import
com.fzm.common.service.UserService
;
import
com.fzm.common.service.UserService
;
import
com.fzm.common.utils.JsonUtil
;
import
com.fzm.common.utils.JsonUtil
;
import
com.fzm.common.utils.OssUtil
;
import
com.fzm.common.utils.RedisUtil
;
import
com.fzm.common.utils.RedisUtil
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageInfo
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -52,6 +59,9 @@ public class NftServiceImpl extends ServiceImpl<NftMapper, Nft> implements NftSe
...
@@ -52,6 +59,9 @@ public class NftServiceImpl extends ServiceImpl<NftMapper, Nft> implements NftSe
@Resource
@Resource
private
CategoryService
categoryService
;
private
CategoryService
categoryService
;
@Resource
private
OssUtil
ossUtil
;
@Value
(
"${chain.para.contract-name}"
)
@Value
(
"${chain.para.contract-name}"
)
private
String
contractName
;
private
String
contractName
;
...
@@ -127,8 +137,63 @@ public class NftServiceImpl extends ServiceImpl<NftMapper, Nft> implements NftSe
...
@@ -127,8 +137,63 @@ public class NftServiceImpl extends ServiceImpl<NftMapper, Nft> implements NftSe
return
String
.
format
(
"JOYING-%s-%s%s"
,
category
.
getEnglishName
(),
System
.
currentTimeMillis
(),
code
);
return
String
.
format
(
"JOYING-%s-%s%s"
,
category
.
getEnglishName
(),
System
.
currentTimeMillis
(),
code
);
}
}
public
static
void
main
(
String
[]
args
)
{
@Override
int
code
=
RandomUtil
.
randomInt
(
1000
,
10000
);
public
PageInfo
<
NftListVo
>
page
(
Integer
pageNum
,
Integer
pageSize
,
Integer
categoryId
,
String
name
,
String
theme
,
String
telephone
,
Integer
status
,
String
start
,
String
end
)
{
System
.
out
.
println
(
String
.
format
(
"JOYING-%s-%s%s"
,
"SCRIPT"
,
System
.
currentTimeMillis
(),
code
));
PageHelper
.
startPage
(
pageNum
,
pageSize
);
DateTime
startDate
=
null
;
DateTime
endDate
=
null
;
if
(
StringUtils
.
isNotBlank
(
start
))
{
startDate
=
DateUtil
.
parse
(
start
+
" 00:00:00"
,
"yyyy-MM-dd HH:mm:ss"
);
}
if
(
StringUtils
.
isNotBlank
(
end
))
{
endDate
=
DateUtil
.
parse
(
end
+
" 23:59:59"
,
"yyyy-MM-dd HH:mm:ss"
);
}
List
<
NftListVo
>
list
=
nftMapper
.
page
(
categoryId
,
name
,
telephone
,
theme
,
status
,
startDate
,
endDate
);
return
new
PageInfo
<>(
list
);
}
@Override
public
Boolean
top
(
Integer
id
)
{
Nft
nft
=
new
Nft
();
nft
.
setIsTop
(
SystemConstant
.
BOOLEAN_DATA_TRUE
);
nft
.
setId
(
id
);
return
updateById
(
nft
);
}
@Override
public
Boolean
untop
(
Integer
id
)
{
Nft
nft
=
new
Nft
();
nft
.
setIsTop
(
SystemConstant
.
BOOLEAN_DATA_FALSE
);
nft
.
setId
(
id
);
return
updateById
(
nft
);
}
}
@Override
public
Boolean
onShelf
(
Integer
id
)
{
Nft
nft
=
new
Nft
();
nft
.
setStatus
(
SystemConstant
.
BOOLEAN_DATA_TRUE
);
nft
.
setId
(
id
);
return
updateById
(
nft
);
}
@Override
public
Boolean
offShelf
(
Integer
id
)
{
Nft
nft
=
new
Nft
();
nft
.
setStatus
(
SystemConstant
.
BOOLEAN_DATA_FALSE
);
nft
.
setId
(
id
);
return
updateById
(
nft
);
}
@Override
public
void
download
(
Integer
id
)
{
Nft
nft
=
getById
(
id
);
if
(
nft
==
null
)
{
throw
GlobalException
.
newException
(
ResultCode
.
DATA_ERROR
,
"没找到此nft详情"
);
}
if
(
SystemConstant
.
BOOLEAN_DATA_FALSE
.
equals
(
nft
.
getIsArchives
())
||
SystemConstant
.
BOOLEAN_DATA_TRUE
.
equals
(
nft
.
getIsGrant
()))
{
throw
GlobalException
.
newException
(
ResultCode
.
FILE_DOWNLOAD_ERROR
,
"当前文件不支持下载"
);
}
ossUtil
.
downloadFile
(
nft
.
getFileUrl
(),
nft
.
getFileName
());
}
}
}
joying-common/src/main/java/com/fzm/common/utils/OssUtil.java
View file @
42420728
...
@@ -5,7 +5,10 @@ import cn.hutool.core.util.IdUtil;
...
@@ -5,7 +5,10 @@ import cn.hutool.core.util.IdUtil;
import
com.aliyun.oss.OSS
;
import
com.aliyun.oss.OSS
;
import
com.aliyun.oss.OSSClientBuilder
;
import
com.aliyun.oss.OSSClientBuilder
;
import
com.aliyun.oss.model.*
;
import
com.aliyun.oss.model.*
;
import
com.fzm.common.enums.ResultCode
;
import
com.fzm.common.exception.GlobalException
;
import
com.fzm.common.properties.OssProperties
;
import
com.fzm.common.properties.OssProperties
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
...
@@ -13,12 +16,14 @@ import javax.annotation.Resource;
...
@@ -13,12 +16,14 @@ import javax.annotation.Resource;
import
javax.servlet.ServletOutputStream
;
import
javax.servlet.ServletOutputStream
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.*
;
import
java.io.*
;
import
java.net.URLEncoder
;
import
java.util.Date
;
import
java.util.Date
;
/**
/**
* @author tangtuo
* @author tangtuo
* @date 2021/6/29 16:07
* @date 2021/6/29 16:07
*/
*/
@Slf4j
@Component
@Component
public
class
OssUtil
{
public
class
OssUtil
{
...
@@ -95,22 +100,27 @@ public class OssUtil {
...
@@ -95,22 +100,27 @@ public class OssUtil {
/**
/**
* 下载文件
* @param fileUrl 文件地址
*
* @param fileName 文件名
* @param file
*/
*/
public
void
downloadFile
(
String
file
)
{
public
void
downloadFile
(
String
file
Url
,
String
fileName
)
{
String
endpoint
=
ossProperties
.
getEndPoint
();
String
endpoint
=
ossProperties
.
getEndPoint
();
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
String
accessKeyId
=
ossProperties
.
getAppKey
();
String
accessKeyId
=
ossProperties
.
getAppKey
();
String
accessKeySecret
=
ossProperties
.
getAppSecret
();
String
accessKeySecret
=
ossProperties
.
getAppSecret
();
String
bucketName
=
ossProperties
.
getEncryptBucket
();
String
bucketName
=
ossProperties
.
getEncryptBucket
();
try
{
// 文件名以附件的形式下载
response
.
setHeader
(
"Content-Disposition"
,
"attachment;filename="
+
URLEncoder
.
encode
(
fileName
,
"UTF-8"
));
}
catch
(
UnsupportedEncodingException
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
throw
GlobalException
.
newException
(
ResultCode
.
FILE_DOWNLOAD_ERROR
,
e
.
getMessage
());
}
// 创建OSSClient实例。
// 创建OSSClient实例。
OSS
ossClient
=
new
OSSClientBuilder
().
build
(
endpoint
,
accessKeyId
,
accessKeySecret
);
OSS
ossClient
=
new
OSSClientBuilder
().
build
(
endpoint
,
accessKeyId
,
accessKeySecret
);
// ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
// ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
file
=
file
.
replace
(
String
.
format
(
"https://%s.%s/"
,
bucketName
,
endpoint
),
""
);
file
Url
=
fileUrl
.
replace
(
String
.
format
(
"https://%s.%s/"
,
bucketName
,
endpoint
),
""
);
OSSObject
ossObject
=
ossClient
.
getObject
(
bucketName
,
file
);
OSSObject
ossObject
=
ossClient
.
getObject
(
bucketName
,
file
Url
);
try
{
try
{
// 读取文件内容。
// 读取文件内容。
InputStream
inputStream
=
ossObject
.
getObjectContent
();
InputStream
inputStream
=
ossObject
.
getObjectContent
();
...
@@ -129,9 +139,9 @@ public class OssUtil {
...
@@ -129,9 +139,9 @@ public class OssUtil {
if
(
in
!=
null
)
{
if
(
in
!=
null
)
{
in
.
close
();
in
.
close
();
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
(),
e
);
throw
GlobalException
.
newException
(
ResultCode
.
FILE_DOWNLOAD_ERROR
,
e
.
getMessage
());
}
}
}
}
...
...
joying-common/src/main/resources/mapper/NftMapper.xml
View file @
42420728
...
@@ -26,4 +26,49 @@
...
@@ -26,4 +26,49 @@
)
)
</select>
</select>
<select
id=
"page"
resultType=
"com.fzm.common.entity.vo.NftListVo"
>
SELECT
n.id,
n.`name`,
n.theme,
n.`status`,
n.is_top,
n.publish_time,
u.nickname AS publisherNickname,
u.telephone AS publisherAccount
FROM
tb_nft n
LEFT JOIN tb_user u ON n.user_id = u.id
WHERE
1 = 1
<if
test=
"name != null and name != ''"
>
and n.name like concat ('%',#{name},'%')
</if>
<if
test=
"categoryId != null"
>
and n.category_id = #{categoryId}
</if>
<if
test=
"theme != null and theme != ''"
>
and FIND_IN_SET(#{theme},n.theme)
</if>
<if
test=
"categoryId != null"
>
and n.category_id = #{categoryId}
</if>
<if
test=
"status != null"
>
and n.status = #{status}
</if>
<if
test=
"telephone != null and telephone != ''"
>
and u.telephone = #{telephone}
</if>
<if
test=
"startDate != null"
>
and n.create_date >= #{startDate}
</if>
<if
test=
"endDate != null"
>
and n.create_date
<
= #{endDate}
</if>
ORDER BY
is_top DESC,
`status` DESC,
publish_time DESC
</select>
</mapper>
</mapper>
\ No newline at end of file
joying-portal/src/main/java/com/fzm/portal/controller/NftController.java
View file @
42420728
...
@@ -4,7 +4,6 @@ import cn.dev33.satoken.annotation.SaCheckLogin;
...
@@ -4,7 +4,6 @@ import cn.dev33.satoken.annotation.SaCheckLogin;
import
cn.dev33.satoken.stp.StpUtil
;
import
cn.dev33.satoken.stp.StpUtil
;
import
cn.hutool.crypto.SecureUtil
;
import
cn.hutool.crypto.SecureUtil
;
import
com.fzm.common.constant.SystemConstant
;
import
com.fzm.common.constant.SystemConstant
;
import
com.fzm.common.entity.Category
;
import
com.fzm.common.entity.Nft
;
import
com.fzm.common.entity.Nft
;
import
com.fzm.common.entity.User
;
import
com.fzm.common.entity.User
;
import
com.fzm.common.entity.vo.CollectionNftVo
;
import
com.fzm.common.entity.vo.CollectionNftVo
;
...
@@ -70,6 +69,10 @@ public class NftController {
...
@@ -70,6 +69,10 @@ public class NftController {
if
(
file
==
null
||
isGrant
==
null
)
{
if
(
file
==
null
||
isGrant
==
null
)
{
throw
GlobalException
.
newException
(
ResultCode
.
VALIDATE_FAILED
,
"当选择加密存档的时候,文件和授权阅读不能为空"
);
throw
GlobalException
.
newException
(
ResultCode
.
VALIDATE_FAILED
,
"当选择加密存档的时候,文件和授权阅读不能为空"
);
}
}
// 判断文件的hash是否被篡改过
if
(!
SecureUtil
.
md5
(
file
.
getInputStream
()).
equals
(
fileHash
))
{
throw
GlobalException
.
newException
(
ResultCode
.
VALIDATE_FAILED
,
"文件hash和文件内容不匹配"
);
}
String
fileUrl
=
ossUtil
.
putEncryptObject
(
file
);
String
fileUrl
=
ossUtil
.
putEncryptObject
(
file
);
nft
.
setFileUrl
(
fileUrl
).
setIsGrant
(
isGrant
).
setFileName
(
file
.
getOriginalFilename
());
nft
.
setFileUrl
(
fileUrl
).
setIsGrant
(
isGrant
).
setFileName
(
file
.
getOriginalFilename
());
}
}
...
...
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