记得上下班打卡 | 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
abfb181d
Commit
abfb181d
authored
Apr 14, 2026
by
wangyifan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
草莓护照-护照管理
parent
55569119
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
809 additions
and
22 deletions
+809
-22
AdamCaomeiPassportSearchParam.java
...service/adam/dto/param/AdamCaomeiPassportSearchParam.java
+25
-0
AdamCaomeiPassportBadgeItemVo.java
...et/service/adam/dto/vo/AdamCaomeiPassportBadgeItemVo.java
+27
-0
AdamCaomeiPassportDetailVo.java
...idnet/service/adam/dto/vo/AdamCaomeiPassportDetailVo.java
+46
-0
AdamCaomeiPassportListVo.java
...quidnet/service/adam/dto/vo/AdamCaomeiPassportListVo.java
+34
-0
BaseController.java
...t/client/admin/common/core/controller/BaseController.java
+12
-0
AdamCaomeiBadgeController.java
...b/controller/zhengzai/adam/AdamCaomeiBadgeController.java
+5
-8
AdamCaomeiPassportController.java
...ontroller/zhengzai/adam/AdamCaomeiPassportController.java
+63
-0
badge_claim_users.html
...mplates/zhengzai/adam/caomei/badge/badge_claim_users.html
+5
-1
passport_detail.html
...plates/zhengzai/adam/caomei/passport/passport_detail.html
+92
-0
passport_list.html
...emplates/zhengzai/adam/caomei/passport/passport_list.html
+125
-0
IAdamCaomeiBadgeAdminService.java
...n/zhengzai/adam/service/IAdamCaomeiBadgeAdminService.java
+3
-4
IAdamCaomeiPassportAdminService.java
...hengzai/adam/service/IAdamCaomeiPassportAdminService.java
+18
-0
AdamCaomeiBadgeAdminServiceImpl.java
...ai/adam/service/impl/AdamCaomeiBadgeAdminServiceImpl.java
+15
-9
AdamCaomeiPassportAdminServiceImpl.java
...adam/service/impl/AdamCaomeiPassportAdminServiceImpl.java
+169
-0
AdamCaomeiPassportListDto.java
...liquidnet/service/adam/dto/AdamCaomeiPassportListDto.java
+19
-0
AdamCaomeiPassportUserBadgeDto.java
...dnet/service/adam/dto/AdamCaomeiPassportUserBadgeDto.java
+14
-0
AdamCaomeiPassport.java
...com/liquidnet/service/adam/entity/AdamCaomeiPassport.java
+43
-0
AdamCaomeiPassportMapper.java
...quidnet/service/adam/mapper/AdamCaomeiPassportMapper.java
+20
-0
AdamCaomeiPassportMapper.xml
...iquidnet/service/adam/mapper/AdamCaomeiPassportMapper.xml
+74
-0
No files found.
liquidnet-bus-api/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/dto/param/AdamCaomeiPassportSearchParam.java
0 → 100644
View file @
abfb181d
package
com
.
liquidnet
.
service
.
adam
.
dto
.
param
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
@ApiModel
(
"草莓护照-护照管理搜索参数"
)
public
class
AdamCaomeiPassportSearchParam
{
@ApiModelProperty
(
value
=
"护照编号"
)
private
String
passportNo
;
@ApiModelProperty
(
value
=
"关联用户名(昵称/真实姓名模糊)"
)
private
String
userName
;
@ApiModelProperty
(
value
=
"手机号"
)
private
String
mobile
;
@ApiModelProperty
(
value
=
"证件号"
)
private
String
idCard
;
@ApiModelProperty
(
value
=
"绑定状态:0-未绑定 1-已绑定 2-已作废,空为全部"
)
private
Integer
bindStatus
;
}
liquidnet-bus-api/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/dto/vo/AdamCaomeiPassportBadgeItemVo.java
0 → 100644
View file @
abfb181d
package
com
.
liquidnet
.
service
.
adam
.
dto
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
@Data
@ApiModel
(
"草莓护照-用户已领徽章项"
)
public
class
AdamCaomeiPassportBadgeItemVo
{
@ApiModelProperty
(
value
=
"徽章ID"
)
private
String
badgeId
;
@ApiModelProperty
(
value
=
"徽章名称"
)
private
String
badgeName
;
@ApiModelProperty
(
value
=
"图标"
)
private
String
icon
;
@ApiModelProperty
(
value
=
"领取时间"
)
private
Date
claimedAt
;
@ApiModelProperty
(
value
=
"获取途径 source"
)
private
Integer
source
;
}
liquidnet-bus-api/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/dto/vo/AdamCaomeiPassportDetailVo.java
0 → 100644
View file @
abfb181d
package
com
.
liquidnet
.
service
.
adam
.
dto
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.List
;
@Data
@ApiModel
(
"草莓护照-护照详情"
)
public
class
AdamCaomeiPassportDetailVo
{
@ApiModelProperty
(
value
=
"护照主键"
)
private
Long
mid
;
@ApiModelProperty
(
value
=
"护照编号"
)
private
String
passportNo
;
@ApiModelProperty
(
value
=
"绑定状态"
)
private
Integer
status
;
@ApiModelProperty
(
value
=
"绑定用户uid"
)
private
String
userId
;
@ApiModelProperty
(
value
=
"首次绑定时间"
)
private
Date
boundAt
;
@ApiModelProperty
(
value
=
"批次号"
)
private
String
batchNo
;
@ApiModelProperty
(
value
=
"用户昵称"
)
private
String
nickname
;
@ApiModelProperty
(
value
=
"手机号(脱敏)"
)
private
String
mobile
;
@ApiModelProperty
(
value
=
"真实姓名"
)
private
String
realName
;
@ApiModelProperty
(
value
=
"证件号(脱敏)"
)
private
String
idCard
;
@ApiModelProperty
(
value
=
"已领取徽章"
)
private
List
<
AdamCaomeiPassportBadgeItemVo
>
badges
;
}
liquidnet-bus-api/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/dto/vo/AdamCaomeiPassportListVo.java
0 → 100644
View file @
abfb181d
package
com
.
liquidnet
.
service
.
adam
.
dto
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
@ApiModel
(
"草莓护照-护照管理列表"
)
public
class
AdamCaomeiPassportListVo
{
@ApiModelProperty
(
value
=
"主键"
)
private
Long
mid
;
@ApiModelProperty
(
value
=
"护照ID/编号"
)
private
String
passportNo
;
@ApiModelProperty
(
value
=
"关联用户昵称"
)
private
String
nickname
;
@ApiModelProperty
(
value
=
"真实姓名"
)
private
String
realName
;
@ApiModelProperty
(
value
=
"手机号(脱敏)"
)
private
String
mobile
;
@ApiModelProperty
(
value
=
"证件号(脱敏)"
)
private
String
idCard
;
@ApiModelProperty
(
value
=
"绑定状态 0未绑定 1已绑定 2已作废"
)
private
Integer
bindStatus
;
@ApiModelProperty
(
value
=
"已领取徽章数"
)
private
Integer
claimedBadgeCount
;
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-common/src/main/java/com/liquidnet/client/admin/common/core/controller/BaseController.java
View file @
abfb181d
...
...
@@ -126,6 +126,18 @@ public class BaseController
return
rspData
;
}
/**
* 响应分页数据(用于查询结果已转为 VO 列表,但需保留 PageHelper 总条数的场景)
*/
protected
TableDataInfo
getDataTable
(
PageInfo
<?>
pageInfo
)
{
TableDataInfo
rspData
=
new
TableDataInfo
();
rspData
.
setCode
(
0
);
rspData
.
setRows
(
pageInfo
.
getList
());
rspData
.
setTotal
(
pageInfo
.
getTotal
());
return
rspData
;
}
/**
* 响应返回结果
*
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/java/com/liquidnet/client/admin/web/controller/zhengzai/adam/AdamCaomeiBadgeController.java
View file @
abfb181d
...
...
@@ -10,8 +10,7 @@ import com.liquidnet.commons.lang.util.IDGenerator;
import
com.liquidnet.service.adam.dto.param.AdamCaomeiBadgeParam
;
import
com.liquidnet.service.adam.dto.param.AdamCaomeiBadgeClaimUserSearchParam
;
import
com.liquidnet.service.adam.dto.param.AdamCaomeiBadgeSearchParam
;
import
com.liquidnet.service.adam.dto.vo.AdamCaomeiBadgeClaimUserVo
;
import
com.liquidnet.service.adam.dto.vo.AdamCaomeiBadgeVo
;
import
com.github.pagehelper.PageInfo
;
import
com.liquidnet.service.adam.entity.AdamCaomeiBadge
;
import
io.swagger.annotations.Api
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -23,8 +22,6 @@ import org.springframework.ui.ModelMap;
import
org.springframework.web.bind.annotation.*
;
import
java.util.Date
;
import
java.util.List
;
@Api
(
tags
=
"草莓护照-徽章管理"
)
@Controller
@RequestMapping
(
"adam/caomei/badge"
)
...
...
@@ -46,8 +43,8 @@ public class AdamCaomeiBadgeController extends BaseController {
@ResponseBody
public
TableDataInfo
list
(
AdamCaomeiBadgeSearchParam
param
)
{
startPage
();
List
<
AdamCaomeiBadgeVo
>
voList
=
adamCaomeiBadgeAdminService
.
listWithClaimedCount
(
param
);
return
getDataTable
(
voList
);
PageInfo
<?>
pageInfo
=
adamCaomeiBadgeAdminService
.
listWithClaimedCount
(
param
);
return
getDataTable
(
pageInfo
);
}
@GetMapping
(
"add"
)
...
...
@@ -102,8 +99,8 @@ public class AdamCaomeiBadgeController extends BaseController {
@ResponseBody
public
TableDataInfo
claimUsersList
(
AdamCaomeiBadgeClaimUserSearchParam
param
)
{
startPage
();
List
<
AdamCaomeiBadgeClaimUserVo
>
list
=
adamCaomeiBadgeAdminService
.
listClaimUsers
(
param
);
return
getDataTable
(
list
);
PageInfo
<?>
pageInfo
=
adamCaomeiBadgeAdminService
.
listClaimUsers
(
param
);
return
getDataTable
(
pageInfo
);
}
@GetMapping
(
"edit/{mid}"
)
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/java/com/liquidnet/client/admin/web/controller/zhengzai/adam/AdamCaomeiPassportController.java
0 → 100644
View file @
abfb181d
package
com
.
liquidnet
.
client
.
admin
.
web
.
controller
.
zhengzai
.
adam
;
import
com.liquidnet.client.admin.common.annotation.Log
;
import
com.liquidnet.client.admin.common.core.controller.BaseController
;
import
com.liquidnet.client.admin.common.core.domain.AjaxResult
;
import
com.liquidnet.client.admin.common.core.page.TableDataInfo
;
import
com.liquidnet.client.admin.common.enums.BusinessType
;
import
com.liquidnet.client.admin.zhengzai.adam.service.IAdamCaomeiPassportAdminService
;
import
com.liquidnet.service.adam.dto.param.AdamCaomeiPassportSearchParam
;
import
com.liquidnet.service.adam.dto.vo.AdamCaomeiPassportDetailVo
;
import
com.github.pagehelper.PageInfo
;
import
io.swagger.annotations.Api
;
import
org.apache.shiro.authz.annotation.RequiresPermissions
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.ui.ModelMap
;
import
org.springframework.web.bind.annotation.*
;
@Api
(
tags
=
"草莓护照-护照管理"
)
@Controller
@RequestMapping
(
"adam/caomei/passport"
)
public
class
AdamCaomeiPassportController
extends
BaseController
{
private
final
String
prefix
=
"zhengzai/adam/caomei/passport"
;
@Autowired
private
IAdamCaomeiPassportAdminService
adamCaomeiPassportAdminService
;
@RequiresPermissions
(
"adam:caomei:passport:view"
)
@GetMapping
()
public
String
view
()
{
return
prefix
+
"/passport_list"
;
}
@RequiresPermissions
(
"adam:caomei:passport:list"
)
@PostMapping
(
"list"
)
@ResponseBody
public
TableDataInfo
list
(
AdamCaomeiPassportSearchParam
param
)
{
startPage
();
PageInfo
<?>
pageInfo
=
adamCaomeiPassportAdminService
.
listPassports
(
param
);
return
getDataTable
(
pageInfo
);
}
@RequiresPermissions
(
"adam:caomei:passport:detail"
)
@GetMapping
(
"detail/{passportNo}"
)
public
String
detail
(
@PathVariable
(
"passportNo"
)
String
passportNo
,
ModelMap
mmap
)
{
AdamCaomeiPassportDetailVo
detail
=
adamCaomeiPassportAdminService
.
getPassportDetail
(
passportNo
);
mmap
.
put
(
"detail"
,
detail
);
return
prefix
+
"/passport_detail"
;
}
@RequiresPermissions
(
"adam:caomei:passport:unbind"
)
@Log
(
title
=
"草莓护照-护照解绑"
,
businessType
=
BusinessType
.
UPDATE
)
@PostMapping
(
"unbind"
)
@ResponseBody
public
AjaxResult
unbind
(
@RequestParam
(
"passportNo"
)
String
passportNo
)
{
boolean
ok
=
adamCaomeiPassportAdminService
.
unbindPassport
(
passportNo
);
if
(!
ok
)
{
return
error
(
"解绑失败:护照不存在或当前未绑定用户"
);
}
return
success
();
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/adam/caomei/badge/badge_claim_users.html
View file @
abfb181d
...
...
@@ -19,11 +19,15 @@
var
options
=
{
url
:
prefix
+
"/claimUsers/list"
,
queryParams
:
function
(
params
)
{
return
{
var
curParams
=
{
pageSize
:
params
.
limit
,
pageNum
:
params
.
offset
/
params
.
limit
+
1
,
searchValue
:
params
.
search
,
orderByColumn
:
params
.
sort
,
isAsc
:
params
.
order
,
badgeId
:
$
(
"#badgeId"
).
val
()
};
return
curParams
;
},
modalName
:
"领取用户"
,
columns
:
[
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/adam/caomei/passport/passport_detail.html
0 → 100644
View file @
abfb181d
<!DOCTYPE html>
<html
lang=
"zh"
xmlns:th=
"http://www.thymeleaf.org"
>
<head>
<th:block
th:include=
"include :: header('护照详情')"
/>
</head>
<body
class=
"gray-bg"
>
<div
class=
"container-div"
th:if=
"${detail != null}"
>
<div
class=
"row"
>
<div
class=
"col-sm-12"
>
<div
class=
"ibox"
>
<div
class=
"ibox-title"
><h5>
护照信息
</h5></div>
<div
class=
"ibox-content"
>
<table
class=
"table table-bordered table-striped"
>
<tbody>
<tr><td
class=
"col-sm-2"
>
护照编号
</td><td
th:text=
"${detail.passportNo}"
>
-
</td></tr>
<tr><td>
绑定状态
</td>
<td>
<span
th:if=
"${detail.status == 1}"
class=
"label label-info"
>
已绑定
</span>
<span
th:if=
"${detail.status == 0}"
class=
"label label-default"
>
未绑定
</span>
<span
th:if=
"${detail.status == 2}"
class=
"label label-warning"
>
已作废
</span>
</td>
</tr>
<tr><td>
批次号
</td><td
th:text=
"${detail.batchNo != null ? detail.batchNo : '-'}"
>
-
</td></tr>
<tr><td>
首次绑定时间
</td><td
th:text=
"${detail.boundAt != null ? #dates.format(detail.boundAt, 'yyyy-MM-dd HH:mm:ss') : '-'}"
>
-
</td></tr>
</tbody>
</table>
</div>
</div>
</div>
<div
class=
"col-sm-12"
th:if=
"${detail.userId != null and detail.userId != ''}"
>
<div
class=
"ibox"
>
<div
class=
"ibox-title"
><h5>
关联用户信息
</h5></div>
<div
class=
"ibox-content"
>
<table
class=
"table table-bordered table-striped"
>
<tbody>
<tr><td
class=
"col-sm-2"
>
用户ID
</td><td
th:text=
"${detail.userId}"
>
-
</td></tr>
<tr><td>
昵称
</td><td
th:text=
"${detail.nickname}"
>
-
</td></tr>
<tr><td>
手机号
</td><td
th:text=
"${detail.mobile}"
>
-
</td></tr>
<tr><td>
真实姓名
</td><td
th:text=
"${detail.realName}"
>
-
</td></tr>
<tr><td>
证件号
</td><td
th:text=
"${detail.idCard}"
>
-
</td></tr>
</tbody>
</table>
</div>
</div>
</div>
<div
class=
"col-sm-12"
th:if=
"${detail.userId == null or detail.userId == ''}"
>
<div
class=
"alert alert-info"
>
当前护照未绑定用户
</div>
</div>
<div
class=
"col-sm-12"
th:if=
"${detail.badges != null and !#lists.isEmpty(detail.badges)}"
>
<div
class=
"ibox"
>
<div
class=
"ibox-title"
><h5>
已领取徽章
</h5></div>
<div
class=
"ibox-content"
>
<table
class=
"table table-bordered table-striped"
>
<thead>
<tr>
<th>
徽章名称
</th>
<th>
图标
</th>
<th>
领取时间
</th>
<th>
获取途径
</th>
</tr>
</thead>
<tbody>
<tr
th:each=
"b : ${detail.badges}"
>
<td
th:text=
"${b.badgeName}"
>
-
</td>
<td>
<span
th:if=
"${b.icon != null and (b.icon.startsWith('http') or b.icon.startsWith('/'))}"
>
<img
th:src=
"${b.icon}"
style=
"max-height:28px;"
/>
</span>
<span
th:if=
"${b.icon != null and !(b.icon.startsWith('http') or b.icon.startsWith('/'))}"
th:text=
"${b.icon}"
style=
"font-size:22px;"
></span>
</td>
<td
th:text=
"${b.claimedAt != null ? #dates.format(b.claimedAt, 'yyyy-MM-dd HH:mm:ss') : '-'}"
>
-
</td>
<td>
<span
th:if=
"${b.source == 1}"
>
绑定护照自动发放
</span>
<span
th:if=
"${b.source == 2}"
>
购票自动发放
</span>
<span
th:if=
"${b.source == 3}"
>
补签审核通过
</span>
<span
th:if=
"${b.source == 4}"
>
现场管理员手动发放
</span>
<span
th:if=
"${b.source == null or b.source < 1 or b.source > 4}"
>
未知
</span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div
class=
"container-div"
th:if=
"${detail == null}"
>
<div
class=
"alert alert-warning"
>
未找到护照信息
</div>
</div>
<th:block
th:include=
"include :: footer"
/>
</body>
</html>
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/adam/caomei/passport/passport_list.html
0 → 100644
View file @
abfb181d
<!DOCTYPE html>
<html
lang=
"zh"
xmlns:th=
"http://www.thymeleaf.org"
xmlns:shiro=
"http://www.pollix.at/thymeleaf/shiro"
>
<head>
<th:block
th:include=
"include :: header('护照管理')"
/>
</head>
<body
class=
"gray-bg"
>
<div
class=
"container-div"
>
<div
class=
"row"
>
<div
class=
"col-sm-12 search-collapse"
>
<form
id=
"formId"
>
<div
class=
"select-list"
>
<ul>
<li>
<label>
护照编号:
</label>
<input
type=
"text"
name=
"passportNo"
placeholder=
"模糊匹配"
/>
</li>
<li>
<label>
绑定状态:
</label>
<select
name=
"bindStatus"
>
<option
value=
""
>
全部
</option>
<option
value=
"1"
>
已绑定
</option>
<option
value=
"0"
>
未绑定
</option>
<option
value=
"2"
>
已作废
</option>
</select>
</li>
<li>
<label>
用户昵称/姓名:
</label>
<input
type=
"text"
name=
"userName"
placeholder=
"昵称或真实姓名"
/>
</li>
<li>
<label>
手机号:
</label>
<input
type=
"text"
name=
"mobile"
placeholder=
"完整或片段"
/>
</li>
<li>
<label>
证件号:
</label>
<input
type=
"text"
name=
"idCard"
placeholder=
"完整或片段"
/>
</li>
<li>
<a
class=
"btn btn-primary btn-rounded btn-sm"
onclick=
"$.table.search()"
><i
class=
"fa fa-search"
></i>
搜索
</a>
<a
class=
"btn btn-warning btn-rounded btn-sm"
onclick=
"$.form.reset()"
><i
class=
"fa fa-refresh"
></i>
重置
</a>
</li>
</ul>
</div>
</form>
</div>
<div
class=
"col-sm-12 select-table table-striped"
>
<table
id=
"bootstrap-table"
></table>
</div>
</div>
</div>
<th:block
th:include=
"include :: footer"
/>
<script
th:inline=
"javascript"
>
var
unbindFlag
=
[[
$
{@
permission
.
hasPermi
(
'adam:caomei:passport:unbind'
)}]];
var
detailFlag
=
[[
$
{@
permission
.
hasPermi
(
'adam:caomei:passport:detail'
)}]];
var
prefix
=
ctx
+
"adam/caomei/passport"
;
$
(
function
()
{
var
options
=
{
url
:
prefix
+
"/list"
,
formId
:
"formId"
,
modalName
:
"护照"
,
columns
:
[
{
field
:
'mid'
,
title
:
'主键'
,
visible
:
false
},
{
field
:
'passportNo'
,
title
:
'护照ID'
},
{
field
:
'nickname'
,
title
:
'关联用户'
,
formatter
:
function
(
value
,
row
,
index
)
{
if
(
!
value
&&
row
.
bindStatus
!==
1
)
{
return
'<span class="text-muted">未绑定用户</span>'
;
}
return
value
||
'-'
;
}
},
{
field
:
'realName'
,
title
:
'姓名'
,
formatter
:
function
(
v
)
{
return
v
||
'-'
;
}
},
{
field
:
'mobile'
,
title
:
'手机号'
,
formatter
:
function
(
v
)
{
return
v
||
'-'
;
}
},
{
field
:
'idCard'
,
title
:
'证件号'
,
formatter
:
function
(
v
)
{
return
v
||
'-'
;
}
},
{
field
:
'bindStatus'
,
title
:
'绑定状态'
,
align
:
'center'
,
formatter
:
function
(
value
)
{
if
(
value
===
1
)
{
return
'<span class="label label-info">已绑定</span>'
;
}
if
(
value
===
0
)
{
return
'<span class="label label-default">未绑定</span>'
;
}
if
(
value
===
2
)
{
return
'<span class="label label-warning">已作废</span>'
;
}
return
value
;
}
},
{
field
:
'claimedBadgeCount'
,
title
:
'已领取徽章数'
,
align
:
'center'
},
{
title
:
'操作'
,
align
:
'center'
,
formatter
:
function
(
value
,
row
)
{
var
actions
=
[];
actions
.
push
(
'<a class="btn btn-info btn-xs '
+
detailFlag
+
'" href="javascript:void(0)" onclick=
\'
openDetail('
+
JSON
.
stringify
(
row
.
passportNo
)
+
')
\'
><i class="fa fa-eye"></i>查看详情</a> '
);
if
(
row
.
bindStatus
===
1
)
{
actions
.
push
(
'<a class="btn btn-warning btn-xs '
+
unbindFlag
+
'" href="javascript:void(0)" onclick=
\'
unbind('
+
JSON
.
stringify
(
row
.
passportNo
)
+
')
\'
><i class="fa fa-unlink"></i>解绑用户</a>'
);
}
return
actions
.
join
(
''
);
}
}
]
};
$
.
table
.
init
(
options
);
});
function
openDetail
(
passportNo
)
{
$
.
modal
.
openTab
(
"护照详情"
,
prefix
+
"/detail/"
+
encodeURIComponent
(
passportNo
));
}
function
unbind
(
passportNo
)
{
$
.
modal
.
confirm
(
"解绑后该护照将变为未绑定状态,用户需重新绑定。确认解绑?"
,
function
()
{
$
.
operate
.
post
(
prefix
+
"/unbind"
,
{
passportNo
:
passportNo
});
});
}
</script>
</body>
</html>
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/adam/service/IAdamCaomeiBadgeAdminService.java
View file @
abfb181d
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
adam
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.github.pagehelper.PageInfo
;
import
com.liquidnet.service.adam.dto.param.AdamCaomeiBadgeClaimUserSearchParam
;
import
com.liquidnet.service.adam.dto.param.AdamCaomeiBadgeSearchParam
;
import
com.liquidnet.service.adam.dto.vo.AdamCaomeiBadgeClaimUserVo
;
import
com.liquidnet.service.adam.dto.vo.AdamCaomeiBadgeVo
;
import
com.liquidnet.service.adam.entity.AdamCaomeiBadge
;
import
java.util.List
;
/**
* 草莓护照-徽章管理
*/
...
...
@@ -19,12 +18,12 @@ public interface IAdamCaomeiBadgeAdminService extends IService<AdamCaomeiBadge>
* @param param
* @return
*/
List
<
AdamCaomeiBadgeVo
>
listWithClaimedCount
(
AdamCaomeiBadgeSearchParam
param
);
PageInfo
<
AdamCaomeiBadgeVo
>
listWithClaimedCount
(
AdamCaomeiBadgeSearchParam
param
);
/**
* 徽章领取用户列表
* @param param
* @return
*/
List
<
AdamCaomeiBadgeClaimUserVo
>
listClaimUsers
(
AdamCaomeiBadgeClaimUserSearchParam
param
);
PageInfo
<
AdamCaomeiBadgeClaimUserVo
>
listClaimUsers
(
AdamCaomeiBadgeClaimUserSearchParam
param
);
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/adam/service/IAdamCaomeiPassportAdminService.java
0 → 100644
View file @
abfb181d
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
adam
.
service
;
import
com.github.pagehelper.PageInfo
;
import
com.liquidnet.service.adam.dto.param.AdamCaomeiPassportSearchParam
;
import
com.liquidnet.service.adam.dto.vo.AdamCaomeiPassportDetailVo
;
import
com.liquidnet.service.adam.dto.vo.AdamCaomeiPassportListVo
;
/**
* 草莓护照-护照管理
*/
public
interface
IAdamCaomeiPassportAdminService
{
PageInfo
<
AdamCaomeiPassportListVo
>
listPassports
(
AdamCaomeiPassportSearchParam
param
);
AdamCaomeiPassportDetailVo
getPassportDetail
(
String
passportNo
);
boolean
unbindPassport
(
String
passportNo
);
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/adam/service/impl/AdamCaomeiBadgeAdminServiceImpl.java
View file @
abfb181d
...
...
@@ -3,6 +3,7 @@ package com.liquidnet.client.admin.zhengzai.adam.service.impl;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.github.pagehelper.PageInfo
;
import
com.liquidnet.client.admin.zhengzai.adam.service.IAdamCaomeiBadgeAdminService
;
import
com.liquidnet.service.adam.dto.AdamCaomeiBadgeClaimCountDto
;
import
com.liquidnet.service.adam.dto.AdamCaomeiBadgeClaimUserDto
;
...
...
@@ -26,7 +27,7 @@ import java.util.stream.Collectors;
@Service
public
class
AdamCaomeiBadgeAdminServiceImpl
extends
ServiceImpl
<
AdamCaomeiBadgeMapper
,
AdamCaomeiBadge
>
implements
IAdamCaomeiBadgeAdminService
{
@Override
public
List
<
AdamCaomeiBadgeVo
>
listWithClaimedCount
(
AdamCaomeiBadgeSearchParam
param
)
{
public
PageInfo
<
AdamCaomeiBadgeVo
>
listWithClaimedCount
(
AdamCaomeiBadgeSearchParam
param
)
{
LambdaQueryWrapper
<
AdamCaomeiBadge
>
queryWrapper
=
Wrappers
.
lambdaQuery
(
AdamCaomeiBadge
.
class
);
if
(
StringUtils
.
isNotBlank
(
param
.
getName
()))
{
queryWrapper
.
like
(
AdamCaomeiBadge:
:
getName
,
param
.
getName
());
...
...
@@ -40,11 +41,9 @@ public class AdamCaomeiBadgeAdminServiceImpl extends ServiceImpl<AdamCaomeiBadge
queryWrapper
.
orderByDesc
(
AdamCaomeiBadge:
:
getSort
,
AdamCaomeiBadge:
:
getUpdatedAt
);
List
<
AdamCaomeiBadge
>
badges
=
this
.
list
(
queryWrapper
);
if
(
badges
.
isEmpty
())
{
return
Collections
.
emptyList
();
}
PageInfo
<
AdamCaomeiBadge
>
entityPage
=
new
PageInfo
<>(
badges
);
List
<
String
>
badgeIds
=
badges
.
stream
()
List
<
String
>
badgeIds
=
entityPage
.
getList
()
.
stream
()
.
map
(
AdamCaomeiBadge:
:
getBadgeId
)
.
filter
(
StringUtils:
:
isNotBlank
)
.
collect
(
Collectors
.
toList
());
...
...
@@ -54,24 +53,31 @@ public class AdamCaomeiBadgeAdminServiceImpl extends ServiceImpl<AdamCaomeiBadge
baseMapper
.
selectClaimedCountByBadgeIds
(
badgeIds
).
stream
()
.
collect
(
Collectors
.
toMap
(
AdamCaomeiBadgeClaimCountDto:
:
getBadgeId
,
AdamCaomeiBadgeClaimCountDto:
:
getClaimedCount
,
(
a
,
b
)
->
a
));
return
badges
.
stream
().
map
(
item
->
{
List
<
AdamCaomeiBadgeVo
>
voList
=
entityPage
.
getList
()
.
stream
().
map
(
item
->
{
AdamCaomeiBadgeVo
vo
=
new
AdamCaomeiBadgeVo
();
BeanUtils
.
copyProperties
(
item
,
vo
);
vo
.
setClaimedCount
(
countMap
.
getOrDefault
(
item
.
getBadgeId
(),
0
));
return
vo
;
}).
collect
(
Collectors
.
toList
());
PageInfo
<
AdamCaomeiBadgeVo
>
voPage
=
new
PageInfo
<>(
voList
);
voPage
.
setTotal
(
entityPage
.
getTotal
());
return
voPage
;
}
@Override
public
List
<
AdamCaomeiBadgeClaimUserVo
>
listClaimUsers
(
AdamCaomeiBadgeClaimUserSearchParam
param
)
{
public
PageInfo
<
AdamCaomeiBadgeClaimUserVo
>
listClaimUsers
(
AdamCaomeiBadgeClaimUserSearchParam
param
)
{
if
(
param
==
null
||
StringUtils
.
isBlank
(
param
.
getBadgeId
()))
{
return
Collections
.
emptyList
(
);
return
new
PageInfo
<>(
Collections
.
emptyList
()
);
}
List
<
AdamCaomeiBadgeClaimUserDto
>
list
=
baseMapper
.
selectClaimUsersByBadgeId
(
param
.
getBadgeId
());
return
list
.
stream
().
map
(
item
->
{
PageInfo
<
AdamCaomeiBadgeClaimUserDto
>
dtoPage
=
new
PageInfo
<>(
list
);
List
<
AdamCaomeiBadgeClaimUserVo
>
voList
=
dtoPage
.
getList
().
stream
().
map
(
item
->
{
AdamCaomeiBadgeClaimUserVo
vo
=
new
AdamCaomeiBadgeClaimUserVo
();
BeanUtils
.
copyProperties
(
item
,
vo
);
return
vo
;
}).
collect
(
Collectors
.
toList
());
PageInfo
<
AdamCaomeiBadgeClaimUserVo
>
voPage
=
new
PageInfo
<>(
voList
);
voPage
.
setTotal
(
dtoPage
.
getTotal
());
return
voPage
;
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/adam/service/impl/AdamCaomeiPassportAdminServiceImpl.java
0 → 100644
View file @
abfb181d
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
adam
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.github.pagehelper.PageInfo
;
import
com.liquidnet.client.admin.zhengzai.adam.service.IAdamCaomeiPassportAdminService
;
import
com.liquidnet.service.adam.dto.AdamCaomeiPassportListDto
;
import
com.liquidnet.service.adam.dto.AdamCaomeiPassportUserBadgeDto
;
import
com.liquidnet.service.adam.dto.param.AdamCaomeiPassportSearchParam
;
import
com.liquidnet.service.adam.dto.vo.AdamCaomeiPassportBadgeItemVo
;
import
com.liquidnet.service.adam.dto.vo.AdamCaomeiPassportDetailVo
;
import
com.liquidnet.service.adam.dto.vo.AdamCaomeiPassportListVo
;
import
com.liquidnet.service.adam.entity.AdamCaomeiPassport
;
import
com.liquidnet.service.adam.entity.AdamRealName
;
import
com.liquidnet.service.adam.entity.AdamUser
;
import
com.liquidnet.service.adam.entity.AdamUserInfo
;
import
com.liquidnet.service.adam.mapper.AdamCaomeiPassportMapper
;
import
com.liquidnet.service.adam.mapper.AdamRealNameMapper
;
import
com.liquidnet.service.adam.mapper.AdamUserInfoMapper
;
import
com.liquidnet.service.adam.mapper.AdamUserMapper
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Collections
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Slf4j
@Service
public
class
AdamCaomeiPassportAdminServiceImpl
implements
IAdamCaomeiPassportAdminService
{
@Autowired
private
AdamCaomeiPassportMapper
adamCaomeiPassportMapper
;
@Autowired
private
AdamUserMapper
adamUserMapper
;
@Autowired
private
AdamUserInfoMapper
adamUserInfoMapper
;
@Autowired
private
AdamRealNameMapper
adamRealNameMapper
;
@Override
public
PageInfo
<
AdamCaomeiPassportListVo
>
listPassports
(
AdamCaomeiPassportSearchParam
param
)
{
if
(
param
==
null
)
{
param
=
new
AdamCaomeiPassportSearchParam
();
}
List
<
AdamCaomeiPassportListDto
>
rows
=
adamCaomeiPassportMapper
.
selectPassportAdminList
(
param
.
getPassportNo
(),
param
.
getUserName
(),
param
.
getMobile
(),
param
.
getIdCard
(),
param
.
getBindStatus
()
);
PageInfo
<
AdamCaomeiPassportListDto
>
dtoPage
=
new
PageInfo
<>(
rows
);
List
<
AdamCaomeiPassportListVo
>
voList
=
dtoPage
.
getList
().
stream
().
map
(
d
->
{
AdamCaomeiPassportListVo
vo
=
new
AdamCaomeiPassportListVo
();
BeanUtils
.
copyProperties
(
d
,
vo
);
return
vo
;
}).
collect
(
Collectors
.
toList
());
PageInfo
<
AdamCaomeiPassportListVo
>
voPage
=
new
PageInfo
<>(
voList
);
voPage
.
setTotal
(
dtoPage
.
getTotal
());
return
voPage
;
}
@Override
public
AdamCaomeiPassportDetailVo
getPassportDetail
(
String
passportNo
)
{
if
(
StringUtils
.
isBlank
(
passportNo
))
{
return
null
;
}
AdamCaomeiPassport
passport
=
adamCaomeiPassportMapper
.
selectOne
(
Wrappers
.
lambdaQuery
(
AdamCaomeiPassport
.
class
)
.
eq
(
AdamCaomeiPassport:
:
getPassportNo
,
passportNo
.
trim
())
);
if
(
passport
==
null
)
{
return
null
;
}
AdamCaomeiPassportDetailVo
vo
=
new
AdamCaomeiPassportDetailVo
();
vo
.
setMid
(
passport
.
getMid
());
vo
.
setPassportNo
(
passport
.
getPassportNo
());
vo
.
setStatus
(
passport
.
getStatus
());
vo
.
setUserId
(
passport
.
getUserId
());
vo
.
setBoundAt
(
passport
.
getBoundAt
());
vo
.
setBatchNo
(
passport
.
getBatchNo
());
String
uid
=
passport
.
getUserId
();
if
(
StringUtils
.
isBlank
(
uid
))
{
vo
.
setBadges
(
Collections
.
emptyList
());
return
vo
;
}
AdamUser
user
=
adamUserMapper
.
selectOne
(
Wrappers
.
lambdaQuery
(
AdamUser
.
class
).
eq
(
AdamUser:
:
getUid
,
uid
));
AdamUserInfo
userInfo
=
adamUserInfoMapper
.
selectOne
(
Wrappers
.
lambdaQuery
(
AdamUserInfo
.
class
).
eq
(
AdamUserInfo:
:
getUid
,
uid
));
vo
.
setNickname
(
userInfo
!=
null
?
StringUtils
.
defaultString
(
userInfo
.
getNickname
())
:
""
);
vo
.
setMobile
(
user
!=
null
?
maskMobile
(
user
.
getMobile
())
:
""
);
AdamRealName
realName
=
adamRealNameMapper
.
selectOne
(
Wrappers
.
lambdaQuery
(
AdamRealName
.
class
)
.
eq
(
AdamRealName:
:
getUid
,
uid
)
.
eq
(
AdamRealName:
:
getState
,
1
)
.
orderByDesc
(
AdamRealName:
:
getMid
)
.
last
(
"limit 1"
)
);
if
(
realName
!=
null
)
{
vo
.
setRealName
(
StringUtils
.
defaultString
(
realName
.
getName
()));
vo
.
setIdCard
(
maskIdCard
(
realName
.
getIdCard
()));
}
else
{
vo
.
setRealName
(
""
);
vo
.
setIdCard
(
""
);
}
List
<
AdamCaomeiPassportUserBadgeDto
>
badgeRows
=
adamCaomeiPassportMapper
.
selectUserBadgesByUid
(
uid
);
vo
.
setBadges
(
badgeRows
.
stream
().
map
(
b
->
{
AdamCaomeiPassportBadgeItemVo
item
=
new
AdamCaomeiPassportBadgeItemVo
();
item
.
setBadgeId
(
b
.
getBadgeId
());
item
.
setBadgeName
(
b
.
getBadgeName
());
item
.
setIcon
(
b
.
getIcon
());
item
.
setClaimedAt
(
b
.
getClaimedAt
());
item
.
setSource
(
b
.
getSource
());
return
item
;
}).
collect
(
Collectors
.
toList
()));
return
vo
;
}
@Override
public
boolean
unbindPassport
(
String
passportNo
)
{
if
(
StringUtils
.
isBlank
(
passportNo
))
{
return
false
;
}
AdamCaomeiPassport
passport
=
adamCaomeiPassportMapper
.
selectOne
(
Wrappers
.
lambdaQuery
(
AdamCaomeiPassport
.
class
)
.
eq
(
AdamCaomeiPassport:
:
getPassportNo
,
passportNo
.
trim
())
);
if
(
passport
==
null
)
{
return
false
;
}
if
(
passport
.
getStatus
()
==
null
||
passport
.
getStatus
()
!=
1
)
{
return
false
;
}
Date
now
=
new
Date
();
passport
.
setStatus
(
0
);
passport
.
setUserId
(
""
);
passport
.
setUnboundAt
(
now
);
passport
.
setUpdatedAt
(
now
);
return
adamCaomeiPassportMapper
.
updateById
(
passport
)
>
0
;
}
private
static
String
maskMobile
(
String
mobile
)
{
if
(
StringUtils
.
isBlank
(
mobile
))
{
return
""
;
}
if
(
mobile
.
length
()
>=
11
)
{
return
mobile
.
substring
(
0
,
3
)
+
"****"
+
mobile
.
substring
(
7
);
}
return
mobile
;
}
private
static
String
maskIdCard
(
String
idCard
)
{
if
(
StringUtils
.
isBlank
(
idCard
))
{
return
""
;
}
if
(
idCard
.
length
()
>
8
)
{
return
idCard
.
substring
(
0
,
4
)
+
"****"
+
idCard
.
substring
(
idCard
.
length
()
-
4
);
}
return
"****"
;
}
}
liquidnet-bus-do/liquidnet-service-adam-do/src/main/java/com/liquidnet/service/adam/dto/AdamCaomeiPassportListDto.java
0 → 100644
View file @
abfb181d
package
com
.
liquidnet
.
service
.
adam
.
dto
;
import
lombok.Data
;
/**
* 护照管理列表行
*/
@Data
public
class
AdamCaomeiPassportListDto
{
private
Long
mid
;
private
String
passportNo
;
private
String
nickname
;
private
String
realName
;
private
String
mobile
;
private
String
idCard
;
/** 0-未绑定 1-已绑定 2-已作废 */
private
Integer
bindStatus
;
private
Integer
claimedBadgeCount
;
}
liquidnet-bus-do/liquidnet-service-adam-do/src/main/java/com/liquidnet/service/adam/dto/AdamCaomeiPassportUserBadgeDto.java
0 → 100644
View file @
abfb181d
package
com
.
liquidnet
.
service
.
adam
.
dto
;
import
lombok.Data
;
import
java.util.Date
;
@Data
public
class
AdamCaomeiPassportUserBadgeDto
{
private
String
badgeId
;
private
String
badgeName
;
private
String
icon
;
private
Date
claimedAt
;
private
Integer
source
;
}
liquidnet-bus-do/liquidnet-service-adam-do/src/main/java/com/liquidnet/service/adam/entity/AdamCaomeiPassport.java
0 → 100644
View file @
abfb181d
package
com
.
liquidnet
.
service
.
adam
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* 草莓护照-实体编号表
*/
@Data
@TableName
(
"adam_caomei_passport"
)
public
class
AdamCaomeiPassport
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@TableId
(
value
=
"mid"
,
type
=
IdType
.
AUTO
)
private
Long
mid
;
private
String
passportNo
;
/**
* 绑定状态: 0-未绑定, 1-已绑定, 2-已作废
*/
private
Integer
status
;
private
String
userId
;
private
Date
boundAt
;
private
Date
unboundAt
;
private
String
batchNo
;
private
String
remark
;
private
Date
createdAt
;
private
Date
updatedAt
;
}
liquidnet-bus-do/liquidnet-service-adam-do/src/main/java/com/liquidnet/service/adam/mapper/AdamCaomeiPassportMapper.java
0 → 100644
View file @
abfb181d
package
com
.
liquidnet
.
service
.
adam
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.liquidnet.service.adam.dto.AdamCaomeiPassportListDto
;
import
com.liquidnet.service.adam.dto.AdamCaomeiPassportUserBadgeDto
;
import
com.liquidnet.service.adam.entity.AdamCaomeiPassport
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
public
interface
AdamCaomeiPassportMapper
extends
BaseMapper
<
AdamCaomeiPassport
>
{
List
<
AdamCaomeiPassportListDto
>
selectPassportAdminList
(
@Param
(
"passportNo"
)
String
passportNo
,
@Param
(
"userName"
)
String
userName
,
@Param
(
"mobile"
)
String
mobile
,
@Param
(
"idCard"
)
String
idCard
,
@Param
(
"bindStatus"
)
Integer
bindStatus
);
List
<
AdamCaomeiPassportUserBadgeDto
>
selectUserBadgesByUid
(
@Param
(
"uid"
)
String
uid
);
}
liquidnet-bus-do/liquidnet-service-adam-do/src/main/resources/com/liquidnet/service/adam/mapper/AdamCaomeiPassportMapper.xml
0 → 100644
View file @
abfb181d
<?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.adam.mapper.AdamCaomeiPassportMapper"
>
<select
id=
"selectPassportAdminList"
resultType=
"com.liquidnet.service.adam.dto.AdamCaomeiPassportListDto"
>
SELECT
p.mid AS mid,
p.passport_no AS passportNo,
IFNULL(ui.nickname, '') AS nickname,
IFNULL(arn.name, '') AS realName,
CASE
WHEN u.mobile IS NULL OR u.mobile = '' THEN ''
WHEN CHAR_LENGTH(u.mobile)
>
= 11 THEN CONCAT(SUBSTRING(u.mobile, 1, 3), '****', SUBSTRING(u.mobile, 8, 4))
ELSE u.mobile
END AS mobile,
CASE
WHEN arn.id_card IS NULL OR arn.id_card = '' THEN ''
WHEN CHAR_LENGTH(arn.id_card)
>
8 THEN CONCAT(SUBSTRING(arn.id_card, 1, 4), '****', SUBSTRING(arn.id_card, CHAR_LENGTH(arn.id_card) - 3, 4))
ELSE '****'
END AS idCard,
p.status AS bindStatus,
IFNULL(bc.cnt, 0) AS claimedBadgeCount
FROM adam_caomei_passport p
LEFT JOIN adam_user u ON p.user_id = u.uid AND p.user_id
<>
''
LEFT JOIN adam_user_info ui ON p.user_id = ui.uid
LEFT JOIN (
SELECT r.uid, r.name, r.id_card
FROM adam_real_name r
INNER JOIN (
SELECT uid, MAX(mid) AS max_mid
FROM adam_real_name
WHERE state = 1
GROUP BY uid
) rm ON r.uid = rm.uid AND r.mid = rm.max_mid AND r.state = 1
) arn ON p.user_id = arn.uid
LEFT JOIN (
SELECT user_id, COUNT(1) AS cnt
FROM adam_caomei_user_badge
GROUP BY user_id
) bc ON p.user_id = bc.user_id
<where>
<if
test=
"passportNo != null and passportNo != ''"
>
AND p.passport_no LIKE CONCAT('%', #{passportNo}, '%')
</if>
<if
test=
"userName != null and userName != ''"
>
AND (ui.nickname LIKE CONCAT('%', #{userName}, '%') OR arn.name LIKE CONCAT('%', #{userName}, '%'))
</if>
<if
test=
"mobile != null and mobile != ''"
>
AND u.mobile LIKE CONCAT('%', #{mobile}, '%')
</if>
<if
test=
"idCard != null and idCard != ''"
>
AND arn.id_card LIKE CONCAT('%', #{idCard}, '%')
</if>
<if
test=
"bindStatus != null"
>
AND p.status = #{bindStatus}
</if>
</where>
<!-- 已绑定优先展示,避免仅按更新时间导致已绑定记录长期沉底 -->
ORDER BY (p.status = 1) DESC, p.updated_at DESC, p.mid DESC
</select>
<select
id=
"selectUserBadgesByUid"
resultType=
"com.liquidnet.service.adam.dto.AdamCaomeiPassportUserBadgeDto"
>
SELECT
ub.badge_id AS badgeId,
IFNULL(b.name, '') AS badgeName,
IFNULL(b.icon, '') AS icon,
ub.created_at AS claimedAt,
ub.source AS source
FROM adam_caomei_user_badge ub
LEFT JOIN adam_caomei_badge b ON ub.badge_id = b.badge_id
WHERE ub.user_id = #{uid}
ORDER BY ub.created_at DESC
</select>
</mapper>
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