Quellcode durchsuchen

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

Dev

See merge request quanshu/mp-server!336
zhong chunping vor 3 Jahren
Ursprung
Commit
afb5046c22

+ 36 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/ChannelMgrController.java

@@ -27,8 +27,10 @@ import ma.glasnost.orika.MapperFacade;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -135,6 +137,7 @@ public class ChannelMgrController extends BaseApiController {
 			queryWrapper.eq("t1.parent_id", channel.getParentId());
 		}
 		queryWrapper.gt("t1.level", 0);
+		queryWrapper.eq(null != channel && null != channel.getLevel(),"t1.level", channel.getLevel());
 		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());
@@ -338,6 +341,7 @@ public class ChannelMgrController extends BaseApiController {
 			int userCnt = channelUserRelService.getChannelTotalUserCnt(channelVO.getChannelNo());
 			channelVO.setSiteCnt(siteCnt);
 			channelVO.setUserCnt(userCnt);
+			channelVO.setParentsName(getParentsName(channelVO.getChannelNo()));
 		}
 	    // 查询渠道销售额、佣金收入、订单数等
 	    ChannelOperDataVO channelOperDataVO = channelService.getChannelTotalOperData(channelVO.getChannelNo());
@@ -348,5 +352,37 @@ public class ChannelMgrController extends BaseApiController {
 	    channelVO.setOperData(channelOperDataVO);
 		return AjaxResult.success(channelVO);
 	}
+	
+	
+	// 获取上级渠道迭代
+	private String getParentsName(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) {
+						String names = list.stream().map(Channel::getName).collect(Collectors.joining(" > "));
+						return names;
+					}
+				}
+			}
+		}
+		return "";
+	}
 
 }

+ 43 - 0
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.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qs.mp.admin.domain.vo.TicketCntVO;
+import com.qs.mp.admin.service.ITicketService;
 import com.qs.mp.channel.domain.Channel;
 import com.qs.mp.channel.domain.ChannelOrder;
 import com.qs.mp.channel.domain.ChannelUserRel;
@@ -31,6 +33,7 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -64,6 +67,9 @@ public class SaleSiteMgrController extends BaseApiController {
 
 	@Autowired
 	private ISysUserService userService;
+	
+	@Autowired
+	private ITicketService ticketService;
 
 	@Autowired
 	private MapperFacade mapperFacade;
@@ -102,11 +108,48 @@ public class SaleSiteMgrController extends BaseApiController {
 					// 查询用户信息
 					//SysUser sysUser = userService.selectUserById(channelVO.getUserId());
 					// channelVO.setSysUser(sysUser);
+					channelVO.setParentsName(getParentsName(channelVO.getChannelNo()));
+					// 统计盲票库存, 销量
+					TicketCntVO ticketCnt = ticketService.getTicketCnt(channelVO.getChannelId());
+					channelVO.setOffLineQtyCnt(null != ticketCnt?ticketCnt.getOffLineQtyCnt():0);
+					channelVO.setOffLineSaleCnt(null != ticketCnt?ticketCnt.getOffLineSaleCnt():0);
+					channelVO.setOnLineSaleCnt(null != ticketCnt?ticketCnt.getOnLineSaleCnt():0);
  				}
 			}
 		}
 		return getDataTable(list);
 	}
+	
+	// 获取上级渠道迭代
+	private String getParentsName(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) {
+						String names = list.stream().map(Channel::getName).collect(Collectors.joining(" > "));
+						return names;
+					}
+				}
+			}
+		}
+		return "";
+	}
 
 
 	/**

+ 21 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/vo/TicketCntVO.java

@@ -0,0 +1,21 @@
+package com.qs.mp.admin.domain.vo;
+
+import lombok.Data;
+
+/**
+ * @author mp
+ * @Date 2022/3/7
+ */
+@Data
+public class TicketCntVO {
+
+	// 线下库存(盲票张数)
+	long offLineQtyCnt; // 线下库存(盲票张数)
+	
+	// 线下销售(线下盲票销售张数)
+	long offLineSaleCnt; // 线下销售(线下盲票销售张数)
+	
+	//  线上销售(显示盲票销售张数)
+	long onLineSaleCnt; // 线上销售(显示盲票销售张数)
+
+}

+ 9 - 2
mp-service/src/main/java/com/qs/mp/admin/mapper/TicketMapper.java

@@ -4,8 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.qs.mp.admin.domain.Ticket;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.qs.mp.admin.domain.TicketAwardsPrize;
-import com.qs.mp.admin.domain.vo.TicketAwardsPrizeVO;
+import com.qs.mp.admin.domain.vo.TicketCntVO;
+
 import java.util.List;
 import org.apache.ibatis.annotations.Param;
 
@@ -18,4 +18,11 @@ public interface TicketMapper extends BaseMapper<Ticket> {
   Ticket getRandOne(@Param("boxId") String boxId, @Param("status") int status);
 
   List<Ticket> listTicket(@Param(Constants.WRAPPER) Wrapper<Ticket> queryWrapper);
+  
+  /**
+   * 统计经销商盲票销量,库存
+   * @param channelId
+   * @return
+   */
+  TicketCntVO getTicketCnt(@Param("channelId") Long channelId);
 }

+ 10 - 0
mp-service/src/main/java/com/qs/mp/admin/service/ITicketService.java

@@ -3,10 +3,13 @@ package com.qs.mp.admin.service;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.qs.mp.admin.domain.Ticket;
 import com.qs.mp.admin.domain.excel.TicketExcel;
+import com.qs.mp.admin.domain.vo.TicketCntVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.util.List;
 
+import org.apache.ibatis.annotations.Param;
+
 /**
  * <p>
  * 盲票 服务类
@@ -39,4 +42,11 @@ public interface ITicketService extends IService<Ticket> {
    * @return
    */
   List<Ticket> listTicket(Wrapper<Ticket> queryWrapper);
+  
+  /**
+   * 统计经销商盲票销量,库存
+   * @param channelId
+   * @return
+   */
+  TicketCntVO getTicketCnt(Long channelId);
 }

+ 8 - 0
mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.qs.mp.admin.domain.Ticket;
 import com.qs.mp.admin.domain.excel.TicketExcel;
+import com.qs.mp.admin.domain.vo.TicketCntVO;
 import com.qs.mp.admin.mapper.TicketMapper;
 import com.qs.mp.admin.service.ITicketService;
 import com.qs.mp.common.exception.ServiceException;
@@ -76,4 +77,11 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
 	public List<Ticket> listTicket(Wrapper<Ticket> queryWrapper) {
 		return getBaseMapper().listTicket(queryWrapper);
 	}
+
+	@Override
+	public TicketCntVO getTicketCnt(Long channelId) {
+		return getBaseMapper().getTicketCnt(channelId);
+	}
+	
+	
 }

+ 10 - 0
mp-service/src/main/java/com/qs/mp/channel/domain/vo/ChannelVO.java

@@ -13,9 +13,19 @@ import lombok.Data;
 public class ChannelVO extends Channel {
   long siteCnt;   // 经销网点数
   long userCnt;   // 经销用户数
+  
   String parentName; // 上级渠道名称
+  
   long orderCnt;   // 订单数
   int childCnt;  // 子渠道数量
   ChannelOperDataVO operData;  // 经营数据
   // SysUser sysUser;  // 关联的用户账号信息
+  
+  String parentsName; // 所有上级渠道名称 eg: 一级渠道 > 上N级渠道 ** > 上级渠道
+  
+  long offLineQtyCnt; // 线下库存(盲票张数)
+  long offLineSaleCnt; // 线下销售(线下盲票销售张数)
+  long onLineSaleCnt; // 线上销售(显示盲票销售张数)
+  
+  
 }

+ 11 - 0
mp-service/src/main/resources/mapper/admin/TicketMapper.xml

@@ -43,4 +43,15 @@
         on t1.ticket_id = t2.ticket_id
 
     </select>
+    
+    <select id="getTicketCnt" resultType="com.qs.mp.admin.domain.vo.TicketCntVO">
+       select
+		 SUM( CASE WHEN (t2.`status` != 1 and t3.type = 'online') THEN 1 ELSE 0 END ) AS onLineSaleCnt,
+		 SUM( CASE WHEN (t2.`status` != 1 and t3.type = 'offline') THEN 1 ELSE 0 END ) AS offLineSaleCnt,
+		 SUM( CASE WHEN (t2.`status` = 1 and t3.type = 'offline') THEN 1 ELSE 0 END ) AS offLineQtyCnt
+		from mp_channel_order_detail t1
+		left join mp_ticket t2 on t1.pkg_id = t2.pkg_id
+		left join mp_ticket_box t3 on t2.box_id = t3.box_id
+		where t1.channel_id = #{channelId};
+    </select>
 </mapper>