会员管理查询

master
382696293@qq.com 2 years ago
parent ff3b36036c
commit 22897f01e3

@ -3,6 +3,7 @@ package com.flossom.common.core.domain.req;
import com.flossom.common.core.web.domain.BaseEntity; import com.flossom.common.core.web.domain.BaseEntity;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* *
@ -18,7 +19,7 @@ public class WxUserMemberVm extends BaseEntity {
private String id; private String id;
/** /**
* *
*/ */
private String nickname; private String nickname;
@ -77,12 +78,12 @@ public class WxUserMemberVm extends BaseEntity {
private Date endTime; private Date endTime;
/** /**
* *
*/ */
private Integer deviceNumStart; private Integer deviceNumStart;
/** /**
* *
*/ */
private Integer deviceNumEnd; private Integer deviceNumEnd;
@ -93,14 +94,17 @@ public class WxUserMemberVm extends BaseEntity {
/** /**
* *
*/ */
List<Integer> purchaseChannels;
/** /**
* *
*/ */
List<Integer> wecomTags;
/** /**
* *
*/ */
List<Integer> miniProgramTags;
public WxUserMemberVm() { public WxUserMemberVm() {
} }
@ -231,4 +235,28 @@ public class WxUserMemberVm extends BaseEntity {
public void setDeviceNumEnd(Integer deviceNumEnd) { public void setDeviceNumEnd(Integer deviceNumEnd) {
this.deviceNumEnd = deviceNumEnd; this.deviceNumEnd = deviceNumEnd;
} }
public List<Integer> getPurchaseChannels() {
return purchaseChannels;
}
public void setPurchaseChannels(List<Integer> purchaseChannels) {
this.purchaseChannels = purchaseChannels;
}
public List<Integer> getWecomTags() {
return wecomTags;
}
public void setWecomTags(List<Integer> wecomTags) {
this.wecomTags = wecomTags;
}
public List<Integer> getMiniProgramTags() {
return miniProgramTags;
}
public void setMiniProgramTags(List<Integer> miniProgramTags) {
this.miniProgramTags = miniProgramTags;
}
} }

@ -41,6 +41,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select id, nickname, headimg, username, credit, openid, unionid, user_type, level, mobile, province_id, city_id, area_id, province, city, area, birthday, clock, activity, wechat, is_abutment, login_time, is_complete_information, devices_num, status, create_by, create_time, update_by, update_time, remark from wx_user_member select id, nickname, headimg, username, credit, openid, unionid, user_type, level, mobile, province_id, city_id, area_id, province, city, area, birthday, clock, activity, wechat, is_abutment, login_time, is_complete_information, devices_num, status, create_by, create_time, update_by, update_time, remark from wx_user_member
</sql> </sql>
<sql id="fieldList">
member.id, member.nickname, member.headimg, member.username, member.credit, member.openid, member.unionid, member.user_type, member.level, member.mobile,
member.province_id, member.city_id, member.area_id, member.province, member.city, member.area, member.birthday, member.clock, member.activity,
member.wechat, member.is_abutment, member.login_time, member.is_complete_information, member.devices_num, member.status, member.create_by,
member.create_time, member.update_by, member.update_time, member.remark
FROM wx_user_member as member
</sql>
<select id="selectWxUserMemberList" parameterType="WxUserMember" resultMap="WxUserMemberResult"> <select id="selectWxUserMemberList" parameterType="WxUserMember" resultMap="WxUserMemberResult">
<include refid="selectWxUserMemberVo"/> <include refid="selectWxUserMemberVo"/>
<where> <where>
@ -82,36 +90,64 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="selectWxUserMemberListByVm" parameterType="WxUserMemberVm" resultMap="WxUserMemberResult"> <select id="selectWxUserMemberListByVm" parameterType="WxUserMemberVm" resultMap="WxUserMemberResult">
<include refid="selectWxUserMemberVo"/> SELECT <include refid="fieldList" />
<where> <where>
<if test="id!=null and id !=''"> <if test="id!=null and id !=''">
and and
<foreach collection="id.split(',')" index="index" item="item" open="(" separator="OR" <foreach collection="id.split(',')" index="index" item="item" open="(" separator="OR"
close=")"> close=")">
id = #{item} member.id = #{item}
</foreach> </foreach>
</if> </if>
<if test="nickname != null and nickname != ''"> and nickname like concat('%', #{nickname}, '%')</if> <if test="nickname != null and nickname != ''"> and member.nickname like concat('%', #{nickname}, '%')</if>
<if test="creditStart != null and creditEnd != null"> and credit &gt;= #{creditStart} and credit &lt;= #{creditEnd}</if> <if test="creditStart != null and creditEnd != null"> and member.credit &gt;= #{creditStart} and member.credit &lt;= #{creditEnd}</if>
<if test="userType != null "> and user_type = #{userType}</if> <if test="userType != null "> and member.user_type = #{userType}</if>
<if test="mobile!=null and mobile !=''"> <if test="mobile!=null and mobile !=''">
and and
<foreach collection="mobile.split(',')" index="index" item="item" open="(" separator="OR" <foreach collection="mobile.split(',')" index="index" item="item" open="(" separator="OR"
close=")"> close=")">
mobile like concat('%', #{item}, '%') member.mobile like concat('%', #{item}, '%')
</foreach> </foreach>
</if> </if>
<if test="provinceId != null and provinceId != ''"> and province = #{provinceId}</if> <if test="provinceId != null and provinceId != ''"> and member.province_id = #{provinceId}</if>
<if test="cityId != null and cityId != ''"> and city = #{cityId}</if> <if test="cityId != null and cityId != ''"> and member.city_id = #{cityId}</if>
<if test="areaId != null and areaId != ''"> and area = #{areaId}</if> <if test="areaId != null and areaId != ''"> and member.area_id = #{areaId}</if>
<if test="birthday != null "> and birthday = #{birthday}</if> <if test="birthday != null "> and member.birthday = #{birthday}</if>
<if test="params.beginTime != null and params.beginTime != ''"> <if test="params.beginTime != null and params.beginTime != ''">
and create_time &gt;= #{params.beginTime} and member.create_time &gt;= #{params.beginTime}
</if> </if>
<if test="params.endTime != null and params.endTime != ''"> <if test="params.endTime != null and params.endTime != ''">
and create_time &lt;= #{params.endTime} and member.create_time &lt;= #{params.endTime}
</if>
<if test="deviceNumStart != null and deviceNumEnd != null"> and member.devices_num &gt;= #{deviceNumStart} and member.devices_num &lt;= #{deviceNumEnd}</if>
<if test="wecomTags != null and wecomTags.size > 0" >
and id in (
SELECT
DISTINCT user_id
FROM
wx_user_tag
WHERE
tag_id IN
<foreach item="wecomTag" collection="wecomTags" open="(" separator="," close=")">
#{wecomTag}
</foreach>
)
</if>
<if test="miniProgramTags != null and miniProgramTags.size > 0" >
and id in (
SELECT
DISTINCT user_id
FROM
wx_user_tag
WHERE
tag_id IN
<foreach item="miniProgramTag" collection="miniProgramTags" open="(" separator="," close=")">
#{miniProgramTag}
</foreach>
)
</if> </if>
and status = 0 and member.status = 0
</where> </where>
</select> </select>

@ -2,6 +2,7 @@ package com.flossom.system.controller;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.flossom.common.core.domain.R;
import com.flossom.common.core.domain.entity.SysRegion; import com.flossom.common.core.domain.entity.SysRegion;
import com.flossom.common.core.utils.poi.ExcelUtil; import com.flossom.common.core.utils.poi.ExcelUtil;
import com.flossom.common.core.web.controller.BaseController; import com.flossom.common.core.web.controller.BaseController;
@ -11,14 +12,7 @@ import com.flossom.common.log.annotation.Log;
import com.flossom.common.log.enums.BusinessType; import com.flossom.common.log.enums.BusinessType;
import com.flossom.common.security.annotation.RequiresPermissions; import com.flossom.common.security.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.flossom.system.service.ISysRegionService; import com.flossom.system.service.ISysRegionService;
import java.util.List; import java.util.List;
@ -97,4 +91,12 @@ public class SysRegionController extends BaseController {
public AjaxResult remove(@PathVariable Long[] ids) { public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(sysRegionService.deleteSysRegionByIds(ids)); return toAjax(sysRegionService.deleteSysRegionByIds(ids));
} }
/**
*
*/
@GetMapping("/getRegionByPid")
public R getRegionByPid(@RequestParam(value = "pid",required = false) Long pid) {
return R.ok(sysRegionService.getRegionByPid(pid));
}
} }

@ -60,4 +60,6 @@ public interface ISysRegionService {
* @return * @return
*/ */
public int deleteSysRegionById(Long id); public int deleteSysRegionById(Long id);
List<SysRegion> getRegionByPid(Long pid);
} }

@ -85,4 +85,12 @@ public class SysRegionServiceImpl implements ISysRegionService {
public int deleteSysRegionById(Long id) { public int deleteSysRegionById(Long id) {
return sysRegionMapper.deleteSysRegionById(id); return sysRegionMapper.deleteSysRegionById(id);
} }
@Override
public List<SysRegion> getRegionByPid(Long pid) {
if (pid == null) {
pid = 0L;
}
return sysRegionMapper.selectSysAreaByPid(pid.intValue());
}
} }

@ -71,4 +71,12 @@ export function getPurchaseChannel() {
}) })
} }
export function getRegionByPid(pid) {
return request({
url: '/system/region/getRegionByPid',
method: 'get',
params: {
pid : pid
}
})
}

@ -47,21 +47,33 @@
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="省" prop="provinceId"> <el-form-item label="省" prop="provinceId">
<el-select v-model="queryParams.provinceId" @keyup.enter.native="handleQuery"> <el-select v-model="queryParams.provinceId" @change="getCityList(queryParams.provinceId)" @keyup.enter.native="handleQuery" filterable clearable>
<el-option label="广东省" value="19"></el-option> <el-option
<el-option label="湖南省" value="18"></el-option> v-for="item in provinceList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="市" prop="cityId"> <el-form-item label="市" prop="cityId">
<el-select v-model="queryParams.cityId" @keyup.enter.native="handleQuery"> <el-select v-model="queryParams.cityId" @change="getAreaByPid(queryParams.cityId)" @keyup.enter.native="handleQuery" filterable clearable placeholder="请选择省">
<el-option label="广州市" value="234"></el-option> <el-option
<el-option label="珠海市" value="237"></el-option> v-for="item in cityList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="区" prop="areaId"> <el-form-item label="区" prop="areaId">
<el-select v-model="queryParams.areaId" @keyup.enter.native="handleQuery"> <el-select v-model="queryParams.areaId" @keyup.enter.native="handleQuery" filterable clearable placeholder="请选择市">
<el-option label="天河区" value="2314"></el-option> <el-option
<el-option label="黄埔区" value="2317"></el-option> v-for="item in areaList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="用户注册时间" prop="createTime"> <el-form-item label="用户注册时间" prop="createTime">
@ -75,29 +87,29 @@
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="仪器数量" prop="credit"> <el-form-item label="仪器数量" prop="credit">
<el-input-number v-model="queryParams.devicesNumStart" @keyup.enter.native="handleQuery"></el-input-number> <el-input-number v-model="queryParams.deviceNumStart" @keyup.enter.native="handleQuery"></el-input-number>
<el-input-number v-model="queryParams.devicesNumEnd" @keyup.enter.native="handleQuery"></el-input-number> <el-input-number v-model="queryParams.deviceNumEnd" @keyup.enter.native="handleQuery"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="积分范围" prop="credit"> <el-form-item label="积分范围" prop="credit">
<el-input-number v-model="queryParams.creditStart" @keyup.enter.native="handleQuery"></el-input-number> <el-input-number v-model="queryParams.creditStart" @keyup.enter.native="handleQuery"></el-input-number>
<el-input-number v-model="queryParams.creditEnd" @keyup.enter.native="handleQuery"></el-input-number> <el-input-number v-model="queryParams.creditEnd" @keyup.enter.native="handleQuery"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="仪器绑定" prop="devicesTags"> <!-- <el-form-item label="仪器绑定" prop="devicesTags">-->
<el-select v-model="queryParams.devicesTags" multiple placeholder="请选择"> <!-- <el-select v-model="queryParams.devicesTags" multiple placeholder="请选择">-->
<el-option <!-- <el-option-->
v-for="item in devicesTags" <!-- v-for="item in devicesTags"-->
:key="item.value" <!-- :key="item.value"-->
:label="item.label" <!-- :label="item.label"-->
:value="item.value"> <!-- :value="item.value">-->
</el-option> <!-- </el-option>-->
</el-select> <!-- </el-select>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="购买渠道" prop="purchaseChannel"> <el-form-item label="购买渠道" prop="purchaseChannels">
<el-select v-model="queryParams.purchaseChannel" multiple placeholder="请选择"> <el-select v-model="queryParams.purchaseChannels" multiple placeholder="请选择">
<el-option <el-option
v-for="item in purchaseChannel" v-for="item in purchaseChannels"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value"> :value="item.value">
@ -107,7 +119,7 @@
<el-form-item label="企微标签" prop="wecomTags"> <el-form-item label="企微标签" prop="wecomTags">
<el-select v-model="queryParams.wecomTags" multiple placeholder="请选择"> <el-select v-model="queryParams.wecomTags" multiple placeholder="请选择">
<el-option <el-option
v-for="item in miniProgramTags" v-for="item in wecomTags"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value"> :value="item.value">
@ -117,7 +129,7 @@
<el-form-item label="小程序标签" prop="miniProgramTags"> <el-form-item label="小程序标签" prop="miniProgramTags">
<el-select v-model="queryParams.miniProgramTags" multiple placeholder="请选择"> <el-select v-model="queryParams.miniProgramTags" multiple placeholder="请选择">
<el-option <el-option
v-for="item in wecomTags" v-for="item in miniProgramTags"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value"> :value="item.value">
@ -178,7 +190,9 @@
<el-table v-loading="loading" :data="memberList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="memberList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="头像" align="center" prop="headimg" /> <el-table-column label="头像" align="center">
<el-avatar shape="circle" :size="50" :src="headimg"/>
</el-table-column>
<el-table-column label="会员昵称" align="center" prop="nickname" /> <el-table-column label="会员昵称" align="center" prop="nickname" />
<el-table-column label="用户编号" align="center" prop="id" /> <el-table-column label="用户编号" align="center" prop="id" />
<el-table-column label="手机号码" align="center" prop="mobile" /> <el-table-column label="手机号码" align="center" prop="mobile" />
@ -342,6 +356,7 @@ import {
getMiniProgramTags, getMiniProgramTags,
getWecomTags, getWecomTags,
getPurchaseChannel, getPurchaseChannel,
getRegionByPid,
} from "@/api/system/member"; } from "@/api/system/member";
export default { export default {
@ -360,7 +375,10 @@ export default {
}], }],
miniProgramTags: [], miniProgramTags: [],
wecomTags: [], wecomTags: [],
purchaseChannel: null, purchaseChannels: null,
provinceList: null,
cityList: null,
areaList: null,
// //
loading: true, loading: true,
// //
@ -393,8 +411,8 @@ export default {
nickname: null, nickname: null,
headimg: null, headimg: null,
username: null, username: null,
devicesNumStart: undefined, deviceNumStart: undefined,
devicesNumEnd: undefined, deviceNumEnd: undefined,
creditStart: undefined, creditStart: undefined,
creditEnd: undefined, creditEnd: undefined,
openid: null, openid: null,
@ -424,7 +442,7 @@ export default {
devicesTags: [], // devicesTags: [], //
wecomTags:[], // wecomTags:[], //
miniProgramTags: [], // miniProgramTags: [], //
purchaseChannel: null, // purchaseChannels: [], //
}, },
// //
form: {}, form: {},
@ -440,6 +458,8 @@ export default {
this.getList(); this.getList();
// //
this.getTags(); this.getTags();
//
this.getProvinceList();
}, },
methods: { methods: {
/** 查询用户列表 */ /** 查询用户列表 */
@ -469,7 +489,27 @@ export default {
}) })
// //
getPurchaseChannel().then(Response => { getPurchaseChannel().then(Response => {
this.purchaseChannel = Response.data this.purchaseChannels = Response.data
})
},
//
getProvinceList() {
getRegionByPid(0).then(Response => {
this.provinceList = Response.data
})
},
getCityList(pid) {
console.log(pid);
getRegionByPid(pid).then(Response => {
console.log(Response.data)
this.cityList = Response.data
})
},
getAreaByPid(pid) {
console.log(pid);
getRegionByPid(pid).then(Response => {
console.log(Response.data)
this.areaList = Response.data
}) })
}, },
// //

Loading…
Cancel
Save