Просмотр исходного кода

Merge branch 'develop' of https://git.youlane.cn/server/formallProject into develop

release_toaliyun_real
Burce 6 лет назад
Родитель
Сommit
20a5f9f954
12 измененных файлов: 347 добавлений и 139 удалений
  1. +163
    -135
      mallinkAdmin/src/main/java/com/iformall/controller/datatower/WxUserStructureController.java
  2. +4
    -3
      mallinkService/src/main/java/com/iformall/domain/dto/WxCUserBasicInfoDto.java
  3. +27
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/UserCountVo.java
  4. +34
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumUserCountReportType.java
  5. +2
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java
  6. +3
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java
  7. +2
    -1
      mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java
  8. +11
    -0
      mallinkService/src/main/java/com/iformall/service/WxCUserService.java
  9. +5
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java
  10. +7
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java
  11. +45
    -0
      mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml
  12. +44
    -0
      mallinkService/src/main/resources/mapper/WxCUserMapper.xml

+ 163
- 135
mallinkAdmin/src/main/java/com/iformall/controller/datatower/WxUserStructureController.java Просмотреть файл

@@ -7,11 +7,10 @@ import com.iformall.common.ResultData;
import com.iformall.controller.base.BaseController;
import com.iformall.domain.dto.WxCUserBasicInfoDto;
import com.iformall.domain.po.*;
import com.iformall.domain.vo.KwMeterDataVo;
import com.iformall.domain.vo.UserCountVo;
import com.iformall.domain.vo.UserStructureVo;
import com.iformall.enums.EnumAgeInfo;
import com.iformall.enums.EnumCUserBaseInfoSex;
import com.iformall.enums.EnumScoreType;
import com.iformall.enums.EnumTag;
import com.iformall.enums.*;
import com.iformall.service.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -261,27 +260,51 @@ public class WxUserStructureController extends BaseController {
}

/********************************会员数据**************************************/

private Date addDay(Date date , int addDayAmount) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DATE, addDayAmount);
Date result = c.getTime();
return result;
}

private Date addMonth(Date date, int addMountAmount) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.MONTH, addMountAmount);
Date result = c.getTime();
return result;
}

private Date addYear(Date date, int addYearAmount) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.YEAR, addYearAmount);
Date result = c.getTime();
return result;
}

@ApiOperation("查询会员数量")
@GetMapping("/findUserDataCount")
@SystemControllerLog(description = "会员管理-查询会员数量")
public ResultData findUserCount(Date startTime, Date endTime) {

final int daysBefore = 29;
public ResultData findUserCount(Date startTime, Date endTime, Integer reportType) {
logger.debug("[" + getIpAddr() + "] WxUserStructureController::findUserCount");


//昨日同比
Map<String, Object> map = new HashMap<>();

WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto();
dto.setTenantId(getTenantId());
dto.setStartTime(startTime);
dto.setEndTime(endTime);
if (endTime != null) {
Calendar c = Calendar.getInstance();
c.setTime(endTime);
c.add(Calendar.DAY_OF_YEAR, 1);
endTime = c.getTime();
}
dto.setEndTime(new Date());
//微信用户数据
long wxTotalCount = wxCUserService.findCount(dto);//总量
//微信用户数据
long wxallCount = wxCUserService.findCount(dto);//总量
//会员数据
Map<String,Object> member=getMemberData(dto);
long memTotalCount = wxCUserBasicInfoService.findCount(dto);//总量

map.put("wxTotalCount",wxTotalCount);
map.put("memTotalCount",memTotalCount);

Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, 0);
@@ -290,46 +313,12 @@ public class WxUserStructureController extends BaseController {
Date today = c.getTime();
dto.setStartTime(today);
dto.setEndTime(null);
long wxtodayCount = wxCUserService.findCount(dto);//今天新增
List<UserStructureVo> wxnewCountVos = new ArrayList<>();//每日新增会员数
int j = 1;
for (int i = daysBefore; i >= 0; i--) {
c.clear();
c.setTime(today);
c.add(Calendar.DAY_OF_YEAR, -i);
dto.setStartTime(c.getTime());
c.add(Calendar.DAY_OF_YEAR, 1);
dto.setEndTime(c.getTime());
long count = wxCUserService.findCount(dto);
UserStructureVo vo = new UserStructureVo();
vo.setSortNum(j);
j++;
vo.setName(new SimpleDateFormat("MM/dd").format(dto.getStartTime()));
vo.setCount(count);
wxnewCountVos.add(vo);
}
List<UserStructureVo> wxallCountVos = new ArrayList<>();//累计会员数
c.clear();
c.setTime(today);
c.add(Calendar.DAY_OF_YEAR, -daysBefore);
dto.setEndTime(c.getTime());
dto.setStartTime(null);
long firstDay = wxCUserService.findCount(dto);//统计的第一天总数
int i = 0;
long sumCount = 0;
for (UserStructureVo v : wxnewCountVos) {
UserStructureVo vo = new UserStructureVo();
sumCount += v.getCount();
vo.setCount(firstDay + sumCount);
vo.setName(v.getName());
vo.setSortNum(i + 1);
wxallCountVos.add(vo);
i++;
}
long wxTodayCount = wxCUserService.findCount(dto);//今天新增
long memTodayCount = wxCUserBasicInfoService.findCount(dto);//今天新增

map.put("wxTodayCount",wxTodayCount);
map.put("memTodayCount",memTodayCount);

//昨日同比
Map<String, Object> map = new HashMap<>();
//昨日同比
c.clear();
c.setTime(today);
@@ -337,98 +326,137 @@ public class WxUserStructureController extends BaseController {
dto.setStartTime(c.getTime());
c.add(Calendar.DAY_OF_YEAR, 1);
dto.setEndTime(c.getTime());
long yesterdayCount = wxCUserService.findCount(dto);
if(yesterdayCount>0){
double yesterday=(double) (wxtodayCount-yesterdayCount)/yesterdayCount*100;
long wxYesterdayCount = wxCUserService.findCount(dto);
long memYesterdayCount = wxCUserBasicInfoService.findCount(dto);
if (wxYesterdayCount > 0) {
double yesterday = (double) (wxTodayCount - wxYesterdayCount) / wxYesterdayCount * 100;
double zrhb = new BigDecimal(yesterday).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
map.put("wxhb",zrhb+"%");
}else{
map.put("wxhb","--%");
map.put("wxhb", zrhb + "%");
} else {
map.put("wxhb", "--%");
}
if (memYesterdayCount > 0) {
double yesterday = (double) (wxTodayCount - memYesterdayCount) / memYesterdayCount * 100;
double zrhb = new BigDecimal(yesterday).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
map.put("memhb", zrhb + "%");
} else {
map.put("memhb", "--%");
}
map.put("wxallCount", wxallCount);//累计会员总数
map.put("wxtodayCount", wxtodayCount);//今日新增会员数
map.put("wxallCountVos", wxallCountVos);//累计会员列表( 日期和数量list)
map.put("wxnewCountVos", wxnewCountVos);//新增会员列表(日期和数量list)
map.putAll(member);
return new ResultData(map);
}

private Map<String,Object> getMemberData(WxCUserBasicInfoDto dto) {
final int daysBefore = 29;
long allCount = wxCUserBasicInfoService.findCount(dto);//总量

Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
Date today = c.getTime();
dto.setStartTime(today);
dto.setEndTime(null);
long todayCount = wxCUserBasicInfoService.findCount(dto);//今天新增
List<UserStructureVo> newCountVos = new ArrayList<>();//每日新增会员数
int j = 1;
for (int i = daysBefore; i >= 0; i--) {
c.clear();
c.setTime(today);
c.add(Calendar.DAY_OF_YEAR, -i);
dto.setStartTime(c.getTime());
c.add(Calendar.DAY_OF_YEAR, 1);
dto.setEndTime(c.getTime());
long count = wxCUserBasicInfoService.findCount(dto);
UserStructureVo vo = new UserStructureVo();
vo.setSortNum(j);
j++;
vo.setName(new SimpleDateFormat("MM/dd").format(dto.getStartTime()));
vo.setCount(count);
newCountVos.add(vo);
if (startTime == null || endTime == null) {
startTime = addMonth(new Date(), -1);
endTime = new Date();
reportType = EnumUserCountReportType.DAY.getCode();
}
List<UserStructureVo> allCountVos = new ArrayList<>();//累计会员数
c.clear();
c.setTime(today);
c.add(Calendar.DAY_OF_YEAR, -daysBefore);
dto.setEndTime(c.getTime());
dto.setStartTime(null);
long firstDay = wxCUserBasicInfoService.findCount(dto);//统计的第一天总数
int i = 0;
long sumCount = 0;
for (UserStructureVo v : newCountVos) {
UserStructureVo vo = new UserStructureVo();
sumCount += v.getCount();
vo.setCount(firstDay + sumCount);
vo.setName(v.getName());
vo.setSortNum(i + 1);
allCountVos.add(vo);
i++;

dto.setTenantId(getTenantId());
dto.setStartTime(startTime);
dto.setEndTime(endTime);
dto.setReportType(reportType);

List<UserCountVo> wxCountList = new ArrayList<>();//每日新增会员数
List<UserCountVo> wxCounts = wxCUserService.findCountHistory(dto);//每日新增会员数
List<UserCountVo> memCountList = new ArrayList<>();//每日新增会员数
List<UserCountVo> memCounts = wxCUserBasicInfoService.findCountHistory(dto);//每日新增会员数

SimpleDateFormat sdf;
SimpleDateFormat fsdf;
if (reportType.equals(EnumUserCountReportType.YEAR.getCode())) {
sdf = new SimpleDateFormat("yyyy");
fsdf = new SimpleDateFormat("yyyy");
}else if (reportType.equals(EnumUserCountReportType.MONTH.getCode())) {
sdf = new SimpleDateFormat("yyyy-MM");
fsdf = new SimpleDateFormat("yyyy-MM");
}else {
sdf = new SimpleDateFormat("yyyy-MM-dd");
fsdf = new SimpleDateFormat("MM-dd");
}

Date curTime = new Date(startTime.getTime());
do {
UserCountVo wxUc = new UserCountVo();
UserCountVo memUc = new UserCountVo();
wxUc.setReportTime(fsdf.format(curTime));
memUc.setReportTime(fsdf.format(curTime));

final Date ct = new Date(curTime.getTime());

if (ct.before(new Date()) || ct.equals(new Date())) {
//用户
Optional<UserCountVo> opWxUserCountVo =
wxCounts.stream().filter(md -> md.getReportTime().equals(sdf.format(ct))).findFirst();
if (opWxUserCountVo.isPresent()) {
wxUc.setIncCount(opWxUserCountVo.get().getIncCount());
wxUc.setTotalCount(opWxUserCountVo.get().getTotalCount());
} else {
wxUc.setIncCount(0L);
wxUc.setTotalCount(0L);
}

Map<String, Object> map = new HashMap<>();
//昨日同比
c.clear();
c.setTime(today);
c.add(Calendar.DAY_OF_YEAR, -1);
dto.setStartTime(c.getTime());
c.add(Calendar.DAY_OF_YEAR, 1);
dto.setEndTime(c.getTime());
long yesterdayCount = wxCUserService.findCount(dto);
if(yesterdayCount>0){
double yesterday=(double) (todayCount-yesterdayCount)/yesterdayCount*100;
double zrhb = new BigDecimal(yesterday).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
map.put("hb",zrhb+"%");
}else{
map.put("hb","--%");
}

//会员
Optional<UserCountVo> opMemUserCountVo =
memCounts.stream().filter(md -> md.getReportTime().equals(sdf.format(ct))).findFirst();
if (opMemUserCountVo.isPresent()) {
memUc.setIncCount(opMemUserCountVo.get().getIncCount());
memUc.setTotalCount(opMemUserCountVo.get().getTotalCount());
} else {
memUc.setIncCount(0L);
memUc.setTotalCount(0L);
}
}
memCountList.add(memUc);
wxCountList.add(wxUc);
if (reportType.equals(EnumUserCountReportType.YEAR.getCode())) {
curTime = addYear(curTime, 1);
} else if (reportType.equals(EnumUserCountReportType.MONTH.getCode())) {
curTime = addMonth(curTime, 1);
} else {
curTime = addDay(curTime, 1);
}

map.put("allCount", allCount);//累计会员总数
map.put("todayCount", todayCount);//今日新增会员数
map.put("allCountVos", allCountVos);//累计会员列表( 日期和数量list)
map.put("newCountVos", newCountVos);//新增会员列表(日期和数量list)
}while (curTime.before(endTime));

return map;

if (wxCountList.size() > 0
&& wxCountList.get(0).getTotalCount() != null
&& wxCountList.get(0).getTotalCount() == 0) {
WxCUserBasicInfoDto pdto = new WxCUserBasicInfoDto();
pdto.setTenantId(getTenantId());
pdto.setEndTime(startTime);
wxCountList.get(0).setTotalCount(wxCUserService.findCount(pdto));
}
for (int i = 1; i < wxCountList.size(); i++){
if (wxCountList.get(i).getTotalCount() != null &&
wxCountList.get(i-1).getTotalCount() != null &&
wxCountList.get(i).getTotalCount() < wxCountList.get(i-1).getTotalCount()){
wxCountList.get(i).setTotalCount(wxCountList.get(i-1).getTotalCount());
}
}

if (memCountList.size() > 0
&& memCountList.get(0).getTotalCount() != null
&& memCountList.get(0).getTotalCount() == 0) {
WxCUserBasicInfoDto pdto = new WxCUserBasicInfoDto();
pdto.setTenantId(getTenantId());
pdto.setEndTime(startTime);
memCountList.get(0).setTotalCount(wxCUserBasicInfoService.findCount(pdto));
}
for (int i = 1; i < memCountList.size(); i++){
if ( memCountList.get(i).getTotalCount() != null &&
memCountList.get(i-1).getTotalCount() != null &&
memCountList.get(i).getTotalCount() < memCountList.get(i-1).getTotalCount()){
memCountList.get(i).setTotalCount(memCountList.get(i-1).getTotalCount());
}
}

map.put("wxCountList", wxCountList);//累计/新增用户列表( 日期和数量list)
map.put("memCountList", memCountList);//累计/新增会员列表( 日期和数量list)

return new ResultData(map);
}


@ApiOperation("拓客分析")
@GetMapping("/findUserByChannel")
@ApiImplicitParams({


+ 4
- 3
mallinkService/src/main/java/com/iformall/domain/dto/WxCUserBasicInfoDto.java Просмотреть файл

@@ -42,7 +42,10 @@ public class WxCUserBasicInfoDto extends BaseEntity {
@Transient
@io.swagger.annotations.ApiModelProperty(value="租户id",name="tenantId")
private String tenantId;

@Transient
private Integer reportType;

@Transient
private Date birthStartTime;

@@ -73,11 +76,9 @@ public class WxCUserBasicInfoDto extends BaseEntity {
@Transient
List<Long> tagIds;


@Transient
private String phones;


@Transient
@io.swagger.annotations.ApiModelProperty(value="1查询导入的数据",name="queryImport")
protected Integer queryImport;


+ 27
- 0
mallinkService/src/main/java/com/iformall/domain/vo/UserCountVo.java Просмотреть файл

@@ -0,0 +1,27 @@
package com.iformall.domain.vo;

import lombok.Data;

import java.io.Serializable;
import java.text.DecimalFormat;

/**
* 会员结构vo
* @author jinguo
*
*/

@Data
public class UserCountVo implements Serializable {

private static final long serialVersionUID = 6780570955120276661L;
//名称
private String reportTime;

//数量
private Long incCount;

//数量
private Long totalCount;

}

+ 34
- 0
mallinkService/src/main/java/com/iformall/enums/EnumUserCountReportType.java Просмотреть файл

@@ -0,0 +1,34 @@
package com.iformall.enums;

/**
* Created by Stormeye on 2018/08/09.
*/
public enum EnumUserCountReportType {
DAY(1, "日"),
MONTH(2, "月"),
YEAR(3, "年");
public static EnumUserCountReportType getEnum(Integer code) {
for (EnumUserCountReportType value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumUserCountReportType(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 2
- 0
mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java Просмотреть файл

@@ -4,6 +4,7 @@ import com.iformall.common.CommonMapper;
import com.iformall.domain.dto.WxCUserBasicInfoDto;
import com.iformall.domain.po.WxCUserBasicInfo;
import com.iformall.domain.vo.CUserBaseVo;
import com.iformall.domain.vo.UserCountVo;
import com.iformall.domain.vo.WxCUserBasicInfoVo;

import java.util.List;
@@ -31,6 +32,7 @@ public interface WxCUserBasicInfoMapper extends CommonMapper<WxCUserBasicInfo, S
List<WxCUserBasicInfo> findBirthdayList(WxCUserBasicInfoDto wxCUserBasicInfoDto);

long findCount(WxCUserBasicInfoDto dto);
List<UserCountVo> findCountHistory(WxCUserBasicInfoDto dto);

List<WxCUserBasicInfoVo> findVoList(WxCUserBasicInfo wxCUserBasicInfo);



+ 3
- 0
mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java Просмотреть файл

@@ -6,6 +6,7 @@ import java.util.Map;
import com.iformall.common.CommonMapper;
import com.iformall.domain.dto.WxCUserBasicInfoDto;
import com.iformall.domain.po.WxCUser;
import com.iformall.domain.vo.UserCountVo;

public interface WxCUserMapper extends CommonMapper<WxCUser, Long> {

@@ -19,6 +20,8 @@ public interface WxCUserMapper extends CommonMapper<WxCUser, Long> {
long findCount(WxCUserBasicInfoDto dto);

List<UserCountVo> findCountHistory(WxCUserBasicInfoDto dto);

List<WxCUser> listByChannel(WxCUser wxCUser);

long countByChannel(WxCUser wxCUser);


+ 2
- 1
mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java Просмотреть файл

@@ -6,6 +6,7 @@ import com.iformall.domain.dto.WxCUserBasicInfoFilterDto;
import com.iformall.domain.dto.WxCUserBasicInfoFilterListDto;
import com.iformall.domain.po.*;
import com.iformall.domain.vo.CUserBaseInfoT;
import com.iformall.domain.vo.UserCountVo;
import com.iformall.domain.vo.WxTagsGroupVo;

import javax.servlet.http.HttpServletRequest;
@@ -119,7 +120,7 @@ public interface WxCUserBasicInfoService {
void importOneMem(String tenantId, String importKey, List<WxTags> tagList, CUserBaseInfoT uBase,MallUserInfo mallUserInfo);

long findCount(WxCUserBasicInfoDto dto);
List<UserCountVo> findCountHistory(WxCUserBasicInfoDto dto);
/**
* 停车会员记录导出
* @param record


+ 11
- 0
mallinkService/src/main/java/com/iformall/service/WxCUserService.java Просмотреть файл

@@ -5,9 +5,13 @@ import com.iformall.domain.dto.WxCUserBasicInfoDto;
import com.iformall.domain.po.WxAuthorizerInfo;
import com.iformall.domain.po.WxCUser;
import com.iformall.domain.po.WxCreditHistory;
import com.iformall.domain.vo.UserCountVo;
import com.iformall.enums.EnumScoreType;
import me.chanjar.weixin.mp.bean.result.WxMpUser;

import java.util.List;
import java.util.Map;

public interface WxCUserService {

/**
@@ -94,6 +98,13 @@ public interface WxCUserService {
*/
long findCount(WxCUserBasicInfoDto dto);

/**
* 统计数量
* @param dto
* @return
*/
List<UserCountVo> findCountHistory(WxCUserBasicInfoDto dto);

/**
* 通过渠道获取会员信息


+ 5
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java Просмотреть файл

@@ -982,6 +982,11 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService {
return wxCUserBasicInfoMapper.findCount(dto);
}

@Override
public List<UserCountVo> findCountHistory(WxCUserBasicInfoDto dto) {
return wxCUserBasicInfoMapper.findCountHistory(dto);
}

@Override
public void exportCarPayData(WxCarPayRecord record, HttpServletRequest request, HttpServletResponse response) {
List<WxCarPayRecord> list = wxCarPayRecordMapper.findCarPayList(record);


+ 7
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java Просмотреть файл

@@ -9,6 +9,7 @@ import com.iformall.domain.po.WxCUser;
import com.iformall.domain.po.WxCUserBasicInfo;
import com.iformall.domain.po.WxCreditHistory;
import com.iformall.domain.po.msg.FmInsideCLoginMsg;
import com.iformall.domain.vo.UserCountVo;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.WxCUserMapper;
@@ -23,6 +24,7 @@ import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;
import java.util.Map;

@Service
public class WxCUserServiceImpl implements WxCUserService {
@@ -205,6 +207,11 @@ public class WxCUserServiceImpl implements WxCUserService {
return wxCUserMapper.findCount(dto);
}

@Override
public List<UserCountVo> findCountHistory(WxCUserBasicInfoDto dto) {
return wxCUserMapper.findCountHistory(dto);
}

@Override
public PageInfo<WxCUser> listByChannel(WxCUser user, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserMapper.listByChannel(user));


+ 45
- 0
mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml Просмотреть файл

@@ -256,6 +256,51 @@
</if>
</select>

<select id="findCountHistory" parameterType="com.iformall.domain.dto.WxCUserBasicInfoDto" resultType="com.iformall.domain.vo.UserCountVo">
select count(id) as incCount,
<if test="1 == reportType ">
date_format(create_date, '%Y-%m-%d') as reportTime,
</if>
<if test="2 == reportType ">
date_format(create_date, '%Y-%m') as reportTime,
</if>
<if test="3 == reportType ">
date_format(create_date, '%Y') as reportTime,
</if>

<if test="1 == reportType or 2 == reportType or 3 == reportType">
(select count(id) from wx_c_user_basic_info
where
<if test="1 == reportType ">
date_format(create_date, '%Y-%m-%d') &lt;= reportTime
</if>
<if test="2 == reportType ">
date_format(create_date, '%Y-%m') &lt;= reportTime
</if>
<if test="3 == reportType ">
date_format(create_date, '%Y') &lt;= reportTime
</if>
<if test="null != tenantId">
and tenant_id =#{tenantId}
</if>
) as totalCount
</if>

from wx_c_user_basic_info where 1=1
<if test="null != tenantId">
and tenant_id =#{tenantId}
</if>
<if test=" null != startTime ">
and create_date &gt;= #{startTime}
</if>
<if test=" null != endTime">
and create_date &lt; #{endTime}
</if>
<if test="1 == reportType or 2 == reportType or 3 == reportType">
group by reportTime
</if>
</select>

<resultMap id="VoBaseResultMap" type="com.iformall.domain.vo.WxCUserBasicInfoVo">
<id column="id" jdbcType="BIGINT" property="id"/>
<result column="phone" jdbcType="VARCHAR" property="phone"/>


+ 44
- 0
mallinkService/src/main/resources/mapper/WxCUserMapper.xml Просмотреть файл

@@ -253,6 +253,50 @@
</if>
</select>

<select id="findCountHistory" parameterType="com.iformall.domain.dto.WxCUserBasicInfoDto" resultType="com.iformall.domain.vo.UserCountVo">
select count(id) as incCount,
<if test="1 == reportType ">
date_format(create_date, '%Y-%m-%d') as reportTime,
</if>
<if test="2 == reportType ">
date_format(create_date, '%Y-%m') as reportTime,
</if>
<if test="3 == reportType ">
date_format(create_date, '%Y') as reportTime,
</if>

<if test="1 == reportType or 2 == reportType or 3 == reportType">
(select count(id) from wx_c_user where
<if test="1 == reportType ">
date_format(create_date, '%Y-%m-%d') &lt;= reportTime
</if>
<if test="2 == reportType ">
date_format(create_date, '%Y-%m') &lt;= reportTime
</if>
<if test="3 == reportType ">
date_format(create_date, '%Y') &lt;= reportTime
</if>
<if test="null != tenantId">
and tenant_id =#{tenantId}
</if>
) as totalCount
</if>

from wx_c_user where 1=1
<if test="null != tenantId">
and tenant_id =#{tenantId}
</if>
<if test=" null != startTime ">
and create_date &gt;= #{startTime}
</if>
<if test=" null != endTime">
and create_date &lt; #{endTime}
</if>
<if test="1 == reportType or 2 == reportType or 3 == reportType">
group by reportTime
</if>
</select>

<select id="listByChannel" resultMap="BaseResultMap" >
select id,nick_name,phone,create_date,scene_address from wx_c_user where 1=1
<if test="null != tenantId">


Загрузка…
Отмена
Сохранить