Commit 360ca116 authored by xc's avatar xc

查询优化

parent dae03958
......@@ -78,8 +78,6 @@
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-test:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.xmlunit:xmlunit-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
<orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" />
......@@ -179,5 +177,6 @@
<orderEntry type="library" name="Maven: cglib:cglib:3.1" level="project" />
<orderEntry type="library" name="Maven: org.ow2.asm:asm:4.2" level="project" />
<orderEntry type="library" name="Maven: org.ehcache:ehcache:3.6.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-features:1.7.1" level="project" />
</component>
</module>
\ No newline at end of file
......@@ -20,5 +20,6 @@ public interface PayRecordMapper extends BaseMapper<PayRecord> {
List<PayRecord> getById(@Param("userId") Integer userId);
List<PayRecord> getByIds(@Param("ids") String ids);
}
......@@ -53,6 +53,8 @@ public interface UsersMapper extends BaseMapper<User> {
List<User> getList(Map<String, Object> map);
List<User> getListQuery(Map<String, Object> map);
Integer getUserNumbers(Map<String, Object> map);
User getByPhone(@Param("phone") String phone);
......
......@@ -103,5 +103,17 @@
</where>
</select>
<select id="getByIds" resultMap="advertisingMap">
select
<include refid="cols_all"/>
from
<include refid="table"/>
<where>
FIND_IN_SET(user_id,#{ids})
and
result=0
</where>
</select>
</mapper>
......@@ -19,6 +19,14 @@
<result column="is_vip" property="isVip"/>
<result column="openid" property="openid"/>
<result column="vip_mobile" property="vipMobile"/>
<result column="last_login_time" property="lastLoginTime"/>
</resultMap>
<resultMap extends="userMap" id="ExBaseResultMap" type="cn.wisenergy.model.app.User">
<result column="culture_grade" jdbcType="VARCHAR" property="cultureGrade" />
<result column="major_grade" jdbcType="VARCHAR" property="majorGrade" />
<result column="usable_limit" jdbcType="VARCHAR" property="usableLimit" />
<result column="type" jdbcType="VARCHAR" property="type" />
<result column="money" jdbcType="VARCHAR" property="money" />
</resultMap>
<sql id="table">
......@@ -141,6 +149,29 @@
</where>
</select>
<select id="getListQuery" parameterType="map" resultMap="ExBaseResultMap">
SELECT u.id, u.user_name, u.PASSWORD, u.phone, u.uuid, u.head_image, u.sex, u.school, u.exam_type, u.source, u.is_delete, u.create_time,
u.update_time, u.is_vip, u.openid, u.vip_mobile,u.last_login_time,
s.culture_grade, s.major_grade, ul.usable_limit
FROM `user` u LEFT JOIN score s ON s.user_id = u.id
LEFT JOIN user_limit ul ON ul.user_id = u.id
LEFT JOIN pay_record pr ON pr.user_id = u.id AND result = 0
<where>
is_delete=0 and is_vip = 2
<if test="startTime != null and startTime !=''">
and create_time
between #{startTime}
</if>
<if test="endTime != null and endTime !=''">and #{endTime}</if>
<if test="userName != null and userName !=''">and user_name like ('%' #{userName} '%')</if>
<if test="phone != null and phone !=''">and phone like ('%' #{phone} '%')</if>
order by create_time desc
<if test="pageNo != null">
limit #{pageNo},#{pageSize}
</if>
</where>
</select>
<select id="getUserNumbers" resultType="java.lang.Integer">
SELECT COUNT(id)
FROM
......
......@@ -82,8 +82,6 @@
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-test:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.xmlunit:xmlunit-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
<orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" />
......@@ -180,5 +178,6 @@
<orderEntry type="library" name="Maven: org.ow2.asm:asm:4.2" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: org.ehcache:ehcache:3.6.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-features:1.7.1" level="project" />
</component>
</module>
\ No newline at end of file
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.data.annotation.Transient;
import java.io.Serializable;
import java.util.Date;
......@@ -114,10 +115,40 @@ public class User implements Serializable {
@ApiModelProperty(name = "vipMobile", value = "vip电话号码")
private String vipMobile;
/**
* 最登录时间
/*
* 最近一次登录时间
*/
@ApiModelProperty(name = "lastLoginTime", value = "最登录时间")
@ApiModelProperty(name = "lastLoginTime", value = "最近一次登录时间")
private Date lastLoginTime;
/**
* 文化成绩
*/
@Transient
private String cultureGrade;
/**
* 专业成绩
*/
@Transient
private String majorGrade;
/**
* 专业成绩
*/
@Transient
private Integer usableLimit;
/**
* 充值类型 1:支付宝 2:微信 3:充值卡
*/
@Transient
private String type;
/**
* 充值金额
*/
@Transient
private String money;
}
......@@ -80,8 +80,6 @@
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-test:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.xmlunit:xmlunit-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
<orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" />
......@@ -178,5 +176,6 @@
<orderEntry type="library" name="Maven: org.ow2.asm:asm:4.2" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: org.ehcache:ehcache:3.6.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-features:1.7.1" level="project" />
</component>
</module>
\ No newline at end of file
......@@ -74,7 +74,6 @@ public class UserServiceImpl extends ServiceImpl<UsersMapper, User> implements U
Map<String, Object> map = new HashMap<>(4);
//将参数放入容器中
if (null!=queryVo.getPageNo()||null!=queryVo.getPageSize()){
map.put("pageNo", (queryVo.getPageNo() - 1) * queryVo.getPageSize());
map.put("pageSize", queryVo.getPageSize());
......@@ -85,75 +84,55 @@ public class UserServiceImpl extends ServiceImpl<UsersMapper, User> implements U
map.put("phone", queryVo.getPhone());
//查询用户数据
List<User> list1 = usersMapper.getList(map);
List<User> list1 = usersMapper.getListQuery(map);
String ids = "";
for(User user : list1){
ids += user.getId()+",";
}
map.put("ids", ids.substring(0,ids.length()-1));
List<PayRecord> byIds = payRecordMapper.getByIds(ids);
List<UserInfoDto> list = new ArrayList<>();
//将集合遍历拿出用户id查询成绩信息
for (User user : list1) {
UserInfoDto userInfoDto = new UserInfoDto();
//查询相关信息
ScoreInfo scoreInfo = scoreInfoMapper.getByUserId(user.getId());
if (null != scoreInfo) {
userInfoDto.setCultureGrade(scoreInfo.getCultureGrade().toString());
userInfoDto.setMajorGrade(null==scoreInfo.getMajorGrade()?"":scoreInfo.getMajorGrade().toString());
}
LoginRecord loginRecord = loginRecordMapper.getById(user.getId());
if (null != loginRecord) {
userInfoDto.setLastLoginTime(loginRecord.getUpdateTime());
userInfoDto.setIp(loginRecord.getIp());
}
UserLimit userLimit = userLimitMapper.getByUserId(user.getId());
if (null != userLimit) {
userInfoDto.setQueryLimit(userLimit.getUsableLimit());
}
List<PayRecord> byId = payRecordMapper.getById(user.getId());
//计算充值卡充值次数
int rechargeTimes = 0;
//支付宝充值总金额
Double alipayMoney = 0.00;
//微信充值总金额
Double weChatMoney = 0.00;
if (!CollectionUtils.isEmpty(byId)) {
for (PayRecord payRecord : byId) {
if (payRecord.getType() == 1) {
alipayMoney += null == payRecord.getMoney() ? 0 : payRecord.getMoney();
}
if (payRecord.getType() == 2) {
weChatMoney += null == payRecord.getMoney() ? 0 : payRecord.getMoney();
}
if (payRecord.getType() == 3) {
rechargeTimes += 1;
}
for(PayRecord payRecord : byIds) {
if (payRecord.getType() == 1) {
alipayMoney += null == payRecord.getMoney() ? 0 : payRecord.getMoney();
}
if (payRecord.getType() == 2) {
weChatMoney += null == payRecord.getMoney() ? 0 : payRecord.getMoney();
}
if (payRecord.getType() == 3) {
rechargeTimes += 1;
}
}
userInfoDto.setWeChatMoney(String.valueOf(weChatMoney));
userInfoDto.setAlipayMoney(String.valueOf(alipayMoney));
userInfoDto.setRechargeTimes(rechargeTimes);
userInfoDto.setQueryLimit(user.getUsableLimit());
//将消息进行同步
BeanUtils.copyProperties(user, userInfoDto);
userInfoDto.setUserId(user.getId());
userInfoDto.setRegisterTime(user.getCreateTime());
list.add(userInfoDto);
}
PageInfo<UserInfoDto> info = new PageInfo<>();
info.setPageSize(null==queryVo.getPageSize()?0:queryVo.getPageSize());
info.setPageNum(null==queryVo.getPageNo()?0:queryVo.getPageNo());
info.setTotal(usersMapper.getUserNumbers(map));
info.setList(list);
return R.ok(info);
//将消息进行同步
BeanUtils.copyProperties(user, userInfoDto);
userInfoDto.setUserId(user.getId());
userInfoDto.setRegisterTime(user.getCreateTime());
list.add(userInfoDto);
}
PageInfo<UserInfoDto> info = new PageInfo<>();
info.setPageSize(null==queryVo.getPageSize()?0:queryVo.getPageSize());
info.setPageNum(null==queryVo.getPageNo()?0:queryVo.getPageNo());
info.setTotal(usersMapper.getUserNumbers(map));
info.setList(list);
return R.ok(info);
}
@Override
......
......@@ -14,9 +14,6 @@ public class SpringUtil implements ApplicationContextAware {
if(SpringUtil.applicationContext == null) {
SpringUtil.applicationContext = applicationContext;
}
System.out.println("========ApplicationContext配置成功,在普通类可以通过调用SpringUtils.getAppContext()获取applicationContext对象,applicationContext="+SpringUtil.applicationContext+"========");
System.out.println("---------------------------------------------------------------------");
}
//获取applicationContext
......
......@@ -214,5 +214,6 @@
<orderEntry type="library" name="Maven: cglib:cglib:3.1" level="project" />
<orderEntry type="library" name="Maven: org.ow2.asm:asm:4.2" level="project" />
<orderEntry type="library" name="Maven: org.ehcache:ehcache:3.6.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-features:1.7.1" level="project" />
</component>
</module>
\ No newline at end of file
......@@ -216,5 +216,6 @@
<orderEntry type="library" name="Maven: cglib:cglib:3.1" level="project" />
<orderEntry type="library" name="Maven: org.ow2.asm:asm:4.2" level="project" />
<orderEntry type="library" name="Maven: org.ehcache:ehcache:3.6.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-features:1.7.1" level="project" />
</component>
</module>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment