浏览代码

Merge branch 'dev' into 'mp-server-test'

Dev

See merge request quanshu/mp-server!509
jiang hao 2 年之前
父节点
当前提交
dd2d364573

+ 94 - 2
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/SaleSiteMgrController.java

@@ -3,6 +3,8 @@ package com.qs.mp.web.controller.api.admin;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qs.mp.admin.domain.excel.ChannelExcel;
+import com.qs.mp.admin.domain.excel.UserTicketOrderItemExcel;
 import com.qs.mp.admin.domain.vo.TicketCntVO;
 import com.qs.mp.admin.domain.vo.TicketCntVO;
 import com.qs.mp.admin.service.ITicketService;
 import com.qs.mp.admin.service.ITicketService;
 import com.qs.mp.channel.domain.Channel;
 import com.qs.mp.channel.domain.Channel;
@@ -28,21 +30,26 @@ import com.qs.mp.system.domain.SysUser;
 import com.qs.mp.system.service.ISysUserService;
 import com.qs.mp.system.service.ISysUserService;
 import com.qs.mp.user.domain.UserTicketOrder;
 import com.qs.mp.user.domain.UserTicketOrder;
 import com.qs.mp.user.service.IUserTicketOrderService;
 import com.qs.mp.user.service.IUserTicketOrderService;
+import com.qs.mp.utils.ExcelUtil;
 import com.qs.mp.web.controller.common.BaseApiController;
 import com.qs.mp.web.controller.common.BaseApiController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
 import ma.glasnost.orika.MapperFacade;
 import ma.glasnost.orika.MapperFacade;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -54,10 +61,9 @@ import org.springframework.web.bind.annotation.RestController;
  * @create 2022-02-28 16:17:48
  * @create 2022-02-28 16:17:48
  * @describe 经销商管理前端控制器
  * @describe 经销商管理前端控制器
  */
  */
-@Api("经销商管理API")
+@Api(tags = "经销商管理API")
 @RestController
 @RestController
 @RequestMapping("/api/v1/mp/admin/salesite/*")
 @RequestMapping("/api/v1/mp/admin/salesite/*")
-@Component
 public class SaleSiteMgrController extends BaseApiController {
 public class SaleSiteMgrController extends BaseApiController {
 
 
 	@Autowired
 	@Autowired
@@ -89,6 +95,10 @@ public class SaleSiteMgrController extends BaseApiController {
 	 */
 	 */
 	@PostMapping("/list")
 	@PostMapping("/list")
 	@PreAuthorize("@ss.hasPermi('business:salesite:list')")
 	@PreAuthorize("@ss.hasPermi('business:salesite:list')")
+	@ApiOperation("获取经销商列表信息,支持翻页")
+	@ApiResponses(
+			@ApiResponse(code = 200, message = "经销商列表返回信息",response = ChannelVO.class)
+	)
 	public TableDataInfo listSite(@RequestBody Channel channel) {
 	public TableDataInfo listSite(@RequestBody Channel channel) {
 		List<ChannelVO> list = new ArrayList<ChannelVO>();
 		List<ChannelVO> list = new ArrayList<ChannelVO>();
 		startPage();
 		startPage();
@@ -154,6 +164,84 @@ public class SaleSiteMgrController extends BaseApiController {
 		return "";
 		return "";
 	}
 	}
 
 
+	@PostMapping("/export")
+	@PreAuthorize("@ss.hasPermi('business:salesite:export')")
+	@ApiOperation("导出经销商信息")
+	@ApiResponses(
+			@ApiResponse(code = 200, message = "经销商列表返回信息",response = ChannelVO.class)
+	)
+	public AjaxResult export(@RequestBody Channel channel) {
+		QueryWrapper<Channel> queryWrapper = new QueryWrapper<>();
+		if(null!=channel && null != channel.getParentId()) {
+			queryWrapper.eq("t1.parent_id", channel.getParentId());
+		}
+		queryWrapper.eq("t1.level", 0);
+		queryWrapper.likeRight(null != channel && StringUtils.isNotBlank(channel.getMobile()), "t1.mobile", channel.getMobile());
+		queryWrapper.likeRight(null != channel && StringUtils.isNotBlank(channel.getName()), "t1.name", channel.getName());
+		queryWrapper.eq(null != channel && null != channel.getProvinceId(), "t1.province_id", channel.getProvinceId());
+		queryWrapper.eq(null != channel && null != channel.getCityId(), "t1.city_id", channel.getCityId());
+		queryWrapper.eq(null != channel && null != channel.getAreaId(), "t1.area_id", channel.getAreaId());
+		List<ChannelVO> list  = channelService.selectSaleSiteList(queryWrapper);
+		if (CollectionUtils.isEmpty(list)) {
+			return AjaxResult.error("没有符合条件的经销商信息");
+		}
+
+		if(null != list && list.size() > 0) {
+			for(ChannelVO channelVO : list) {
+				if(null != channelVO && null != channelVO.getChannelId()
+						&& StringUtils.isNotBlank(channelVO.getChannelNo())) {
+					channelVO.setParentsName(getParentsNameAndCommRate(channelVO.getChannelNo()));
+				}
+			}
+		}
+
+		List<ChannelExcel> excelList = new ArrayList<>();
+		for (ChannelVO channelVO : list) {
+			ChannelExcel channelExcel = new ChannelExcel();
+			channelExcel.setChannelId(channelVO.getChannelId());
+			channelExcel.setCommRate(channelVO.getCommRate());
+			channelExcel.setName(channelVO.getName());
+			channelExcel.setParentsName(channelVO.getParentsName());
+			if (Objects.nonNull(channelVO.getCertifyStatus())) {
+				channelExcel.setCertifyStatus(channelVO.getCertifyStatus().getDesc());
+			}
+			excelList.add(channelExcel);
+		}
+
+		ExcelUtil<ChannelExcel> util = new ExcelUtil<>(ChannelExcel.class);
+		return util.exportExcel(excelList, "经销商导出", false);
+	}
+
+	private String getParentsNameAndCommRate(String channelNo) {
+		if(StringUtils.isNotBlank(channelNo)) {
+			String[] noArray = channelNo.split("\\.");
+			if(null != noArray && noArray.length > 0) {
+				List<String> noList = new ArrayList<String>();
+				String parentNo = "";
+				for (int i = 0; i < noArray.length; i++) {
+					if(null != noArray[i] && StringUtils.isNotBlank(noArray[i])) {
+						parentNo += (i>0?".":"")+noArray[i];
+						if(StringUtils.isNotBlank(parentNo) && !parentNo.equals(channelNo)) {
+							noList.add(parentNo);
+						}
+					}
+				}
+				if(noList.size() > 0 ) {
+					LambdaQueryWrapper<Channel> queryWrapper = new LambdaQueryWrapper<Channel>();
+					queryWrapper.gt(Channel::getLevel, 0);
+					queryWrapper.in(Channel::getChannelNo,noList);
+					queryWrapper.orderByAsc(Channel::getLevel);
+					List<Channel> list = channelService.list(queryWrapper);
+					if(null != list && list.size() >0) {
+						return list.stream().map(channel -> channel.getName() + "(" + channel.getCommRate() + "%)").collect(Collectors.joining(" > "));
+					}
+				}
+			}
+		}
+		return "";
+	}
+
+
 	/**
 	/**
 	 * 查询所有渠道列表
 	 * 查询所有渠道列表
 	 *
 	 *
@@ -161,6 +249,10 @@ public class SaleSiteMgrController extends BaseApiController {
 	 */
 	 */
 	@PostMapping("/listAll")
 	@PostMapping("/listAll")
 	// @PreAuthorize("@ss.hasPermi('business:salesite:list')")
 	// @PreAuthorize("@ss.hasPermi('business:salesite:list')")
+	@ApiOperation("查询所有渠道列表")
+	@ApiResponses(
+			@ApiResponse(code = 200, message = "经销商列表返回信息",response = Channel.class)
+	)
 	public AjaxResult listAllSite() {
 	public AjaxResult listAllSite() {
 		List<Channel> list = new ArrayList<Channel>();
 		List<Channel> list = new ArrayList<Channel>();
 		LambdaQueryWrapper<Channel> queryWrapper = new LambdaQueryWrapper<Channel>();
 		LambdaQueryWrapper<Channel> queryWrapper = new LambdaQueryWrapper<Channel>();

+ 4 - 0
mp-common/src/main/java/com/qs/mp/common/enums/ChannelCertifyStatusEnum.java

@@ -29,6 +29,10 @@ public enum ChannelCertifyStatusEnum implements IEnum<String> {
     return value;
     return value;
   }
   }
 
 
+  public String getDesc() {
+    return desc;
+  }
+
   /**
   /**
    * 重写toString,单个转化成json
    * 重写toString,单个转化成json
    * @return
    * @return

+ 36 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/excel/ChannelExcel.java

@@ -0,0 +1,36 @@
+package com.qs.mp.admin.domain.excel;
+
+import com.qs.mp.common.annotation.Excel;
+import com.qs.mp.common.enums.ChannelCertifyStatusEnum;
+import com.qs.mp.common.enums.SiteTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 经销商导出
+ * @author Cup
+ * @date 2022/5/13
+ */
+@ApiModel("经销商导出")
+@Data
+public class ChannelExcel {
+
+    @Excel(name = "经销商编号")
+    private Long channelId;
+
+    @Excel(name = "经销商名称")
+    private String name;
+
+    @Excel(name = "经销商认证状态")
+    private String certifyStatus;
+
+    @Excel(name = "经销商佣金比例")
+    private BigDecimal commRate;
+
+    @Excel(name = "上级渠道")
+    String parentsName;
+
+}

+ 17 - 4
mp-service/src/main/java/com/qs/mp/channel/domain/vo/ChannelVO.java

@@ -1,6 +1,8 @@
 package com.qs.mp.channel.domain.vo;
 package com.qs.mp.channel.domain.vo;
 
 
 import com.qs.mp.channel.domain.Channel;
 import com.qs.mp.channel.domain.Channel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
 
 
 /**
 /**
@@ -8,21 +10,32 @@ import lombok.Data;
  * @Date 2022/3/1
  * @Date 2022/3/1
  */
  */
 @Data
 @Data
+@ApiModel("渠道经销商相关出参类")
 public class ChannelVO extends Channel {
 public class ChannelVO extends Channel {
+  @ApiModelProperty("经销网点数")
   long siteCnt;   // 经销网点数
   long siteCnt;   // 经销网点数
+  @ApiModelProperty("用户数")
   long userCnt;   // 用户数
   long userCnt;   // 用户数
-  
+
+  @ApiModelProperty("上级渠道名称")
   String parentName; // 上级渠道名称
   String parentName; // 上级渠道名称
-  
+
+  @ApiModelProperty("订单数")
   long orderCnt;   // 订单数
   long orderCnt;   // 订单数
+  @ApiModelProperty("子渠道数量")
   int childCnt;  // 子渠道数量
   int childCnt;  // 子渠道数量
+  @ApiModelProperty("经营数据")
   ChannelOperDataVO operData;  // 经营数据
   ChannelOperDataVO operData;  // 经营数据
   // SysUser sysUser;  // 关联的用户账号信息
   // SysUser sysUser;  // 关联的用户账号信息
-  
+
+  @ApiModelProperty("所有上级渠道名称 eg: 一级渠道 > 上N级渠道 ** > 上级渠道")
   String parentsName; // 所有上级渠道名称 eg: 一级渠道 > 上N级渠道 ** > 上级渠道
   String parentsName; // 所有上级渠道名称 eg: 一级渠道 > 上N级渠道 ** > 上级渠道
-  
+
+  @ApiModelProperty("线下库存(盲票张数)")
   long offLineQtyCnt; // 线下库存(盲票张数)
   long offLineQtyCnt; // 线下库存(盲票张数)
+  @ApiModelProperty("线下销售(线下盲票销售张数)")
   long offLineSaleCnt; // 线下销售(线下盲票销售张数)
   long offLineSaleCnt; // 线下销售(线下盲票销售张数)
+  @ApiModelProperty("线上销售(显示盲票销售张数)")
   long onLineSaleCnt; // 线上销售(显示盲票销售张数)
   long onLineSaleCnt; // 线上销售(显示盲票销售张数)