记得上下班打卡 | 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
cfef70ae
Commit
cfef70ae
authored
Jun 10, 2025
by
姜秀龙
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into container
parents
8f2b982f
023567ed
Changes
19
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
797 additions
and
7 deletions
+797
-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
liquidnet-service-sweet.yml
...t-bus-config/liquidnet-config/liquidnet-service-sweet.yml
+2
-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 @
cfef70ae
...
...
@@ -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 @
cfef70ae
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 @
cfef70ae
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 @
cfef70ae
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 @
cfef70ae
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 @
cfef70ae
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-config/liquidnet-config/liquidnet-service-sweet.yml
View file @
cfef70ae
...
...
@@ -128,6 +128,8 @@ global-auth:
-
${liquidnet.info.context}/wechatTemplate/followStatusPhone
# 做积分任务
-
${liquidnet.info.context}/wechatUsers/doTask
# doudou
-
${liquidnet.info.context}/doudou
oncheck-url-pattern
:
# - ${liquidnet.info.context}/**
# -----------------------------------------------------------
...
...
liquidnet-bus-do/liquidnet-service-sweet-do/src/main/java/com/liquidnet/service/sweet/entity/SweetDoudou.java
0 → 100644
View file @
cfef70ae
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 @
cfef70ae
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 @
cfef70ae
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 @
cfef70ae
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 @
cfef70ae
<?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 @
cfef70ae
<?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 @
cfef70ae
-- 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 @
cfef70ae
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 @
cfef70ae
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 @
cfef70ae
...
...
@@ -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 @
cfef70ae
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 @
cfef70ae
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