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
e31a3201
Commit
e31a3201
authored
Sep 23, 2021
by
tangtuo
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev_1.2.0' into test_v1.2.0
parents
f280ea01
ca149f47
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
103 additions
and
96 deletions
+103
-96
application-prod.yml
joying-admin/src/main/resources/application-prod.yml
+12
-12
NftServiceImpl.java
...main/java/com/fzm/common/service/impl/NftServiceImpl.java
+7
-9
UserServiceImpl.java
...ain/java/com/fzm/common/service/impl/UserServiceImpl.java
+7
-0
SmsUtil.java
...ng-common/src/main/java/com/fzm/common/utils/SmsUtil.java
+0
-3
NftMapper.xml
joying-common/src/main/resources/mapper/NftMapper.xml
+2
-2
application-prod.yml
joying-portal/src/main/resources/application-prod.yml
+10
-10
joying.sql
sql/joying.sql
+65
-60
No files found.
joying-admin/src/main/resources/application-prod.yml
View file @
e31a3201
...
...
@@ -4,9 +4,9 @@ spring:
main
:
allow-bean-definition-overriding
:
true
datasource
:
url
:
jdbc:mysql://rm-uf65
dutlz01018ctc33150
.mysql.rds.aliyuncs.com:3306/joying?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8
username
:
inmvo
chain
password
:
db$95872!com@inmvo
url
:
jdbc:mysql://rm-uf65
2555t10p7cj27
.mysql.rds.aliyuncs.com:3306/joying?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8
username
:
inmvo
_china
password
:
U2FsdGVkX19J0YHIUWXWgPh1C5R0=
platform
:
mysql
type
:
com.alibaba.druid.pool.DruidDataSource
driver-class-name
:
com.mysql.cj.jdbc.Driver
...
...
@@ -27,9 +27,9 @@ spring:
connection-properties
:
druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
useGlobalDataSourceStat
:
true
redis
:
host
:
r-uf6
5vh5nip6yjfgtcn
.redis.rds.aliyuncs.com
host
:
r-uf6
1gaz5hcnys2gbdo
.redis.rds.aliyuncs.com
port
:
6379
password
:
db$95872!com@inmvo
password
:
U2FsdGVkX19J0YHIUWXWgPh1C5R0=
lettuce
:
pool
:
# 连接池最大连接数(使用负值表示没有限制) 默认 8
...
...
@@ -65,14 +65,14 @@ swagger:
chain
:
para
:
rpc-url
:
http://47.
243.127.76
:8901
rpc-url
:
http://47.
75.126.72
:8901
withhold-addr
:
1Ae6FfgdYJn6LLaqDoRjwga3j4TTmMq3t7
withhold-key
:
a4c49dcb35e0032dc8db5891dc81481943b68fc558ce93ce74d0382c1d104934
title
:
user.p.FilmChain
admin
:
1
6naUoLwjNUgMhGVRmL3xTVpCso2DJp8JZ
admin-key
:
8cd19e9bf39055f95e3e33cc1e08b9f9fc2e9be48a5b3a4d401e64041c97aec
7
contract-name
:
user.evm.0x
d996a3a866c577596df260844a045a068ec5accd8d71ccaa3d578c9617ec5490
contract-address
:
1
iDWTHZQxPES4hLveZRcwJH6AMaMfZfZZ
withhold-key
:
0x
a4c49dcb35e0032dc8db5891dc81481943b68fc558ce93ce74d0382c1d104934
title
:
user.p.FilmChain
.
admin
:
1
N2ABERwHgxGhebVw6fVSwaQ5uLAysmGEu
admin-key
:
0x4e92bda2477ded0e7c07a9e3acd2370de8d7401c68cc83ee8376806db3121e7
7
contract-name
:
user.evm.0x
1adc08f04fbc0cda9fb45a6b36b317d4fed9715f68314b754ce1e22ea681cd28
contract-address
:
1
JoYQKtT6PwtfZWqTFPPdAksQ7jB2JRAPw
aliyun
:
oss
:
...
...
joying-common/src/main/java/com/fzm/common/service/impl/NftServiceImpl.java
View file @
e31a3201
...
...
@@ -179,15 +179,11 @@ public class NftServiceImpl extends ServiceImpl<NftMapper, Nft> implements NftSe
if
(!
smsUtil
.
validateCode
(
getCodeType
(
param
.
getCodeType
()),
user
.
getTelephone
(),
param
.
getCode
(),
param
.
getCodeType
()))
{
throw
GlobalException
.
newException
(
ResultCode
.
TRANSFER_ERROR
,
"短信验证码校验失败"
);
}
// 校验接收人的个人信息
User
receiveUser
=
userService
.
getUserByWallet
(
param
.
getReceiveWallet
());
if
(
receiveUser
==
null
)
{
throw
GlobalException
.
newException
(
ResultCode
.
TRANSFER_ERROR
,
"接手人非本系统注册用户,暂不支持转让"
);
}
// 不能自己向自己转让nft
/*// 不能自己向自己转让nft
if (user.getWallet().equals(receiveUser.getWallet())) {
throw GlobalException.newException(ResultCode.TRANSFER_ERROR, "不能向自己转让nft");
}
}
*/
String
abi
=
"[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"tokenInfo\",\"type\":\"string\"}],\"name\":\"setTokenInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]"
;
String
tokenInfo
=
paraChainClient
.
evmGetTokenInfoNew
(
abi
,
contractAddr
,
nft
.
getTokenId
(),
user
.
getWallet
());
// 转让nft
...
...
@@ -204,9 +200,11 @@ public class NftServiceImpl extends ServiceImpl<NftMapper, Nft> implements NftSe
if
(
StringUtils
.
isBlank
(
realHash
))
{
throw
GlobalException
.
newException
(
ResultCode
.
TRANSFER_ERROR
);
}
// 校验接收人的个人信息
User
receiveUser
=
userService
.
getUserByWallet
(
param
.
getReceiveWallet
());
// 修改nft的拥有者用户id
Nft
transferNft
=
new
Nft
().
setUserId
(
receiveUser
.
getId
()
).
setUserId
(
receiveUser
!=
null
?
receiveUser
.
getId
()
:
null
).
setTransferHash
(
realHash
);
transferNft
.
setId
(
nft
.
getId
());
updateById
(
transferNft
);
...
...
@@ -217,7 +215,7 @@ public class NftServiceImpl extends ServiceImpl<NftMapper, Nft> implements NftSe
setNftHash
(
nft
.
getNftHash
()).
setTransferHash
(
realHash
).
setFromAddress
(
user
.
getWallet
()).
setToAddress
(
receiveUser
.
get
Wallet
());
setToAddress
(
param
.
getReceive
Wallet
());
nftTransferRecordService
.
save
(
record
);
return
true
;
}
...
...
joying-common/src/main/java/com/fzm/common/service/impl/UserServiceImpl.java
View file @
e31a3201
...
...
@@ -6,6 +6,7 @@ import cn.hutool.core.date.DateTime;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.IdUtil
;
import
cn.hutool.core.util.RandomUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.baomidou.mybatisplus.core.conditions.Wrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
...
...
@@ -34,6 +35,7 @@ import com.tencentcloudapi.common.profile.HttpProfile;
import
com.tencentcloudapi.faceid.v20180301.FaceidClient
;
import
com.tencentcloudapi.faceid.v20180301.models.IdCardOCRVerificationRequest
;
import
com.tencentcloudapi.faceid.v20180301.models.IdCardOCRVerificationResponse
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.security.crypto.password.PasswordEncoder
;
...
...
@@ -51,6 +53,7 @@ import java.util.List;
* @author tangtuo
* @date 2021/6/23 15:15
*/
@Slf4j
@Service
@Transactional
(
rollbackFor
=
RuntimeException
.
class
)
public
class
UserServiceImpl
extends
ServiceImpl
<
UserMapper
,
User
>
implements
UserService
{
...
...
@@ -232,6 +235,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
BASE64Encoder
base64Encoder
=
new
BASE64Encoder
();
String
encode
=
"data:image/jpg;base64,"
+
base64Encoder
.
encode
(
cardPictureFront
.
getBytes
());
IdCardOCRVerificationResponse
response
=
TencentApi
.
idCardOCRVerification
(
encode
);
log
.
info
(
"实名认证结果:{}"
,
JSONUtil
.
toJsonStr
(
response
));
Integer
status
;
if
(
IdCardVerificationResponse
.
SUCCESS
.
getCode
().
equals
(
response
.
getResult
()))
{
// 验证成功上传身份证证件
...
...
@@ -253,6 +257,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
.
set
(
"auth_status"
,
status
)
.
eq
(
"id"
,
userId
);
update
(
userUpdateWrapper
);
if
(
AuthStatusEnum
.
SUCCESS
.
getStatus
().
equals
(
status
))
{
redisUtil
.
delete
(
"user::statistic"
);
}
return
response
;
}
...
...
joying-common/src/main/java/com/fzm/common/utils/SmsUtil.java
View file @
e31a3201
...
...
@@ -91,9 +91,6 @@ public class SmsUtil {
* @return
*/
public
Boolean
validateCode
(
String
codetype
,
String
mobile
,
String
code
,
String
type
)
{
if
(
"8888"
.
equals
(
code
)){
return
true
;
}
String
timestamp
=
getTimestamp
();
HashMap
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"t"
,
type
);
...
...
joying-common/src/main/resources/mapper/NftMapper.xml
View file @
e31a3201
...
...
@@ -4,7 +4,7 @@
<select
id=
"list"
resultType=
"com.fzm.common.entity.Nft"
>
select * from tb_nft
where status = 1 and is_commemorate=0 and nft_hash != ''
where status = 1 and is_commemorate=0 and nft_hash != ''
and user_id is not null
<if
test=
"categoryId != null and categoryId > 0"
>
and category_id=#{categoryId}
</if>
...
...
@@ -26,7 +26,7 @@
<foreach
collection=
"list"
item=
"id"
separator=
","
>
#{id}
</foreach>
)
)
and a.user_id is not null
</select>
<select
id=
"page"
resultType=
"com.fzm.common.entity.vo.NftListVo"
>
...
...
joying-portal/src/main/resources/application-prod.yml
View file @
e31a3201
...
...
@@ -4,9 +4,9 @@ spring:
main
:
allow-bean-definition-overriding
:
true
datasource
:
url
:
jdbc:mysql://rm-uf65
dutlz01018ctc33150
.mysql.rds.aliyuncs.com:3306/joying?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8
username
:
inmvo
chain
password
:
db$95872!com@inmvo
url
:
jdbc:mysql://rm-uf65
2555t10p7cj27
.mysql.rds.aliyuncs.com:3306/joying?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8
username
:
inmvo
_china
password
:
U2FsdGVkX19J0YHIUWXWgPh1C5R0=
platform
:
mysql
type
:
com.alibaba.druid.pool.DruidDataSource
driver-class-name
:
com.mysql.cj.jdbc.Driver
...
...
@@ -27,9 +27,9 @@ spring:
connection-properties
:
druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
useGlobalDataSourceStat
:
true
redis
:
host
:
r-uf6
5vh5nip6yjfgtcn
.redis.rds.aliyuncs.com
host
:
r-uf6
1gaz5hcnys2gbdo
.redis.rds.aliyuncs.com
port
:
6379
password
:
db$95872!com@inmvo
password
:
U2FsdGVkX19J0YHIUWXWgPh1C5R0=
lettuce
:
pool
:
# 连接池最大连接数(使用负值表示没有限制) 默认 8
...
...
@@ -77,14 +77,14 @@ sms:
chain
:
para
:
rpc-url
:
http://47.
243.127.76
:8901
rpc-url
:
http://47.
75.126.72
:8901
withhold-addr
:
1Ae6FfgdYJn6LLaqDoRjwga3j4TTmMq3t7
withhold-key
:
a4c49dcb35e0032dc8db5891dc81481943b68fc558ce93ce74d0382c1d104934
withhold-key
:
0x
a4c49dcb35e0032dc8db5891dc81481943b68fc558ce93ce74d0382c1d104934
title
:
user.p.FilmChain.
admin
:
1N2ABERwHgxGhebVw6fVSwaQ5uLAysmGEu
admin-key
:
4e92bda2477ded0e7c07a9e3acd2370de8d7401c68cc83ee8376806db3121e77
contract-name
:
user.evm.0x
4285f54e72e85c6a3a45179bee61179cd0e661497bfa0403148abf640c3b71ab
contract-address
:
1
AihcmFHyEtVShYSXNEfRQEhKKde6SyzoJ
admin-key
:
0x
4e92bda2477ded0e7c07a9e3acd2370de8d7401c68cc83ee8376806db3121e77
contract-name
:
user.evm.0x
1adc08f04fbc0cda9fb45a6b36b317d4fed9715f68314b754ce1e22ea681cd28
contract-address
:
1
JoYQKtT6PwtfZWqTFPPdAksQ7jB2JRAPw
aliyun
:
oss
:
...
...
sql/joying.sql
View file @
e31a3201
...
...
@@ -5,13 +5,13 @@
Source Server Type : MySQL
Source Server Version : 50734
Source Host : 172.16.101.135:3306
Source Schema : joying
_dev
Source Schema : joying
Target Server Type : MySQL
Target Server Version : 50734
File Encoding : 65001
Date:
29/07/2021 18:47
:44
Date:
18/09/2021 16:50
:44
*/
SET
NAMES
utf8mb4
;
...
...
@@ -32,11 +32,10 @@ CREATE TABLE `tb_admin` (
`create_time`
bigint
(
20
)
NULL
DEFAULT
NULL
,
`update_time`
bigint
(
20
)
NULL
DEFAULT
NULL
,
PRIMARY
KEY
(
`id`
)
USING
BTREE
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
3
CHARACTER
SET
=
utf8
COLLATE
=
utf8_general_ci
COMMENT
=
'后台管理用户'
ROW_FORMAT
=
Dynamic
;
INSERT
INTO
`tb_admin`
VALUES
(
1
,
'18888888888'
,
'admin'
,
'$2a$10$IFbt4AT8s4JyaNfqvNlHQumP0jqEjffjuWABYrk4xFWeGOx1tkudu'
,
1
,
'2021-07-05 06:56:44'
,
'2021-07-05 06:56:44'
,
NULL
,
NULL
);
INSERT
INTO
`tb_admin`
VALUES
(
2
,
'17620078872'
,
'admin'
,
'$2a$10$IFbt4AT8s4JyaNfqvNlHQumP0jqEjffjuWABYrk4xFWeGOx1tkudu'
,
1
,
'2021-07-05 06:56:44'
,
'2021-07-05 06:56:44'
,
NULL
,
NULL
);
INSERT
INTO
`tb_admin`
VALUES
(
3
,
'18888886666'
,
'admin'
,
'$2a$10$IFbt4AT8s4JyaNfqvNlHQumP0jqEjffjuWABYrk4xFWeGOx1tkudu'
,
1
,
'2021-07-05 06:56:44'
,
'2021-07-05 06:56:44'
,
NULL
,
NULL
);
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
4
CHARACTER
SET
=
utf8
COLLATE
=
utf8_general_ci
COMMENT
=
'后台管理用户'
ROW_FORMAT
=
Dynamic
;
INSERT
INTO
`joying`
.
`tb_admin`
(
`id`
,
`username`
,
`nickname`
,
`password`
,
`role_id`
,
`create_date`
,
`update_date`
,
`create_time`
,
`update_time`
)
VALUES
(
1
,
'18888888888'
,
'admin'
,
'$2a$10$IFbt4AT8s4JyaNfqvNlHQumP0jqEjffjuWABYrk4xFWeGOx1tkudu'
,
1
,
'2021-07-05 06:56:44'
,
'2021-07-05 06:56:44'
,
NULL
,
NULL
);
INSERT
INTO
`joying`
.
`tb_admin`
(
`id`
,
`username`
,
`nickname`
,
`password`
,
`role_id`
,
`create_date`
,
`update_date`
,
`create_time`
,
`update_time`
)
VALUES
(
2
,
'17620078872'
,
'admin'
,
'$2a$10$IFbt4AT8s4JyaNfqvNlHQumP0jqEjffjuWABYrk4xFWeGOx1tkudu'
,
1
,
'2021-07-05 06:56:44'
,
'2021-07-05 06:56:44'
,
NULL
,
NULL
);
INSERT
INTO
`joying`
.
`tb_admin`
(
`id`
,
`username`
,
`nickname`
,
`password`
,
`role_id`
,
`create_date`
,
`update_date`
,
`create_time`
,
`update_time`
)
VALUES
(
3
,
'18888886666'
,
'admin'
,
'$2a$10$IFbt4AT8s4JyaNfqvNlHQumP0jqEjffjuWABYrk4xFWeGOx1tkudu'
,
1
,
'2021-07-05 06:56:44'
,
'2021-07-05 06:56:44'
,
NULL
,
NULL
);
-- ----------------------------
...
...
@@ -79,7 +78,7 @@ CREATE TABLE `tb_auth_person` (
`update_time`
bigint
(
20
)
NULL
DEFAULT
NULL
,
PRIMARY
KEY
(
`id`
)
USING
BTREE
,
UNIQUE
INDEX
`idx_userid`
(
`user_id`
)
USING
BTREE
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
2
CHARACTER
SET
=
utf8
COLLATE
=
utf8_general_ci
COMMENT
=
'个人认证信息表'
ROW_FORMAT
=
Dynamic
;
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
8
CHARACTER
SET
=
utf8
COLLATE
=
utf8_general_ci
COMMENT
=
'个人认证信息表'
ROW_FORMAT
=
Dynamic
;
-- ----------------------------
-- Table structure for tb_category
...
...
@@ -95,14 +94,15 @@ CREATE TABLE `tb_category` (
`create_time`
bigint
(
20
)
NULL
DEFAULT
NULL
,
PRIMARY
KEY
(
`id`
)
USING
BTREE
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
8
CHARACTER
SET
=
utf8
COLLATE
=
utf8_general_ci
COMMENT
=
'首页类目表'
ROW_FORMAT
=
Dynamic
;
INSERT
INTO
`joying`
.
`tb_category`
(
`id`
,
`category_name`
,
`english_name`
,
`create_date`
,
`update_date`
,
`update_time`
,
`create_time`
)
VALUES
(
1
,
'剧本'
,
'SCRIPT'
,
'2021-07-01 06:28:16'
,
'2021-07-01 06:28:16'
,
NULL
,
NULL
);
INSERT
INTO
`joying`
.
`tb_category`
(
`id`
,
`category_name`
,
`english_name`
,
`create_date`
,
`update_date`
,
`update_time`
,
`create_time`
)
VALUES
(
2
,
'视频'
,
'VIDEO'
,
'2021-07-01 06:29:03'
,
'2021-07-01 06:29:03'
,
NULL
,
NULL
);
INSERT
INTO
`joying`
.
`tb_category`
(
`id`
,
`category_name`
,
`english_name`
,
`create_date`
,
`update_date`
,
`update_time`
,
`create_time`
)
VALUES
(
3
,
'电影'
,
'FILE'
,
'2021-07-01 06:29:20'
,
'2021-07-01 06:29:20'
,
NULL
,
NULL
);
INSERT
INTO
`joying`
.
`tb_category`
(
`id`
,
`category_name`
,
`english_name`
,
`create_date`
,
`update_date`
,
`update_time`
,
`create_time`
)
VALUES
(
4
,
'音频'
,
'AUDIO'
,
'2021-07-01 06:29:42'
,
'2021-07-01 06:29:42'
,
NULL
,
NULL
);
INSERT
INTO
`joying`
.
`tb_category`
(
`id`
,
`category_name`
,
`english_name`
,
`create_date`
,
`update_date`
,
`update_time`
,
`create_time`
)
VALUES
(
5
,
'图片'
,
'PICTURE'
,
'2021-07-01 06:29:58'
,
'2021-07-01 06:29:58'
,
NULL
,
NULL
);
INSERT
INTO
`joying`
.
`tb_category`
(
`id`
,
`category_name`
,
`english_name`
,
`create_date`
,
`update_date`
,
`update_time`
,
`create_time`
)
VALUES
(
6
,
'衍生品'
,
'DERIVATIVE'
,
'2021-07-01 06:30:39'
,
'2021-07-01 06:30:39'
,
NULL
,
NULL
);
INSERT
INTO
`joying`
.
`tb_category`
(
`id`
,
`category_name`
,
`english_name`
,
`create_date`
,
`update_date`
,
`update_time`
,
`create_time`
)
VALUES
(
7
,
'其他'
,
'OTHER'
,
'2021-07-01 06:30:50'
,
'2021-07-01 06:30:50'
,
NULL
,
NULL
);
INSERT
INTO
`tb_category`
VALUES
(
1
,
'剧本'
,
'SCRIPT'
,
'2021-07-01 06:28:16'
,
'2021-07-01 06:28:16'
,
NULL
,
NULL
);
INSERT
INTO
`tb_category`
VALUES
(
2
,
'视频'
,
'VIDEO'
,
'2021-07-01 06:29:03'
,
'2021-07-01 06:29:03'
,
NULL
,
NULL
);
INSERT
INTO
`tb_category`
VALUES
(
3
,
'电影'
,
'FILE'
,
'2021-07-01 06:29:20'
,
'2021-07-01 06:29:20'
,
NULL
,
NULL
);
INSERT
INTO
`tb_category`
VALUES
(
4
,
'音频'
,
'AUDIO'
,
'2021-07-01 06:29:42'
,
'2021-07-01 06:29:42'
,
NULL
,
NULL
);
INSERT
INTO
`tb_category`
VALUES
(
5
,
'图片'
,
'PICTURE'
,
'2021-07-01 06:29:58'
,
'2021-07-01 06:29:58'
,
NULL
,
NULL
);
INSERT
INTO
`tb_category`
VALUES
(
6
,
'衍生品'
,
'DERIVATIVE'
,
'2021-07-01 06:30:39'
,
'2021-07-01 06:30:39'
,
NULL
,
NULL
);
INSERT
INTO
`tb_category`
VALUES
(
7
,
'其他'
,
'OTHER'
,
'2021-07-01 06:30:50'
,
'2021-07-01 06:30:50'
,
NULL
,
NULL
);
-- ----------------------------
-- Table structure for tb_collection
...
...
@@ -116,7 +116,7 @@ CREATE TABLE `tb_collection` (
`update_date`
datetime
(
0
)
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP
(
0
),
PRIMARY
KEY
(
`id`
)
USING
BTREE
,
UNIQUE
INDEX
`idx_userid_nftid`
(
`user_id`
,
`nft_id`
)
USING
BTREE
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
22
CHARACTER
SET
=
utf8
COLLATE
=
utf8_general_ci
ROW_FORMAT
=
Dynamic
;
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
47
CHARACTER
SET
=
utf8
COLLATE
=
utf8_general_ci
ROW_FORMAT
=
Dynamic
;
-- ----------------------------
-- Table structure for tb_commemorate_nft
...
...
@@ -140,7 +140,7 @@ CREATE TABLE `tb_commemorate_nft` (
`create_date`
datetime
(
0
)
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
,
`update_date`
datetime
(
0
)
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP
(
0
),
PRIMARY
KEY
(
`id`
)
USING
BTREE
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
5
CHARACTER
SET
=
utf8
COLLATE
=
utf8_general_ci
COMMENT
=
'纪念版nft基本信息表'
ROW_FORMAT
=
Dynamic
;
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
9
CHARACTER
SET
=
utf8
COLLATE
=
utf8_general_ci
COMMENT
=
'纪念版nft基本信息表'
ROW_FORMAT
=
Dynamic
;
-- ----------------------------
-- Table structure for tb_label
...
...
@@ -151,43 +151,48 @@ CREATE TABLE `tb_label` (
`name`
varchar
(
8
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NOT
NULL
DEFAULT
''
COMMENT
'名称'
,
`category_id`
int
(
2
)
NULL
DEFAULT
NULL
COMMENT
'类目'
,
PRIMARY
KEY
(
`id`
)
USING
BTREE
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
36
CHARACTER
SET
=
utf8
COLLATE
=
utf8_general_ci
ROW_FORMAT
=
Dynamic
;
INSERT
INTO
`tb_label`
VALUES
(
1
,
'古装'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
2
,
'偶像'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
3
,
'青春'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
4
,
'军旅'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
5
,
'罪案'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
6
,
'历史'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
7
,
'年代'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
8
,
'剧情'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
9
,
'魔幻'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
10
,
'爱情'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
11
,
'言情'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
12
,
'家庭'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
13
,
'喜剧'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
14
,
'谍战'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
15
,
'穿越'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
16
,
'神话'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
17
,
'农村'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
18
,
'奇幻'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
19
,
'动作'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
20
,
'儿童'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
21
,
'武侠'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
22
,
'都市'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
23
,
'战争'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
24
,
'悬疑'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
25
,
'宫廷'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
26
,
'科幻'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
27
,
'商战'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
28
,
'玄幻'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
29
,
'惊悚'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
30
,
'其他'
,
1
);
INSERT
INTO
`tb_label`
VALUES
(
31
,
'电影短片'
,
2
);
INSERT
INTO
`tb_label`
VALUES
(
32
,
'拍摄现场'
,
2
);
INSERT
INTO
`tb_label`
VALUES
(
33
,
'演员专访'
,
2
);
INSERT
INTO
`tb_label`
VALUES
(
34
,
'新闻发布'
,
2
);
INSERT
INTO
`tb_label`
VALUES
(
35
,
'其他'
,
2
);
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
42
CHARACTER
SET
=
utf8
COLLATE
=
utf8_general_ci
ROW_FORMAT
=
Dynamic
;
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
1
,
'古装'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
2
,
'偶像'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
3
,
'青春'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
4
,
'军旅'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
5
,
'罪案'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
6
,
'历史'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
7
,
'年代'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
8
,
'剧情'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
9
,
'魔幻'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
10
,
'爱情'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
11
,
'言情'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
12
,
'家庭'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
13
,
'喜剧'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
14
,
'谍战'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
15
,
'穿越'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
16
,
'神话'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
17
,
'农村'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
18
,
'奇幻'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
19
,
'动作'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
20
,
'儿童'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
21
,
'武侠'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
22
,
'都市'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
23
,
'战争'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
24
,
'悬疑'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
25
,
'宫廷'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
26
,
'科幻'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
27
,
'商战'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
28
,
'玄幻'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
29
,
'惊悚'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
30
,
'其他'
,
1
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
31
,
'电影短片'
,
2
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
32
,
'拍摄现场'
,
2
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
33
,
'演员专访'
,
2
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
34
,
'新闻发布'
,
2
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
35
,
'其他'
,
2
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
36
,
'海报'
,
5
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
37
,
'剧照'
,
5
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
38
,
'服装'
,
5
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
39
,
'道具'
,
5
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
40
,
'置景'
,
5
);
INSERT
INTO
`joying`
.
`tb_label`
(
`id`
,
`name`
,
`category_id`
)
VALUES
(
41
,
'其他'
,
5
);
-- ----------------------------
-- Table structure for tb_nft
...
...
@@ -196,7 +201,7 @@ DROP TABLE IF EXISTS `tb_nft`;
CREATE
TABLE
`tb_nft`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`category_id`
int
(
11
)
NOT
NULL
COMMENT
'类目id'
,
`user_id`
int
(
11
)
N
O
T
NULL
COMMENT
'当前nft所属人的用户id'
,
`user_id`
int
(
11
)
N
ULL
DEFAUL
T
NULL
COMMENT
'当前nft所属人的用户id'
,
`publish_address`
varchar
(
128
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NOT
NULL
DEFAULT
''
COMMENT
'发行人地址'
,
`name`
varchar
(
128
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NOT
NULL
COMMENT
'名称'
,
`cover`
varchar
(
256
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NOT
NULL
DEFAULT
''
COMMENT
'封面'
,
...
...
@@ -213,6 +218,7 @@ CREATE TABLE `tb_nft` (
`token_id`
bigint
(
20
)
NULL
DEFAULT
NULL
COMMENT
'nft token'
,
`publish_time`
datetime
(
0
)
NULL
DEFAULT
NULL
COMMENT
'nft发行时间'
,
`transfer_hash`
varchar
(
255
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NOT
NULL
DEFAULT
''
COMMENT
'交易转让hash'
,
`commemorate_id`
int
(
11
)
NULL
DEFAULT
NULL
COMMENT
'纪念版nft主键'
,
`is_top`
tinyint
(
1
)
NOT
NULL
DEFAULT
0
COMMENT
'是否置顶 0-否 1-是'
,
`status`
tinyint
(
1
)
NOT
NULL
DEFAULT
0
COMMENT
'0: 下架 1:上架'
,
`is_commemorate`
tinyint
(
1
)
NOT
NULL
DEFAULT
0
COMMENT
'是否纪念版nft 0-否 1-是'
,
...
...
@@ -221,7 +227,7 @@ CREATE TABLE `tb_nft` (
`create_time`
bigint
(
20
)
NULL
DEFAULT
NULL
,
`update_time`
bigint
(
20
)
NULL
DEFAULT
NULL
,
PRIMARY
KEY
(
`id`
)
USING
BTREE
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
33
9
CHARACTER
SET
=
utf8
COLLATE
=
utf8_general_ci
ROW_FORMAT
=
Dynamic
;
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
46
9
CHARACTER
SET
=
utf8
COLLATE
=
utf8_general_ci
ROW_FORMAT
=
Dynamic
;
-- ----------------------------
-- Table structure for tb_nft_transfer_record
...
...
@@ -236,8 +242,9 @@ CREATE TABLE `tb_nft_transfer_record` (
`to_address`
varchar
(
128
)
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
NOT
NULL
COMMENT
'接收人地址'
,
`create_date`
datetime
(
0
)
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
,
`update_date`
datetime
(
0
)
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP
(
0
),
`is_effective`
tinyint
(
1
)
NULL
DEFAULT
1
COMMENT
'是否有效 0-否 1-是'
,
PRIMARY
KEY
(
`id`
)
USING
BTREE
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
14
CHARACTER
SET
=
utf8
COLLATE
=
utf8_general_ci
COMMENT
=
'nft转让记录表'
ROW_FORMAT
=
Dynamic
;
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
28
CHARACTER
SET
=
utf8
COLLATE
=
utf8_general_ci
COMMENT
=
'nft转让记录表'
ROW_FORMAT
=
Dynamic
;
-- ----------------------------
-- Table structure for tb_user
...
...
@@ -262,8 +269,6 @@ CREATE TABLE `tb_user` (
PRIMARY
KEY
(
`id`
)
USING
BTREE
,
UNIQUE
INDEX
`idx_telephone`
(
`telephone`
)
USING
BTREE
,
UNIQUE
INDEX
`idx_email`
(
`email`
)
USING
BTREE
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
47
CHARACTER
SET
=
utf8
COLLATE
=
utf8_general_ci
COMMENT
=
'门户用户表'
ROW_FORMAT
=
Dynamic
;
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
31
CHARACTER
SET
=
utf8
COLLATE
=
utf8_general_ci
COMMENT
=
'门户用户表'
ROW_FORMAT
=
Dynamic
;
SET
FOREIGN_KEY_CHECKS
=
1
;
alter
table
tb_nft_transfer_record
add
column
is_effective
TINYINT
(
1
)
DEFAULT
1
comment
'是否有效 0-否 1-是'
;
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