记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
董敬伟
liquidnet-bus-v1
Commits
581e9a32
Commit
581e9a32
authored
Jun 06, 2025
by
姜秀龙
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'jxl-doudou' into 'master'
Jxl doudou See merge request
!388
parents
e46da29e
00f2b58f
Changes
18
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
795 additions
and
7 deletions
+795
-7
SweetConstant.java
...a/com/liquidnet/service/sweet/constant/SweetConstant.java
+3
-0
SweetDouDouCheckParam.java
.../liquidnet/service/sweet/param/SweetDouDouCheckParam.java
+26
-0
SweetDouDouParam.java
...a/com/liquidnet/service/sweet/param/SweetDouDouParam.java
+35
-0
ISweetDoudouService.java
.../liquidnet/service/sweet/service/ISweetDoudouService.java
+32
-0
SweetDouDouScopeVo.java
...va/com/liquidnet/service/sweet/vo/SweetDouDouScopeVo.java
+56
-0
SweetDouDouVo.java
...in/java/com/liquidnet/service/sweet/vo/SweetDouDouVo.java
+52
-0
SweetDoudou.java
.../java/com/liquidnet/service/sweet/entity/SweetDoudou.java
+89
-0
SweetDoudouScope.java
.../com/liquidnet/service/sweet/entity/SweetDoudouScope.java
+55
-0
SweetDoudouMapper.java
...com/liquidnet/service/sweet/mapper/SweetDoudouMapper.java
+16
-0
SweetDoudouScopeMapper.java
...iquidnet/service/sweet/mapper/SweetDoudouScopeMapper.java
+17
-0
SweetDoudouMapper.xml
.../com.liquidnet.service.sweet.mapper/SweetDoudouMapper.xml
+5
-0
SweetDoudouScopeMapper.xml
...liquidnet.service.sweet.mapper/SweetDoudouScopeMapper.xml
+5
-0
db_20250604_doudou.sql
...rvice/liquidnet-service-sweet/docu/db_20250604_doudou.sql
+39
-0
SweetDoudouController.java
...idnet/service/sweet/controller/SweetDoudouController.java
+61
-0
SweetDoudouServiceImpl.java
...et/service/sweet/service/impl/SweetDoudouServiceImpl.java
+256
-0
RedisDataUtils.java
...ava/com/liquidnet/service/sweet/utils/RedisDataUtils.java
+35
-0
errors.properties
...uidnet-service-sweet/src/main/resources/errors.properties
+12
-6
sqlmap.properties
...uidnet-service-sweet/src/main/resources/sqlmap.properties
+1
-1
No files found.
liquidnet-bus-api/liquidnet-service-sweet-api/src/main/java/com/liquidnet/service/sweet/constant/SweetConstant.java
View file @
581e9a32
...
...
@@ -60,6 +60,9 @@ public class SweetConstant {
public
static
final
String
REDIS_KEY_SWEET_SEND_COUPON
=
"sweet:integralActivity:coupon:send:"
;
// 答题活动
public
final
static
String
REDIS_KEY_SWEET_ANSWER_PHONE
=
"sweet:answer:phone:"
;
// doudou
public
final
static
String
REDIS_KEY_SWEET_DOUDOU_USER
=
"sweet:doudou:uid:"
;
public
final
static
String
REDIS_KEY_SWEET_DOUDOU_SCOPE_MOBILE
=
"sweet:doudou:scope:mobile:"
;
// 城市投票活动
public
final
static
String
REDIS_KEY_SWEET_CITY_VOTE_STAT_LIST
=
":StatList"
;
public
final
static
String
REDIS_KEY_SWEET_CITY_VOTE_CITY_CODE
=
":cityCode:"
;
...
...
liquidnet-bus-api/liquidnet-service-sweet-api/src/main/java/com/liquidnet/service/sweet/param/SweetDouDouCheckParam.java
0 → 100644
View file @
581e9a32
package
com
.
liquidnet
.
service
.
sweet
.
param
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
java.io.Serializable
;
@ApiModel
(
value
=
"SweetDouDouCheckParam"
,
description
=
"入参"
)
@Data
public
class
SweetDouDouCheckParam
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
position
=
1
,
required
=
true
,
value
=
"核验人手机号"
,
example
=
"10000000000"
)
@NotBlank
(
message
=
"authMobile不能为空"
)
private
String
authMobile
;
@ApiModelProperty
(
position
=
2
,
required
=
true
,
value
=
"doudouId"
,
example
=
"5223713433667502081163230"
)
@NotBlank
(
message
=
"doudouId不能为空"
)
private
String
doudouId
;
@ApiModelProperty
(
position
=
3
,
required
=
true
,
value
=
"用户ID"
,
example
=
"937724050260131847782985"
)
@NotBlank
(
message
=
"userId不能为空"
)
private
String
userId
;
}
liquidnet-bus-api/liquidnet-service-sweet-api/src/main/java/com/liquidnet/service/sweet/param/SweetDouDouParam.java
0 → 100644
View file @
581e9a32
package
com
.
liquidnet
.
service
.
sweet
.
param
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
java.io.Serializable
;
@ApiModel
(
value
=
"SweetDouDouParam"
,
description
=
"入参"
)
@Data
public
class
SweetDouDouParam
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
position
=
10
,
required
=
true
,
value
=
"观演人姓名"
,
example
=
"张三"
)
@NotBlank
(
message
=
"username不能为空"
)
private
String
username
;
@ApiModelProperty
(
position
=
11
,
required
=
true
,
value
=
"观演人手机号"
,
example
=
"15811112222"
)
@NotBlank
(
message
=
"phone不能为空"
)
private
String
phone
;
@ApiModelProperty
(
position
=
12
,
required
=
true
,
value
=
"购买平台"
,
example
=
"大麦"
)
@NotBlank
(
message
=
"platform不能为空"
)
private
String
platform
;
@ApiModelProperty
(
position
=
13
,
required
=
true
,
value
=
"购买订单号"
,
example
=
"23424353477473"
)
@NotBlank
(
message
=
"orderCodee不能为空"
)
private
String
orderCode
;
@ApiModelProperty
(
position
=
14
,
required
=
true
,
value
=
"想给doudou说的话"
,
example
=
"我爱你啦啦啦"
)
private
String
mark
;
}
liquidnet-bus-api/liquidnet-service-sweet-api/src/main/java/com/liquidnet/service/sweet/service/ISweetDoudouService.java
0 → 100644
View file @
581e9a32
package
com
.
liquidnet
.
service
.
sweet
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.sweet.entity.SweetDoudou
;
import
com.liquidnet.service.sweet.param.SweetDouDouCheckParam
;
import
com.liquidnet.service.sweet.param.SweetDouDouParam
;
import
com.liquidnet.service.sweet.vo.SweetDouDouVo
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.validation.Valid
;
/**
* <p>
* doudou预约签名CD记录表 服务类
* </p>
*
* @author jiangxiulong
* @since 2025-06-04
*/
public
interface
ISweetDoudouService
extends
IService
<
SweetDoudou
>
{
ResponseDto
<
SweetDouDouVo
>
info
();
ResponseDto
<
SweetDouDouVo
>
create
(
@Valid
SweetDouDouParam
param
);
ResponseDto
check
(
SweetDouDouCheckParam
param
);
ResponseDto
<
SweetDouDouVo
>
detail
(
SweetDouDouCheckParam
param
);
boolean
winningUpload
(
MultipartFile
file
);
}
liquidnet-bus-api/liquidnet-service-sweet-api/src/main/java/com/liquidnet/service/sweet/vo/SweetDouDouScopeVo.java
0 → 100644
View file @
581e9a32
package
com
.
liquidnet
.
service
.
sweet
.
vo
;
import
com.liquidnet.service.sweet.entity.SweetDoudouScope
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
@Data
public
class
SweetDouDouScopeVo
implements
Serializable
,
Cloneable
{
@ApiModelProperty
(
"mobile"
)
private
String
mobile
;
@ApiModelProperty
(
"nickName"
)
private
String
nickName
;
@ApiModelProperty
(
"realName"
)
private
String
realName
;
@ApiModelProperty
(
"idCard"
)
private
String
idCard
;
@ApiModelProperty
(
"status"
)
private
Integer
status
;
@ApiModelProperty
(
"createdAt"
)
private
LocalDateTime
createdAt
;
@ApiModelProperty
(
"updatedAt"
)
private
LocalDateTime
updatedAt
;
private
static
final
SweetDouDouScopeVo
obj
=
new
SweetDouDouScopeVo
();
public
static
SweetDouDouScopeVo
getNew
()
{
try
{
return
(
SweetDouDouScopeVo
)
obj
.
clone
();
}
catch
(
CloneNotSupportedException
e
)
{
return
new
SweetDouDouScopeVo
();
}
}
public
SweetDouDouScopeVo
copy
(
SweetDoudouScope
source
)
{
if
(
null
==
source
)
return
this
;
this
.
mobile
=
source
.
getMobile
();
this
.
nickName
=
source
.
getNickName
();
this
.
realName
=
source
.
getRealName
();
this
.
idCard
=
source
.
getIdCard
();
this
.
status
=
source
.
getStatus
();
this
.
createdAt
=
source
.
getCreatedAt
();
this
.
updatedAt
=
source
.
getUpdatedAt
();
return
this
;
}
}
liquidnet-bus-api/liquidnet-service-sweet-api/src/main/java/com/liquidnet/service/sweet/vo/SweetDouDouVo.java
0 → 100644
View file @
581e9a32
package
com
.
liquidnet
.
service
.
sweet
.
vo
;
import
com.liquidnet.service.sweet.entity.SweetDoudou
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
@Data
public
class
SweetDouDouVo
implements
Serializable
,
Cloneable
{
@ApiModelProperty
(
"doudou_id"
)
private
String
doudouId
;
@ApiModelProperty
(
"user_id"
)
private
String
userId
;
@ApiModelProperty
(
"观演人姓名"
)
private
String
username
;
@ApiModelProperty
(
"观演人手机号"
)
private
String
phone
;
@ApiModelProperty
(
"购买平台"
)
private
String
platform
;
@ApiModelProperty
(
"购买订单号"
)
private
String
orderCode
;
@ApiModelProperty
(
"想给doudou说的话"
)
private
String
mark
;
@ApiModelProperty
(
"状态 1已登记 2未中签 3已中签 4已核销"
)
private
Integer
status
;
private
static
final
SweetDouDouVo
obj
=
new
SweetDouDouVo
();
public
static
SweetDouDouVo
getNew
()
{
try
{
return
(
SweetDouDouVo
)
obj
.
clone
();
}
catch
(
CloneNotSupportedException
e
)
{
return
new
SweetDouDouVo
();
}
}
public
SweetDouDouVo
copy
(
SweetDoudou
source
)
{
if
(
null
==
source
)
return
this
;
this
.
setPhone
(
source
.
getPhone
());
return
this
;
}
}
liquidnet-bus-do/liquidnet-service-sweet-do/src/main/java/com/liquidnet/service/sweet/entity/SweetDoudou.java
0 → 100644
View file @
581e9a32
package
com
.
liquidnet
.
service
.
sweet
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
/**
* <p>
* doudou预约签名CD记录表
* </p>
*
* @author jiangxiulong
* @since 2025-06-04
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
SweetDoudou
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@TableId
(
value
=
"mid"
,
type
=
IdType
.
AUTO
)
private
Long
mid
;
/**
* doudou_id
*/
private
String
doudouId
;
/**
* user_id
*/
private
String
userId
;
/**
* 观演人姓名
*/
private
String
username
;
/**
* 观演人手机号
*/
private
String
phone
;
/**
* 购买平台
*/
private
String
platform
;
/**
* 购买订单号
*/
private
String
orderCode
;
/**
* 想给doudou说的话
*/
private
String
mark
;
/**
* 状态 1已登记 2未中签 3已中签 4已核销
*/
private
Integer
status
;
/**
* 创建时间
*/
private
LocalDateTime
createdAt
;
/**
* 更新时间
*/
private
LocalDateTime
updatedAt
;
private
static
final
SweetDoudou
obj
=
new
SweetDoudou
();
public
static
SweetDoudou
getNew
()
{
try
{
return
(
SweetDoudou
)
obj
.
clone
();
}
catch
(
CloneNotSupportedException
e
)
{
return
new
SweetDoudou
();
}
}
}
liquidnet-bus-do/liquidnet-service-sweet-do/src/main/java/com/liquidnet/service/sweet/entity/SweetDoudouScope.java
0 → 100644
View file @
581e9a32
package
com
.
liquidnet
.
service
.
sweet
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
SweetDoudouScope
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@TableId
(
value
=
"mid"
,
type
=
IdType
.
AUTO
)
private
Long
mid
;
/**
* 手机号
*/
private
String
mobile
;
/**
* 昵称
*/
private
String
nickName
;
/**
* 真实姓名
*/
private
String
realName
;
/**
* 身份证号码
*/
private
String
idCard
;
/**
* 状态: 1-可用, 0-不可用
*/
private
Integer
status
;
/**
* 创建时间
*/
private
LocalDateTime
createdAt
;
/**
* 修改时间
*/
private
LocalDateTime
updatedAt
;
}
liquidnet-bus-do/liquidnet-service-sweet-do/src/main/java/com/liquidnet/service/sweet/mapper/SweetDoudouMapper.java
0 → 100644
View file @
581e9a32
package
com
.
liquidnet
.
service
.
sweet
.
mapper
;
import
com.liquidnet.service.sweet.entity.SweetDoudou
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
/**
* <p>
* doudou预约签名CD记录表 Mapper 接口
* </p>
*
* @author jiangxiulong
* @since 2025-06-04
*/
public
interface
SweetDoudouMapper
extends
BaseMapper
<
SweetDoudou
>
{
}
liquidnet-bus-do/liquidnet-service-sweet-do/src/main/java/com/liquidnet/service/sweet/mapper/SweetDoudouScopeMapper.java
0 → 100644
View file @
581e9a32
package
com
.
liquidnet
.
service
.
sweet
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.liquidnet.service.sweet.entity.SweetDoudou
;
import
com.liquidnet.service.sweet.entity.SweetDoudouScope
;
/**
* <p>
* doudou预约签名CD记录表 Mapper 接口
* </p>
*
* @author jiangxiulong
* @since 2025-06-04
*/
public
interface
SweetDoudouScopeMapper
extends
BaseMapper
<
SweetDoudouScope
>
{
}
liquidnet-bus-do/liquidnet-service-sweet-do/src/main/resources/com.liquidnet.service.sweet.mapper/SweetDoudouMapper.xml
0 → 100644
View file @
581e9a32
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.liquidnet.service.sweet.mapper.SweetDoudouMapper"
>
</mapper>
liquidnet-bus-do/liquidnet-service-sweet-do/src/main/resources/com.liquidnet.service.sweet.mapper/SweetDoudouScopeMapper.xml
0 → 100644
View file @
581e9a32
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.liquidnet.service.sweet.mapper.SweetDoudouScopeMapper"
>
</mapper>
liquidnet-bus-service/liquidnet-service-sweet/docu/db_20250604_doudou.sql
0 → 100644
View file @
581e9a32
-- 20250604 doudou预约签名CD记录表
drop
TABLE
if
exists
`sweet_doudou`
;
CREATE
TABLE
`sweet_doudou`
(
`mid`
bigint
unsigned
NOT
NULL
AUTO_INCREMENT
,
`doudou_id`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'doudou_id'
,
`user_id`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'user_id'
,
`username`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'观演人姓名'
,
`phone`
varchar
(
11
)
NOT
NULL
DEFAULT
''
COMMENT
'观演人手机号'
,
`platform`
varchar
(
100
)
NOT
NULL
DEFAULT
''
COMMENT
'购买平台'
,
`order_code`
varchar
(
100
)
NOT
NULL
DEFAULT
''
COMMENT
'购买订单号'
,
`mark`
varchar
(
512
)
DEFAULT
''
COMMENT
'想给doudou说的话'
,
`status`
tinyint
NOT
NULL
DEFAULT
1
COMMENT
'状态 1已登记 2未中签 3已中签 4已核销'
,
`created_at`
datetime
NULL
DEFAULT
CURRENT_TIMESTAMP
COMMENT
'创建时间'
,
`updated_at`
datetime
NULL
DEFAULT
CURRENT_TIMESTAMP
COMMENT
'更新时间'
,
PRIMARY
KEY
(
`mid`
),
KEY
`sweet_doudou_id`
(
`doudou_id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
utf8mb4
COLLATE
utf8mb4_unicode_ci
ROW_FORMAT
=
DYNAMIC
COMMENT
'doudou预约签名CD记录表'
;
-- 20250604 doudou预约签名核验权限表
drop
TABLE
if
exists
`sweet_doudou_scope`
;
CREATE
TABLE
`sweet_doudou_scope`
(
`mid`
bigint
unsigned
NOT
NULL
AUTO_INCREMENT
,
`mobile`
varchar
(
50
)
NOT
NULL
COMMENT
'核验人手机号'
,
`nick_name`
varchar
(
255
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
DEFAULT
''
COMMENT
'昵称'
,
`real_name`
varchar
(
255
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
DEFAULT
''
COMMENT
'真实姓名'
,
`id_card`
varchar
(
255
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
DEFAULT
''
COMMENT
'身份证号码'
,
`status`
tinyint
NOT
NULL
DEFAULT
1
COMMENT
'状态 0 不可用 1可用'
,
`created_at`
datetime
NULL
DEFAULT
CURRENT_TIMESTAMP
COMMENT
'创建时间'
,
`updated_at`
datetime
NULL
DEFAULT
CURRENT_TIMESTAMP
COMMENT
'更新时间'
,
PRIMARY
KEY
(
`mid`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
utf8mb4
COLLATE
utf8mb4_unicode_ci
ROW_FORMAT
=
DYNAMIC
COMMENT
'doudou预约签名核验权限表'
;
\ No newline at end of file
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/controller/SweetDoudouController.java
0 → 100644
View file @
581e9a32
package
com
.
liquidnet
.
service
.
sweet
.
controller
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.sweet.param.SweetDouDouCheckParam
;
import
com.liquidnet.service.sweet.param.SweetDouDouParam
;
import
com.liquidnet.service.sweet.service.ISweetDoudouService
;
import
com.liquidnet.service.sweet.vo.SweetDouDouVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.validation.Valid
;
/**
* <p>
* doudou预约签名CD记录表 前端控制器
* </p>
*
* @author jiangxiulong
* @since 2025-06-04
*/
@Api
(
tags
=
"活动-doudou"
)
@RestController
@RequestMapping
(
"/doudou"
)
public
class
SweetDoudouController
{
@Autowired
private
ISweetDoudouService
iSweetDoudouService
;
@GetMapping
(
""
)
@ApiOperation
(
"获取用户预约详情"
)
public
ResponseDto
<
SweetDouDouVo
>
info
()
{
return
iSweetDoudouService
.
info
();
}
@PostMapping
(
""
)
@ApiOperation
(
"预约"
)
public
ResponseDto
<
SweetDouDouVo
>
create
(
@Valid
@RequestBody
SweetDouDouParam
param
)
{
return
iSweetDoudouService
.
create
(
param
);
}
@PostMapping
(
"/detail"
)
@ApiOperation
(
"核验-码详情"
)
public
ResponseDto
<
SweetDouDouVo
>
detail
(
@Valid
@RequestBody
SweetDouDouCheckParam
param
)
{
return
iSweetDoudouService
.
detail
(
param
);
}
@PostMapping
(
"/check"
)
@ApiOperation
(
"核销"
)
public
ResponseDto
check
(
@Valid
@RequestBody
SweetDouDouCheckParam
param
)
{
return
iSweetDoudouService
.
check
(
param
);
}
@PostMapping
(
"/winning/upload"
)
@ApiOperation
(
"中签上传"
)
public
ResponseDto
<
Boolean
>
winningUpload
(
@RequestPart
(
value
=
"file"
)
MultipartFile
file
)
{
return
ResponseDto
.
success
(
iSweetDoudouService
.
winningUpload
(
file
));
}
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/service/impl/SweetDoudouServiceImpl.java
0 → 100644
View file @
581e9a32
package
com
.
liquidnet
.
service
.
sweet
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.commons.lang.util.CurrentUtil
;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.service.base.ErrorMapping
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.SqlMapping
;
import
com.liquidnet.service.base.constant.MQConst
;
import
com.liquidnet.service.sweet.entity.SweetDoudou
;
import
com.liquidnet.service.sweet.mapper.SweetDoudouMapper
;
import
com.liquidnet.service.sweet.param.SweetDouDouCheckParam
;
import
com.liquidnet.service.sweet.param.SweetDouDouParam
;
import
com.liquidnet.service.sweet.service.ISweetDoudouService
;
import
com.liquidnet.service.sweet.utils.QueueUtils
;
import
com.liquidnet.service.sweet.utils.RedisDataUtils
;
import
com.liquidnet.service.sweet.vo.SweetDouDouScopeVo
;
import
com.liquidnet.service.sweet.vo.SweetDouDouVo
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.poi.ss.usermodel.*
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.InputStream
;
import
java.time.LocalDateTime
;
import
java.util.*
;
/**
* <p>
* doudou预约签名CD记录表 服务实现类
* </p>
*
* @author jiangxiulong
* @since 2025-06-04
*/
@Slf4j
@Service
public
class
SweetDoudouServiceImpl
extends
ServiceImpl
<
SweetDoudouMapper
,
SweetDoudou
>
implements
ISweetDoudouService
{
@Autowired
private
RedisDataUtils
redisDataUtils
;
@Autowired
QueueUtils
queueUtils
;
@Override
public
ResponseDto
<
SweetDouDouVo
>
info
()
{
String
uid
=
CurrentUtil
.
getCurrentUid
();
SweetDouDouVo
vo
=
redisDataUtils
.
getSweetDouDou
(
uid
);
return
ResponseDto
.
success
(
vo
);
}
@Override
public
ResponseDto
<
SweetDouDouVo
>
create
(
SweetDouDouParam
param
)
{
String
uid
=
CurrentUtil
.
getCurrentUid
();
SweetDouDouVo
vo
=
redisDataUtils
.
getSweetDouDou
(
uid
);
if
(
null
!=
vo
)
{
return
ResponseDto
.
failure
(
"您已经预约过啦~"
);
}
String
nextSnowId
=
IDGenerator
.
nextSnowId
();
String
username
=
param
.
getUsername
();
String
phone
=
param
.
getPhone
();
String
platform
=
param
.
getPlatform
();
String
orderCode
=
param
.
getOrderCode
();
String
mark
=
param
.
getMark
();
SweetDouDouVo
entityVo
=
SweetDouDouVo
.
getNew
();
entityVo
.
setDoudouId
(
nextSnowId
);
entityVo
.
setUsername
(
username
);
entityVo
.
setPhone
(
phone
);
entityVo
.
setPlatform
(
platform
);
entityVo
.
setOrderCode
(
orderCode
);
entityVo
.
setMark
(
mark
);
entityVo
.
setUserId
(
uid
);
entityVo
.
setStatus
(
1
);
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
LinkedList
<
Object
[]>
sqlsDataA
=
CollectionUtil
.
linkedListObjectArr
();
sqls
.
add
(
SqlMapping
.
get
(
"sweet_doudou.insert"
));
sqlsDataA
.
add
(
new
Object
[]{
nextSnowId
,
uid
,
username
,
phone
,
platform
,
orderCode
,
mark
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
SweetQueue
.
SWEET_ANSWER_INSERT
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlsDataA
));
redisDataUtils
.
setSweetDouDou
(
entityVo
);
return
ResponseDto
.
success
(
entityVo
);
}
@Override
public
ResponseDto
check
(
SweetDouDouCheckParam
param
)
{
if
(!
checkScope
(
param
.
getAuthMobile
()))
{
log
.
info
(
"无权核验, authMoible: {}"
,
param
.
getAuthMobile
());
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20003"
));
}
SweetDouDouVo
vo
=
redisDataUtils
.
getSweetDouDou
(
param
.
getUserId
());
if
(
null
==
vo
)
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"90091"
));
}
if
(!
vo
.
getDoudouId
().
equals
(
param
.
getDoudouId
()))
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"90095"
));
}
// 判断状态
if
(
vo
.
getStatus
().
equals
(
1
))
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"90092"
));
}
else
if
(
vo
.
getStatus
().
equals
(
2
))
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"90093"
));
}
else
if
(
vo
.
getStatus
().
equals
(
4
))
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"90094"
));
}
vo
.
setStatus
(
4
);
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
LinkedList
<
Object
[]>
sqlsDataA
=
CollectionUtil
.
linkedListObjectArr
();
sqls
.
add
(
SqlMapping
.
get
(
"sweet_doudou.update"
));
sqlsDataA
.
add
(
new
Object
[]{
vo
.
getStatus
(),
LocalDateTime
.
now
(),
vo
.
getDoudouId
()
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
SweetQueue
.
SWEET_ANSWER_INSERT
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlsDataA
));
redisDataUtils
.
setSweetDouDou
(
vo
);
return
ResponseDto
.
success
();
}
@Override
public
ResponseDto
<
SweetDouDouVo
>
detail
(
SweetDouDouCheckParam
param
)
{
if
(!
checkScope
(
param
.
getAuthMobile
()))
{
log
.
info
(
"无权核验, authMoible: {}"
,
param
.
getAuthMobile
());
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20003"
));
}
SweetDouDouVo
vo
=
redisDataUtils
.
getSweetDouDou
(
param
.
getUserId
());
if
(
vo
==
null
)
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"90091"
));
}
if
(!
vo
.
getDoudouId
().
equals
(
param
.
getDoudouId
()))
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"90095"
));
}
return
ResponseDto
.
success
(
vo
);
}
@Override
public
boolean
winningUpload
(
MultipartFile
file
)
{
List
<
SweetDouDouVo
>
fileSweetDouDouVos
=
getSweetDouDouVoListByFile
(
file
);
if
(
fileSweetDouDouVos
.
isEmpty
())
{
log
.
error
(
"文件是空的"
);
return
false
;
}
for
(
SweetDouDouVo
fileDouDouVo
:
fileSweetDouDouVos
)
{
SweetDouDouVo
vo
=
redisDataUtils
.
getSweetDouDou
(
fileDouDouVo
.
getUserId
());
if
(
vo
!=
null
)
{
vo
.
setStatus
(
fileDouDouVo
.
getStatus
());
redisDataUtils
.
setSweetDouDou
(
vo
);
log
.
info
(
"更新Redis成功"
);
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
LinkedList
<
Object
[]>
sqlsDataA
=
CollectionUtil
.
linkedListObjectArr
();
sqls
.
add
(
SqlMapping
.
get
(
"sweet_doudou.update"
));
sqlsDataA
.
add
(
new
Object
[]{
fileDouDouVo
.
getStatus
(),
LocalDateTime
.
now
(),
vo
.
getDoudouId
()
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
SweetQueue
.
SWEET_ANSWER_INSERT
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlsDataA
));
log
.
info
(
"更新MySQL消息发送成功"
);
}
}
return
true
;
}
private
List
<
SweetDouDouVo
>
getSweetDouDouVoListByFile
(
MultipartFile
file
)
{
// 1. 验证文件类型
if
(!
isExcelFile
(
file
))
{
log
.
error
(
"请上传excel文件"
);
return
Collections
.
emptyList
();
}
ArrayList
<
SweetDouDouVo
>
sweetDouDouVos
=
new
ArrayList
<>();
try
(
InputStream
inputStream
=
file
.
getInputStream
();
Workbook
workbook
=
WorkbookFactory
.
create
(
inputStream
))
{
Sheet
sheet
=
workbook
.
getSheetAt
(
0
);
// 获取第一个工作表
Iterator
<
Row
>
rowIterator
=
sheet
.
iterator
();
// 跳过列名行
if
(
rowIterator
.
hasNext
())
rowIterator
.
next
();
// 2. 处理数据行
while
(
rowIterator
.
hasNext
())
{
Row
row
=
rowIterator
.
next
();
if
(
isRowEmpty
(
row
))
continue
;
// 跳过空行
SweetDouDouVo
vo
=
SweetDouDouVo
.
getNew
();
vo
.
setDoudouId
(
getStringValue
(
row
.
getCell
(
0
)));
vo
.
setUserId
(
getStringValue
(
row
.
getCell
(
1
)));
vo
.
setUsername
(
getStringValue
(
row
.
getCell
(
2
)));
vo
.
setPhone
(
getStringValue
(
row
.
getCell
(
3
)));
vo
.
setPlatform
(
getStringValue
(
row
.
getCell
(
4
)));
vo
.
setOrderCode
(
getStringValue
(
row
.
getCell
(
5
)));
vo
.
setMark
(
getStringValue
(
row
.
getCell
(
6
)));
String
cell7
=
getStringValue
(
row
.
getCell
(
7
));
vo
.
setStatus
(
cell7
.
equals
(
"1"
)
?
3
:
2
);
sweetDouDouVos
.
add
(
vo
);
}
return
sweetDouDouVos
;
}
catch
(
Exception
e
)
{
log
.
error
(
"error"
,
e
);
return
Collections
.
emptyList
();
}
}
// 辅助方法实现
private
boolean
isExcelFile
(
MultipartFile
file
)
{
String
fileName
=
file
.
getOriginalFilename
();
return
fileName
!=
null
&&
(
fileName
.
endsWith
(
".xls"
)
||
fileName
.
endsWith
(
".xlsx"
));
}
private
boolean
isRowEmpty
(
Row
row
)
{
for
(
int
i
=
0
;
i
<
7
;
i
++)
{
Cell
cell
=
row
.
getCell
(
i
,
Row
.
MissingCellPolicy
.
CREATE_NULL_AS_BLANK
);
if
(
cell
!=
null
&&
cell
.
getCellType
()
!=
CellType
.
BLANK
)
{
return
false
;
}
}
return
true
;
}
private
String
getStringValue
(
Cell
cell
)
{
if
(
cell
==
null
)
return
""
;
switch
(
cell
.
getCellType
())
{
case
STRING:
return
cell
.
getStringCellValue
().
trim
();
case
NUMERIC:
return
String
.
valueOf
((
int
)
cell
.
getNumericCellValue
());
case
BOOLEAN:
return
String
.
valueOf
(
cell
.
getBooleanCellValue
());
default
:
return
""
;
}
}
private
boolean
checkScope
(
String
authMobile
)
{
SweetDouDouScopeVo
sweetDouDouScopeVo
=
redisDataUtils
.
getSweetDouDouScopeVo
(
authMobile
);
return
sweetDouDouScopeVo
!=
null
;
}
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/utils/RedisDataUtils.java
View file @
581e9a32
...
...
@@ -60,6 +60,8 @@ public class RedisDataUtils {
@Autowired
private
SweetIntegralActivityDrawMapper
sweetIntegralActivityDrawMapper
;
@Autowired
private
SweetDoudouScopeMapper
sweetDoudouScopeMapper
;
@Autowired
@Lazy
private
FeignSlimeApiClient
feignSlimeApiClient
;
...
...
@@ -458,6 +460,39 @@ public class RedisDataUtils {
redisUtil
.
set
(
redisKey
,
sweetAnswerVo
);
}
// doudou
public
void
setSweetDouDou
(
SweetDouDouVo
vo
)
{
String
redisKey
=
SweetConstant
.
REDIS_KEY_SWEET_DOUDOU_USER
.
concat
(
vo
.
getUserId
());
redisUtil
.
set
(
redisKey
,
vo
);
}
public
SweetDouDouVo
getSweetDouDou
(
String
uid
)
{
String
redisKey
=
SweetConstant
.
REDIS_KEY_SWEET_DOUDOU_USER
.
concat
(
uid
);
return
(
SweetDouDouVo
)
redisUtil
.
get
(
redisKey
);
}
public
SweetDouDouScopeVo
getSweetDouDouScopeVo
(
String
mobile
){
String
redisKey
=
SweetConstant
.
REDIS_KEY_SWEET_DOUDOU_SCOPE_MOBILE
.
concat
(
mobile
);
SweetDouDouScopeVo
scopeVo
=
(
SweetDouDouScopeVo
)
redisUtil
.
get
(
redisKey
);
if
(
scopeVo
==
null
)
{
// 从MySQL查询
LambdaQueryWrapper
<
SweetDoudouScope
>
lambda
=
new
QueryWrapper
<
SweetDoudouScope
>()
.
lambda
().
eq
(
SweetDoudouScope:
:
getMobile
,
mobile
)
.
eq
(
SweetDoudouScope:
:
getStatus
,
1
);
SweetDoudouScope
scope
=
sweetDoudouScopeMapper
.
selectOne
(
lambda
);
if
(
scope
!=
null
)
{
scopeVo
=
new
SweetDouDouScopeVo
().
copy
(
scope
);
setSweetDouDouScopeVo
(
scopeVo
);
}
}
return
scopeVo
;
}
public
void
setSweetDouDouScopeVo
(
SweetDouDouScopeVo
sweetDouDouScopeVo
){
String
redisKey
=
SweetConstant
.
REDIS_KEY_SWEET_DOUDOU_SCOPE_MOBILE
.
concat
(
sweetDouDouScopeVo
.
getMobile
());
redisUtil
.
set
(
redisKey
,
sweetDouDouScopeVo
);
}
//草莓音乐节活动海报相关
public
void
setSweetMusician
(
SweetStrawberryParam
sweetStrawberry
)
{
String
redisKey
=
SweetConstant
.
REDIS_KEY_SWEET_STRAWBERRY_POSTER
.
concat
(
sweetStrawberry
.
getUnionId
());
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/resources/errors.properties
View file @
581e9a32
40001
=
登录信息有误
40002
=
账号已在另一台设备登录
40003
=
登录已过期
# 特殊状态码
90081
=
获取用户信息失败
90082
=
您的积分账户余额不足!
20003
=
\u
65E0
\u6743\u6838\u
9A8C
40001
=
\u
767B
\u
5F55
\u
4FE1
\u
606F
\u6709\u
8BEF
40002
=
\u
8D26
\u
53F7
\u
5DF2
\u5728\u
53E6
\u
4E00
\u
53F0
\u
8BBE
\u5907\u
767B
\u
5F55
40003
=
\u
767B
\u
5F55
\u
5DF2
\u
8FC7
\u
671F
# \u7279\u6B8A\u72B6\u6001\u7801
90081
=
\u
83B7
\u
53D6
\u7528\u6237\u
4FE1
\u
606F
\u5931\u
8D25
90082
=
\u
60A8
\u7684\u
79EF
\u5206\u
8D26
\u6237\u
4F59
\u
989D
\u
4E0D
\u
8DB3
\u
FF01
90091
=
\u
672A
\u
67E5
\u
8BE2
\u5230\u9884\u
7EA6
\u
8BB0
\u
5F55
90092
=
\u
672A
\u5230\u
89E3
\u9501\u
65F6
\u
95F4
90093
=
\u
60A8
\u
672A
\u
4E2D
\u
7B7E
90094
=
\u
5DF2
\u
88AB
\u6838\u9500
90095
=
\u
4E8C
\u
7EF4
\u7801\u
65E0
\u6548
liquidnet-bus-service/liquidnet-service-sweet/src/main/resources/sqlmap.properties
View file @
581e9a32
This diff is collapsed.
Click to expand it.
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