中国加油,武汉加油!
篇幅较长,请配合目录观看
项目准备
1. 好友列表展示-后端
1.1 weixin-entity修改User类和Friend
// User
private String pinyin;
// Friend
@TableField(exist = false)
private User friendObj;
1.2 t_user添加pinyin字段
1.3 weixin-service-api定义方法
List<Friend> getFriendListByUid(Integer uid);
1.4 weixin-friend的FriendServiceImpl重写方法
@Override
public List<Friend> getFriendListByUid(Integer uid) {
EntityWrapper wrapper = new EntityWrapper();
wrapper.eq("uid",uid);
return friendMapper.selectList(wrapper);
}
1.5 编写FriendController
package com.wpj.controller;
import com.wpj.entity.Friend;
import com.wpj.entity.base.ResultEntity;
import com.wpj.service.IFriendService;
import com.wpj.service.api.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping(value = "/friend")
public class FriendController {
@Autowired
private IFriendService friendService;
@Autowired
private IUserService userService;
@RequestMapping(value = "/getFriendListByUid")
public ResultEntity getFriendListByUid(Integer uid ) {
List<Friend> friendList = friendService.getFriendListByUid(uid);
for(Friend f:friendList){
f.setFriendObj(userService.getUserById(f.getFid()));
}
return ResultEntity.success(friendList);
}
}
1.6 映射路径
2. 好友列表展示-前端
2.2 修改weixin-utils.js
window.url={
register_url:ip.serverip+"user/register",
login_url:ip.serverip+"user/login",
upload_head_url:ip.serverip+"res/uploadFile",
getuserbyusername_url:ip.serverip+"user/getUserByUsername",
friendapply_add_url:ip.serverip+"friendApply/addFriendApply",
getMyFriendApplyList_url:ip.serverip+"friendApply/getMyFriendApplyList",
updateFriendApplyStatus_url:ip.serverip+"friendApply/updateFriendApplyStatus",
getFriendListByUid_url:ip.serverip+"friend/getFriendListByUid"
}
2.2 引入mui.indexedlist.css和mui.indexedlist.js
2.3 编写friend.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title></title>
<link href="css/mui.min.css" rel="stylesheet" />
<link href="css/mui.indexedlist.css" rel="stylesheet" />
<style>
html,body {
height: 100%;
overflow: hidden;
}
.mui-bar {
-webkit-box-shadow: none;
box-shadow: none;
}
.mui-table-view-divider{
display: none;
}
</style>
</head>
<body>
<header class="mui-bar mui-bar-nav">
<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
<h1 class="mui-title">好友列表</h1>
</header>
<div class="mui-content">
<div id='list' class="mui-indexed-list">
<div class="mui-indexed-list-search mui-input-row mui-search">
<input type="search" class="mui-input-clear mui-indexed-list-search-input" placeholder="搜索好友">
</div>
<div class="mui-indexed-list-bar">
<a>A</a>
<a>B</a>
<a>C</a>
<a>D</a>
<a>E</a>
<a>F</a>
<a>G</a>
<a>H</a>
<a>I</a>
<a>J</a>
<a>K</a>
<a>L</a>
<a>M</a>
<a>N</a>
<a>O</a>
<a>P</a>
<a>Q</a>
<a>R</a>
<a>S</a>
<a>T</a>
<a>U</a>
<a>V</a>
<a>W</a>
<a>X</a>
<a>Y</a>
<a>Z</a>
</div>
<div class="mui-indexed-list-alert"></div>
<div class="mui-indexed-list-inner">
<div class="mui-indexed-list-empty-alert">没有数据</div>
<ul class="mui-table-view" id="refreshContainer">
<li id="py_a" data-group="A" class="mui-table-view-divider mui-indexed-list-group">A</li>
<li id="py_b" data-group="B" class="mui-table-view-divider mui-indexed-list-group">B</li>
<li id="py_c" data-group="C" class="mui-table-view-divider mui-indexed-list-group">C</li>
<li id="py_d" data-group="D" class="mui-table-view-divider mui-indexed-list-group">D</li>
<li id="py_e" data-group="E" class="mui-table-view-divider mui-indexed-list-group">E</li>
<li id="py_f" data-group="F" class="mui-table-view-divider mui-indexed-list-group">F</li>
<li id="py_g" data-group="G" class="mui-table-view-divider mui-indexed-list-group">G</li>
<li id="py_h" data-group="H" class="mui-table-view-divider mui-indexed-list-group">H</li>
<li id="py_j" data-group="J" class="mui-table-view-divider mui-indexed-list-group">J</li>
<li id="py_k" data-group="K" class="mui-table-view-divider mui-indexed-list-group">K</li>
<li id="py_l" data-group="L" class="mui-table-view-divider mui-indexed-list-group">L</li>
<li id="py_m" data-group="M" class="mui-table-view-divider mui-indexed-list-group">M</li>
<li id="py_n" data-group="N" class="mui-table-view-divider mui-indexed-list-group">N</li>
<li id="py_p" data-group="P" class="mui-table-view-divider mui-indexed-list-group">P</li>
<li id="py_q" data-group="Q" class="mui-table-view-divider mui-indexed-list-group">Q</li>
<li id="py_r" data-group="R" class="mui-table-view-divider mui-indexed-list-group">R</li>
<li id="py_s" data-group="S" class="mui-table-view-divider mui-indexed-list-group">S</li>
<li id="py_t" data-group="T" class="mui-table-view-divider mui-indexed-list-group">T</li>
<li id="py_w" data-group="W" class="mui-table-view-divider mui-indexed-list-group">W</li>
<li id="py_x" data-group="X" class="mui-table-view-divider mui-indexed-list-group">X</li>
<li id="py_y" data-group="Y" class="mui-table-view-divider mui-indexed-list-group">Y</li>
<li id="py_z" data-group="Z" class="mui-table-view-divider mui-indexed-list-group">Z</li>
</ul>
</div>
</div>
</div>
<script src="js/weixin-utils.js"></script>
<script src="js/mui.min.js"></script>
<script src="js/mui.indexedlist.js"></script>
<script type="text/javascript" charset="utf-8">
mui.ready(function() {
var header = document.querySelector('header.mui-bar');
var list = document.getElementById('list');
//calc hieght
list.style.height = (document.body.offsetHeight - header.offsetHeight) + 'px';
//create
window.indexedList = new mui.IndexedList(list);
});
mui.plusReady(function () {
var user = util.getUser();
// 查询用户的好友
util.ajax({
url:url.getFriendListByUid_url,
data:{
"uid":user.id
},
success:function(resp){
if(resp.code =="ok"){
// 获取好友的列表
var fList = resp.data;
for(var i =0;i<fList.length;i++){
var f = fList[i]; // 好友的记录对象
var fObj = f.friendObj; // 好友对象
var fpy = fObj.pinyin; // 好友的拼音
var pyIndex = fpy.substring(0,1);
console.log(pyIndex)
var liEle = document.getElementById("py_"+pyIndex);
if(liEle){
console.log(liEle)
// 显示好友的索引
liEle.style.display="block";
var html = "";
html+='<li class="mui-table-view-cell mui-media" >';
html+='<a href="javascript:;" fid ="'+fObj.id+'">';
if(fObj.minHead){
html+='<img class="mui-media-object mui-pull-left" src="'+fObj.minHead+'">';
}else{
html+='<img class="mui-media-object mui-pull-left" src="image/myheader.png">';
}
html+='<div class="mui-media-body">';
if(f.remark){
html+=f.remark;
}else{
html+=fObj.nickname;
}
html+='</div>';
html+='</a>';
html+='</li>';
liEle.insertAdjacentHTML("beforeend",html);
}
}
}
}
})
})
</script>
</body>
</html>
3. 好友列表刷新-前端
3.1 修改weixin-utils.js
setFriendList:function(fList){
plus.storage.setItem("friendList",JSON.stringify(fList));
},
getFriendList:function(){
return JSON.parse(plus.storage.getItem("friendList"));
}
3.2 修改friend.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title></title>
<link href="css/mui.min.css" rel="stylesheet" />
<link href="css/mui.indexedlist.css" rel="stylesheet" />
<style>
html,
body {
height: 100%;
overflow: hidden;
}
.mui-bar {
-webkit-box-shadow: none;
box-shadow: none;
}
.mui-table-view-divider{
display: none;
}
</style>
</head>
<body>
<header class="mui-bar mui-bar-nav">
<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
<h1 class="mui-title">indexed list(索引列表)</h1>
</header>
<div class="mui-content">
<div id='list' class="mui-indexed-list">
<div class="mui-indexed-list-search mui-input-row mui-search">
<input type="search" class="mui-input-clear mui-indexed-list-search-input" placeholder="搜索机场">
</div>
<div class="mui-indexed-list-bar">
<a>A</a>
<a>B</a>
<a>C</a>
<a>D</a>
<a>E</a>
<a>F</a>
<a>G</a>
<a>H</a>
<a>I</a>
<a>J</a>
<a>K</a>
<a>L</a>
<a>M</a>
<a>N</a>
<a>O</a>
<a>P</a>
<a>Q</a>
<a>R</a>
<a>S</a>
<a>T</a>
<a>U</a>
<a>V</a>
<a>W</a>
<a>X</a>
<a>Y</a>
<a>Z</a>
</div>
<div class="mui-indexed-list-alert"></div>
<div class="mui-indexed-list-inner">
<div class="mui-indexed-list-empty-alert">没有数据</div>
<ul class="mui-table-view" id="refreshContainer">
<li id="py_a" data-group="A" class="mui-table-view-divider mui-indexed-list-group">A</li>
<li id="py_b" data-group="B" class="mui-table-view-divider mui-indexed-list-group">B</li>
<li id="py_c" data-group="C" class="mui-table-view-divider mui-indexed-list-group">C</li>
<li id="py_d" data-group="D" class="mui-table-view-divider mui-indexed-list-group">D</li>
<li id="py_e" data-group="E" class="mui-table-view-divider mui-indexed-list-group">E</li>
<li id="py_f" data-group="F" class="mui-table-view-divider mui-indexed-list-group">F</li>
<li id="py_g" data-group="G" class="mui-table-view-divider mui-indexed-list-group">G</li>
<li id="py_h" data-group="H" class="mui-table-view-divider mui-indexed-list-group">H</li>
<li id="py_j" data-group="J" class="mui-table-view-divider mui-indexed-list-group">J</li>
<li id="py_k" data-group="K" class="mui-table-view-divider mui-indexed-list-group">K</li>
<li id="py_l" data-group="L" class="mui-table-view-divider mui-indexed-list-group">L</li>
<li id="py_m" data-group="M" class="mui-table-view-divider mui-indexed-list-group">M</li>
<li id="py_n" data-group="N" class="mui-table-view-divider mui-indexed-list-group">N</li>
<li id="py_p" data-group="P" class="mui-table-view-divider mui-indexed-list-group">P</li>
<li id="py_q" data-group="Q" class="mui-table-view-divider mui-indexed-list-group">Q</li>
<li id="py_r" data-group="R" class="mui-table-view-divider mui-indexed-list-group">R</li>
<li id="py_s" data-group="S" class="mui-table-view-divider mui-indexed-list-group">S</li>
<li id="py_t" data-group="T" class="mui-table-view-divider mui-indexed-list-group">T</li>
<li id="py_w" data-group="W" class="mui-table-view-divider mui-indexed-list-group">W</li>
<li id="py_x" data-group="X" class="mui-table-view-divider mui-indexed-list-group">X</li>
<li id="py_y" data-group="Y" class="mui-table-view-divider mui-indexed-list-group">Y</li>
<li id="py_z" data-group="Z" class="mui-table-view-divider mui-indexed-list-group">Z</li>
</ul>
</div>
</div>
</div>
<script src="js/weixin_utils.js"></script>
<script src="js/mui.min.js"></script>
<script src="js/mui.indexedlist.js"></script>
<script type="text/javascript" charset="utf-8">
mui.init({
pullRefresh : {
container:"#refreshContainer",//下拉刷新容器标识,querySelector能定位的css选择器均可,比如:id、.class等
down : {
style:'circle',//必选,下拉刷新样式,目前支持原生5+ ‘circle’ 样式
auto: false,//可选,默认false.首次加载自动上拉刷新一次
callback :refreshFriendList //必选,刷新函数,根据具体业务来编写,比如通过ajax从服务器获取新数据;
}
}
});
function refreshFriendList(){
// 在刷新之前要删除当前的好友
var list = document.querySelectorAll(".mui-table-view-cell");
for(var i =0;i<list.length;i++){
console.info(list[i]);
list[i].remove();
}
ajaxFriendList();
mui('#refreshContainer').pullRefresh().endPulldown();
}
mui.ready(function() {
var header = document.querySelector('header.mui-bar');
var list = document.getElementById('list');
//calc hieght
list.style.height = (document.body.offsetHeight - header.offsetHeight) + 'px';
//create
window.indexedList = new mui.IndexedList(list);
});
mui.plusReady(function () {
// 获取本地的好友列表
var fList = util.getFriendList();
// 显示
if(fList){
showFriedList(fList);
}else{
ajaxFriendList();
}
function ajaxFriendList(){
var user = util.getUser();
// 查询用户的好友
util.ajax({
url:url.getFriendListByUid_url,
data:{
"uid":user.id
},
success:function(resp){
console.info("resp:"+JSON.stringify(resp))
if(resp.code =="ok"){
// 获取好友的列表
var fList = resp.data;
// 保存到本地
util.setFriendList(fList);
showFriedList(fList);
}
}
})
}
function showFriedList(fList){
for(var i =0;i<fList.length;i++){
var f = fList[i]; // 好友的记录对象
var fObj = f.friendObj; // 好友对象
var fpy = fObj.pinyin; // 好友的拼音
var pyIndex = fpy.substring(0,1);
var liEle = document.getElementById("py_"+pyIndex);
if(liEle){
// 显示好友的索引
liEle.style.display="block";
var html = "";
html+='<li class="mui-table-view-cell mui-media" >';
html+='<a href="javascript:;" fid ="'+fObj.id+'">';
if(fObj.minHead){
html+='<img class="mui-media-object mui-pull-left" src="'+fObj.minHead+'">';
}else{
html+='<img class="mui-media-object mui-pull-left" src="image/myheader.png">';
}
html+='<div class="mui-media-body">';
if(f.remark){
html+=f.remark;
}else{
html+=fObj.nickname;
}
html+='</div>';
html+='</a>';
html+='</li>';
liEle.insertAdjacentHTML("beforeend",html);
}
}
}
</script>
</body>
</html>