xhxu 5 лет назад
Родитель
Сommit
26a583d66a
7 измененных файлов: 228 добавлений и 41 удалений
  1. +32
    -8
      mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserFromController.java
  2. +14
    -21
      mallinkService/src/main/java/com/iformall/domain/po/WxCUserFrom.java
  3. +81
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/WxCUserFromVo.java
  4. +2
    -1
      mallinkService/src/main/java/com/iformall/mapper/WxCUserFromMapper.java
  5. +8
    -1
      mallinkService/src/main/java/com/iformall/service/WxCUserFromService.java
  6. +72
    -4
      mallinkService/src/main/java/com/iformall/service/impl/WxCUserFromServiceImpl.java
  7. +19
    -6
      mallinkService/src/main/resources/mapper/WxCUserFromMapper.xml

+ 32
- 8
mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserFromController.java Просмотреть файл

@@ -2,12 +2,11 @@ package com.iformall.controller.mem;

import com.github.pagehelper.PageInfo;
import com.iformall.annotation.SystemControllerLog;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
import com.iformall.controller.base.BaseController;
import com.iformall.domain.po.WxCUserCar;
import com.iformall.domain.po.WxCUserFrom;
import com.iformall.service.WxCUserCarService;
import com.iformall.domain.vo.WxCUserFromVo;
import com.iformall.enums.EnumCUserFrom;
import com.iformall.service.WxCUserFromService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -17,6 +16,9 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@RestController
@RequestMapping("wxCUserFrom")
public class WxCUserFromController extends BaseController {
@@ -30,7 +32,7 @@ public class WxCUserFromController extends BaseController {
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
@SystemControllerLog(description = "停车-列表")
@SystemControllerLog(description = "分享-列表")
public ResultData list(@ModelAttribute WxCUserFrom wxCUserFrom, Integer pageNum, Integer pageSize) {
logger.debug("[" + getIpAddr() + "] WxCUserCarController::list");
if (null == wxCUserFrom) wxCUserFrom = new WxCUserFrom();
@@ -42,13 +44,35 @@ public class WxCUserFromController extends BaseController {
@ApiOperation("根据id查询接口")
@GetMapping("/visits")
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)
@SystemControllerLog(description = "停车-查询")
public ResultData visits(@ModelAttribute WxCUserFrom wxCUserFrom,Integer pageNum, Integer pageSize) {
@SystemControllerLog(description = "分享-列表")
public ResultData visits(@ModelAttribute WxCUserFromVo wxCUserFromVo,Integer pageNum, Integer pageSize) {
logger.debug("[" + getIpAddr() + "] WxCUserCarController::findById");
if (null == wxCUserFromVo) wxCUserFromVo = new WxCUserFromVo();
if(wxCUserFromVo.getFromType() == null){
wxCUserFromVo.setFromType(EnumCUserFrom.FROM_C_USER_BASIC_INFO.getCode());
}
wxCUserFromVo.updateTenantInfo(getTenantInfo());
final PageInfo<WxCUserFromVo> page = wxCUserFromService.listAsVisitsPage(wxCUserFromVo, pageNum, pageSize);
return new ResultData(page);
}

@GetMapping("/exportData")
@SystemControllerLog(description = "导出数据")
public void exportData(@ModelAttribute WxCUserFrom wxCUserFrom, HttpServletRequest request, HttpServletResponse response) {
if (null == wxCUserFrom) wxCUserFrom = new WxCUserFrom();
wxCUserFrom.updateTenantInfo(getTenantInfo());
final PageInfo<WxCUserFrom> page = wxCUserFromService.listAsVisitsPage(wxCUserFrom, pageNum, pageSize);
return new ResultData(page);
wxCUserFromService.exportData(request, response, wxCUserFrom);
}

@GetMapping("/exportDataVisits")
@SystemControllerLog(description = "导出数据")
public void exportDataVisits(@ModelAttribute WxCUserFromVo wxCUserFromVo, HttpServletRequest request, HttpServletResponse response) {
if (null == wxCUserFromVo) wxCUserFromVo = new WxCUserFromVo();
wxCUserFromVo.updateTenantInfo(getTenantInfo());
if(wxCUserFromVo.getFromType() == null){
wxCUserFromVo.setFromType(EnumCUserFrom.FROM_C_USER_BASIC_INFO.getCode());
}
wxCUserFromService.exportDataVisits(request, response, wxCUserFromVo);
}




+ 14
- 21
mallinkService/src/main/java/com/iformall/domain/po/WxCUserFrom.java Просмотреть файл

@@ -1,5 +1,6 @@
package com.iformall.domain.po;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@@ -24,9 +25,11 @@ public class WxCUserFrom extends TenantEntity {

@io.swagger.annotations.ApiModelProperty(value="cUserId",name="cUserId")
protected Long cUserId;
@Excel(name = "用户昵称", width = 20, orderNum = "2")
@TableField(exist = false)
@io.swagger.annotations.ApiModelProperty(value="cUserNickName",name="cUserNickName")
protected String cUserNickName;
@Excel(name = "用户电话", width = 20, orderNum = "3")
@TableField(exist = false)
@io.swagger.annotations.ApiModelProperty(value="cUserPhone",name="cUserPhone")
protected String cUserPhone;
@@ -37,11 +40,13 @@ public class WxCUserFrom extends TenantEntity {
@io.swagger.annotations.ApiModelProperty(value="渠道,小程序",name="sceneAddress")
private String sceneAddress;
@TableField(exist = false)
@Excel(name = "用户来源方式", width = 20, orderNum = "4")
@io.swagger.annotations.ApiModelProperty(value="sceneAddress描述",name="sceneAddressDesc")
private String sceneAddressDesc;

@io.swagger.annotations.ApiModelProperty(value="EnumCUserFrom",name="fromType")
private Integer fromType;
@Excel(name = "来源", width = 20, orderNum = "1")
@TableField(exist = false)
@io.swagger.annotations.ApiModelProperty(value="fromType描述",name="fromTypeDesc")
private String fromTypeDesc;
@@ -67,11 +72,12 @@ public class WxCUserFrom extends TenantEntity {
@io.swagger.annotations.ApiModelProperty(value="是否新用户(0:否1:是)EnumYesOrNo",name="isNewUser")
private Integer isNewUser;
@TableField(exist = false)
@Excel(name = "是否新用户", width = 20, orderNum = "5")
@io.swagger.annotations.ApiModelProperty(value="是否新用户",name="isNewUserStr")
private String isNewUserStr;
public String getIsNewUserStr(){
if(this.getIsNewUser() != null){
EnumYesOrNo anEnum = EnumYesOrNo.getEnum(this.getFromType());
EnumYesOrNo anEnum = EnumYesOrNo.getEnum(this.getIsNewUser());
if(anEnum != null){
isNewUserStr = anEnum.getMessage();
}
@@ -86,7 +92,7 @@ public class WxCUserFrom extends TenantEntity {
private String shareUserTypeDesc;
public String getShareUserTypeDesc(){
if(this.getShareUserType() != null){
EnumUserType anEnum = EnumUserType.getEnum(this.getFromType());
EnumUserType anEnum = EnumUserType.getEnum(this.getShareUserType());
if(anEnum != null){
shareUserTypeDesc = anEnum.getMessage();
}
@@ -100,34 +106,21 @@ public class WxCUserFrom extends TenantEntity {
@io.swagger.annotations.ApiModelProperty(value="分享者",name="shareUserName")
protected String shareUserName;

@Excel(name = "进入时间", width = 20, format="yyyy-MM-dd HH:mm:ss", orderNum = "6")
@io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate")
private Date createDate;


@TableField(exist = false)
@io.swagger.annotations.ApiModelProperty(value="推广人次",name="visits")
private Integer visits;
@TableField(exist = false)
@io.swagger.annotations.ApiModelProperty(value="触达用户",name="reachUser")
private Integer reachUser;
@TableField(exist = false)
@io.swagger.annotations.ApiModelProperty(value="触达新用户",name="newUser")
private Integer newUser;
@TableField(exist = false)
@io.swagger.annotations.ApiModelProperty(value="触达老用户",name="oldUser")
private Integer oldUser;
public Integer getOldUser(){
if(this.getReachUser() != null && this.getNewUser() != null){
oldUser = this.getReachUser() - this.getNewUser();
}
return oldUser;
}
protected Date startDate;

@TableField(exist = false)
protected Date endDate;

@TableField(exist = false)
protected Date startDate;
private Integer begin;

@TableField(exist = false)
protected Date endDate;
private Integer limit;

}

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

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

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableField;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumCUserFrom;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.util.Date;

@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class WxCUserFromVo extends TenantEntity {


@io.swagger.annotations.ApiModelProperty(value="EnumCUserFrom",name="fromType")
private Integer fromType;
@Excel(name = "来源", width = 20, orderNum = "1")
@TableField(exist = false)
@io.swagger.annotations.ApiModelProperty(value="fromType描述",name="fromTypeDesc")
private String fromTypeDesc;
public String getFromTypeDesc(){
if(this.getFromType() != null){
EnumCUserFrom anEnum = EnumCUserFrom.getEnum(this.getFromType());
if(anEnum != null){
fromTypeDesc = anEnum.getMessage();
}
}
return fromTypeDesc;
}

@io.swagger.annotations.ApiModelProperty(value="来源ID",name="fromId")
protected Long fromId;
@Excel(name = "用户昵称/店铺名称", width = 20, orderNum = "2")
@TableField(exist = false)
@io.swagger.annotations.ApiModelProperty(value="来源Name",name="fromName")
protected String fromName;
@Excel(name = "(用户/店铺)联系方式", width = 20, orderNum = "3")
@TableField(exist = false)
@io.swagger.annotations.ApiModelProperty(value="来源phone",name="fromPhone")
protected String fromPhone;
@Excel(name = "推广人次", width = 20, orderNum = "4")
@TableField(exist = false)
@io.swagger.annotations.ApiModelProperty(value="推广人次",name="visits")
private Integer visits;
@Excel(name = "触达用户", width = 20, orderNum = "5")
@TableField(exist = false)
@io.swagger.annotations.ApiModelProperty(value="触达用户",name="reachUser")
private Integer reachUser;
@Excel(name = "触达新用户", width = 20, orderNum = "6")
@TableField(exist = false)
@io.swagger.annotations.ApiModelProperty(value="触达新用户",name="newUser")
private Integer newUser;
@Excel(name = "触达老用户", width = 20, orderNum = "7")
@TableField(exist = false)
@io.swagger.annotations.ApiModelProperty(value="触达老用户",name="oldUser")
private Integer oldUser;
public Integer getOldUser(){
if(this.getReachUser() != null && this.getNewUser() != null){
oldUser = this.getReachUser() - this.getNewUser();
}
return oldUser;
}


@TableField(exist = false)
protected Date startDate;

@TableField(exist = false)
protected Date endDate;

@TableField(exist = false)
private Integer begin;

@TableField(exist = false)
private Integer limit;

}

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

@@ -2,6 +2,7 @@ package com.iformall.mapper;

import com.iformall.common.CommonMapper;
import com.iformall.domain.po.WxCUserFrom;
import com.iformall.domain.vo.WxCUserFromVo;

import java.util.List;

@@ -9,5 +10,5 @@ public interface WxCUserFromMapper extends CommonMapper<WxCUserFrom, Long>{
List<WxCUserFrom> findList(WxCUserFrom record);

List<WxCUserFrom> visits(WxCUserFrom record);
List<WxCUserFromVo> visits(WxCUserFromVo record);
}

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

@@ -2,6 +2,10 @@ package com.iformall.service;

import com.github.pagehelper.PageInfo;
import com.iformall.domain.po.WxCUserFrom;
import com.iformall.domain.vo.WxCUserFromVo;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public interface WxCUserFromService {

@@ -15,9 +19,12 @@ public interface WxCUserFromService {
*/
PageInfo<WxCUserFrom> listAsPage(WxCUserFrom record, Integer pageIndex, Integer pageSize);

PageInfo<WxCUserFrom> listAsVisitsPage(WxCUserFrom record, Integer pageIndex, Integer pageSize);
PageInfo<WxCUserFromVo> listAsVisitsPage(WxCUserFromVo record, Integer pageIndex, Integer pageSize);

void save(WxCUserFrom wxCUserFrom);


void exportData(HttpServletRequest request, HttpServletResponse response, WxCUserFrom record);

void exportDataVisits(HttpServletRequest request, HttpServletResponse response, WxCUserFromVo record);
}

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

@@ -1,10 +1,12 @@
package com.iformall.service.impl;

import cn.afterturn.easypoi.handler.inter.IExcelExportServer;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.iformall.common.IdWorker;
import com.iformall.domain.po.*;
import com.iformall.domain.vo.WxCUserFromVo;
import com.iformall.enums.EnumCUserFrom;
import com.iformall.mapper.*;
import com.iformall.service.*;
import lombok.extern.slf4j.Slf4j;
@@ -13,24 +15,35 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.*;

@Service
@Slf4j
public class WxCUserFromServiceImpl implements WxCUserFromService {
public class WxCUserFromServiceImpl implements WxCUserFromService, IExcelExportServer {

private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
WxCUserFromMapper wxCUserFromMapper;

@Autowired
WxCUserBasicInfoMapper wxCUserBasicInfoMapper;

@Autowired
WxMerchantMapper wxMerchantMapper;

@Autowired
ExcelService excelService;

@Override
public PageInfo<WxCUserFrom> listAsPage(WxCUserFrom record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserFromMapper.findList(record));
}

@Override
public PageInfo<WxCUserFrom> listAsVisitsPage(WxCUserFrom record, Integer pageIndex, Integer pageSize) {
public PageInfo<WxCUserFromVo> listAsVisitsPage(WxCUserFromVo record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserFromMapper.visits(record));
}

@@ -44,4 +57,59 @@ public class WxCUserFromServiceImpl implements WxCUserFromService {
wxCUserFromMapper.insert(wxCUserFrom);
}

@Override
public void exportData(HttpServletRequest request, HttpServletResponse response, WxCUserFrom record) {
String sheetName = "门店/用户分享明细";
if(record.getFromType().equals(EnumCUserFrom.FROM_C_USER_BASIC_INFO.getCode())){
WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoMapper.selectById(record.getFromId(), record.getFinalTenantId());
sheetName = "用户["+wxCUserBasicInfo.getPhone()+"]分享明细";
}else if(record.getFromType().equals(EnumCUserFrom.FROM_MERCHANT.getCode())){
WxMerchant wxMerchant = wxMerchantMapper.selectById(record.getFromId());
sheetName = "门店["+wxMerchant.getName()+"]分享明细";
}
String fileName = sheetName + ".xlsx";
excelService.exportBigExcel(this,record, null, sheetName, WxCUserFrom.class, fileName, response, false);
// List<WxCUserFrom> list = wxCUserFromMapper.findList(record);
// excelService.exportExcel(list, null, "门店/用户分享记录", WxCUserFrom.class, "门店/用户分享记录.xlsx", response, false);
}

@Override
public void exportDataVisits(HttpServletRequest request, HttpServletResponse response, WxCUserFromVo record) {
String sheetName = "门店/用户分享报表";
if(record.getFromType().equals(EnumCUserFrom.FROM_C_USER_BASIC_INFO.getCode())){
sheetName = "用户分享报表";
}else if(record.getFromType().equals(EnumCUserFrom.FROM_MERCHANT.getCode())){
sheetName = "门店分享报表";
}
String fileName = sheetName + ".xlsx";
excelService.exportBigExcel(this,record, null, sheetName, WxCUserFromVo.class, fileName, response, false);
// List<WxCUserFromVo> visits = wxCUserFromMapper.visits(record);
// excelService.exportExcel(visits, null, "门店/用户分享报表", WxCUserFromVo.class, "门店/用户分享报表.xlsx", response, false);
}

@Override
public List<Object> selectListForExcelExport(Object queryParams, int page) {
if(queryParams instanceof WxCUserFromVo){
WxCUserFromVo record = (WxCUserFromVo) queryParams;
record.setBegin((page-1)*10000);
record.setLimit(10000);
List<WxCUserFromVo> visits = wxCUserFromMapper.visits(record);
if (null != visits && visits.size() > 0 ) {
List<Object> retList = new ArrayList<Object>();
retList.addAll(visits);
return retList;
}
}else if(queryParams instanceof WxCUserFrom){
WxCUserFrom record = (WxCUserFrom) queryParams;
record.setBegin((page-1)*10000);
record.setLimit(10000);
List<WxCUserFrom> list = wxCUserFromMapper.findList(record);
if (null != list && list.size() > 0 ) {
List<Object> retList = new ArrayList<Object>();
retList.addAll(list);
return retList;
}
}
return null;
}
}

+ 19
- 6
mallinkService/src/main/resources/mapper/WxCUserFromMapper.xml Просмотреть файл

@@ -60,9 +60,9 @@
<if test=" null != fromId ">
and wcuf.`from_id` = #{fromId}
</if>
<if test=" null != isNewUser ">
<!--<if test=" null != isNewUser ">
and wcuf.`is_new_user` = #{isNewUser}
</if>
</if>-->
<if test=" null != shareUserType ">
and wcuf.`share_user_type` = #{shareUserType}
</if>
@@ -83,7 +83,7 @@
#{idItem}
</foreach>
</if>
order by wcuf.`create_date` desc
</sql>
<select id="findList" parameterType="com.iformall.domain.po.WxCUserFrom" resultMap="BaseResultMap">
@@ -95,6 +95,16 @@
left join wx_c_user wcu on wcu.id = wcuf.c_user_id
left join wx_user_channel wuc on wuc.scene_address = wcuf.scene_address
<include refid="dynamicWhereConditions" />
<if test=" null != isNewUser and isNewUser == 1">
and wcuf.`is_new_user` = 1
</if>
<if test=" null != isNewUser and isNewUser == 0 ">
and wcuf.c_user_id not in (select c_user_id from wx_c_user_from wcuf <include refid="dynamicWhereConditions" /> and wcuf.`is_new_user` = 1)
</if>
order by wcuf.`create_date` desc
<if test=" null != begin ">
limit #{begin}, #{limit}
</if>

<!-- select <include refid="allColumns" />-->
<!-- ,(select nick_name from wx_c_user where id = wcuf.c_user_id ) c_user_nick_name-->
@@ -116,9 +126,9 @@
<!-- <include refid="dynamicWhereConditions" />-->
</select>

<select id="visits" parameterType="com.iformall.domain.po.WxCUserFrom" resultType="com.iformall.domain.po.WxCUserFrom">
select a.from_id fromId,a.from_name fromName,a.from_phone fromPhone,IFNULL(a.visits,0) visits,IFNULL(b.reach_user,0) reachUser,IFNULL(c.new_user,0) newUser from (
select wcuf.from_id,
<select id="visits" parameterType="com.iformall.domain.vo.WxCUserFromVo" resultType="com.iformall.domain.vo.WxCUserFromVo">
select a.from_id fromId,a.from_type fromType,a.from_name fromName,a.from_phone fromPhone,IFNULL(a.visits,0) visits,IFNULL(b.reach_user,0) reachUser,IFNULL(c.new_user,0) newUser from (
select wcuf.from_id,wcuf.from_type,
<if test=" fromType == 2 ">wcubi.nick_name from_name,wcubi.phone from_phone,</if>
<if test=" fromType == 5 ">wm.name from_name,wm.link_phone from_phone,</if>
count(*) visits
@@ -180,6 +190,9 @@
group by wcuf.from_id,wcuf.c_user_id
) c on c.from_id = a.from_id
order by a.visits desc
<if test=" null != begin ">
limit #{begin}, #{limit}
</if>
</select>

</mapper>

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