Commit dee2930e authored by 周健威's avatar 周健威

Merge remote-tracking branch 'origin/dev-chw' into dev-chw

parents 3c588e86 6d5bbcba
......@@ -48,8 +48,8 @@ public class BaseOrderRevenue implements Serializable {
@Column(name = "type")
@ApiModelProperty(value = "类型:1-租赁费;2-租赁费+上级拥金;3-违章押金")
private Integer type;
@ApiModelProperty(value = "类型s;逗号隔开")
private String type;
......
......@@ -33,4 +33,5 @@ public class UserTeamMemberVo {
private Integer totalPage;
private Integer totalTeams;
}
......@@ -367,6 +367,18 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A
return sellingWalletPagVo;
}
//查询我的用户佣金
public SellingWalletPagVo findSellingWaterPageb(Integer divisionType, Integer userId, Integer pageNo, Integer pageSize) {
SellingWalletPagVo sellingWalletPagVo = new SellingWalletPagVo();
PageDataVO<SellingWalletVo> pageDataVO = PageDataVO.pageInfo(pageNo, pageSize, () -> mapper.findSellingWaterPageb(userId, divisionType));
sellingWalletPagVo.setPageNum(pageNo);
sellingWalletPagVo.setPageSize(pageSize);
sellingWalletPagVo.setSellingWaters(pageDataVO.getData());
sellingWalletPagVo.setTotalCount(pageDataVO.getTotalCount().intValue());
sellingWalletPagVo.setTotalPage(pageDataVO.getTotalPage());
return sellingWalletPagVo;
}
public List<Integer> findMemberIdByLeaderIdAndOrdreType(Integer leaderId, int orderType) {
Example example = new Example(AppUserSellingWater.class);
Example.Criteria criteria = example.createCriteria();
......
......@@ -64,6 +64,9 @@ public class BaseOrderAcceptDetailedBiz extends BaseBiz<BaseOrderAcceptDetailedM
@Autowired
CompanyWalletDetailBiz companyWalletDetailBiz;
@Autowired
BaseOrderRevenueBiz revenueBiz;
//计算用户拥金
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
......@@ -83,6 +86,7 @@ public class BaseOrderAcceptDetailedBiz extends BaseBiz<BaseOrderAcceptDetailedM
OrderDetailDTO orderDetailDTO = restResponse.getData();
if (status == 1) {
payOrderAccept(orderWaterDTO,orderDetailDTO);
revenueBiz.saveRevenue(orderWaterDTO);
} else if (status == 2) {
BigDecimal acceptAmount = orderDetailDTO.getAcceptAmount();
log.info("分账----acceptAmount===="+acceptAmount );
......@@ -363,4 +367,9 @@ public class BaseOrderAcceptDetailedBiz extends BaseBiz<BaseOrderAcceptDetailedM
return mapper.selectList(acceptDetailedDTO);
}
public List<BaseOrderRevenue> getListByRevenue(OrderWaterDTO orderWaterDTO){
return mapper.getListByOrderNo(orderWaterDTO);
}
}
\ No newline at end of file
......@@ -2,12 +2,18 @@ package com.github.wxiaoqi.security.admin.biz;
import com.github.wxiaoqi.security.admin.dto.OrderWaterDTO;
import com.github.wxiaoqi.security.admin.entity.*;
import com.github.wxiaoqi.security.admin.mapper.BaseOrderRevenueMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;
import java.util.ArrayList;
import java.util.List;
@Service
......@@ -15,18 +21,49 @@ import org.springframework.stereotype.Service;
public class BaseOrderRevenueBiz extends BaseBiz<BaseOrderRevenueMapper, BaseOrderRevenue>{
@Autowired
BaseOrderAcceptDetailedBiz acceptDetailedBiz;
@Autowired
CompanyWalletDetailBiz walletDetailBiz;
public void addOrUpd(BaseOrderRevenue baseOrderRevenue){
BaseOrderRevenue baseOrderRevenue1 = mapper.infoByOrderNo(baseOrderRevenue.getOrderNo(), baseOrderRevenue.getType(),baseOrderRevenue.getCompanyId());
if (baseOrderRevenue1 == null ){
insertSelective(baseOrderRevenue);
}else {
baseOrderRevenue.setId(baseOrderRevenue1.getId());
updateSelectiveById(baseOrderRevenue);
}
}
public void addOrUpd(){
public void saveRevenue(OrderWaterDTO orderWaterDTO){
List<BaseOrderRevenue> list = acceptDetailedBiz.getListByRevenue(orderWaterDTO);
if (list.size() > 0){
for (BaseOrderRevenue baseOrderRevenue : list){
setTypes(baseOrderRevenue);
addOrUpd(baseOrderRevenue);
}
}
}
public void setTypes(BaseOrderRevenue baseOrderRevenue){
String type = baseOrderRevenue.getType();
if (StringUtils.isNotBlank(type)){
List<String> types = new ArrayList<>();
String[] split = type.split(",");
for (int i = 0; i < split.length; i++){
types.add(walletDetailBiz.setItype(Integer.parseInt(split[0]))+"");
}
baseOrderRevenue.setType(String.join(",",types));
}
}
}
......@@ -7,6 +7,7 @@ import com.github.wxiaoqi.security.admin.constant.enumerate.CompanyWalletSourceE
import com.github.wxiaoqi.security.admin.dto.BaseOrderAcceptDetailedDTO;
import com.github.wxiaoqi.security.admin.dto.OrderWaterDTO;
import com.github.wxiaoqi.security.admin.dto.WalletDetailDTO;
import com.github.wxiaoqi.security.admin.entity.BaseOrderRevenue;
import com.github.wxiaoqi.security.admin.entity.CompanyWalletDetail;
import com.github.wxiaoqi.security.admin.mapper.CompanyWalletDetailMapper;
import com.github.wxiaoqi.security.admin.vo.BaseOrderAcceptDetailedVO;
......@@ -41,6 +42,9 @@ public class CompanyWalletDetailBiz extends BaseBiz<CompanyWalletDetailMapper, C
@Autowired
CompanyWalletBiz companyWalletBiz;
@Autowired
BaseOrderRevenueBiz revenueBiz;
......@@ -80,9 +84,17 @@ public class CompanyWalletDetailBiz extends BaseBiz<CompanyWalletDetailMapper, C
public void updByIdOrOrderNo(BaseOrderAcceptDetailedDTO acceptDetailedDTO){
List<BaseOrderAcceptDetailedVO> list = acceptDetailedBiz.getList(acceptDetailedDTO);
List<CompanyWalletDetail> walletDetails = new ArrayList<>();
List<BaseOrderRevenue> revenues = new ArrayList<>();
String orderNo = "";
if (list.size() > 0){
for (BaseOrderAcceptDetailedVO acceptDetailedVO : list){
BigDecimal divisionAmount = acceptDetailedVO.getDivisionAmount() == null ? BigDecimal.ZERO : acceptDetailedVO.getDivisionAmount();
Integer source = setItype(acceptDetailedVO.getDivisionType());
orderNo=acceptDetailedVO.getOrderNo();
BaseOrderRevenue baseOrderRevenue = new BaseOrderRevenue();
baseOrderRevenue.setCompanyId(acceptDetailedVO.getMchId());
baseOrderRevenue.setAmount(divisionAmount);
revenues.add(baseOrderRevenue);
if (divisionAmount .compareTo(BigDecimal.ZERO) > 0 ){
Integer entryType = acceptDetailedVO.getEntryType() == null ? 0 : acceptDetailedVO.getEntryType();
if (entryType != 1){
......@@ -99,17 +111,31 @@ public class CompanyWalletDetailBiz extends BaseBiz<CompanyWalletDetailMapper, C
companyWalletDetail.setAmount(divisionAmount);
companyWalletDetail.setCompanyId(acceptDetailedVO.getMchId());
companyWalletDetail.setSAmount(companyAmount);
companyWalletDetail.setSource(setItype(acceptDetailedVO.getDivisionType()));
companyWalletDetail.setSource(source);
companyWalletDetail.setItype(CompanyWalletITypeEnum.COMPANY.getCode());
insertSelective(companyWalletDetail);
walletDetails.add(companyWalletDetail);
}
}
}
if (walletDetails.size() > 0){
Map<Integer, BigDecimal> amountSum = walletDetails.stream().filter(t -> t.getAmount() != null)
.collect(Collectors.groupingBy(CompanyWalletDetail::getCompanyId, CollectorsUtil.summingBigDecimal(CompanyWalletDetail::getAmount)));
amountSum.forEach((k,v) -> updCompanyWallet(k,v));
Map<Integer, BigDecimal> amountSum = walletDetails.stream().filter(t -> t.getAmount() != null)
.collect(Collectors.groupingBy(CompanyWalletDetail::getCompanyId, CollectorsUtil.summingBigDecimal(CompanyWalletDetail::getAmount)));
amountSum.forEach((k,v) -> updCompanyWallet(k,v));
//营收明细
if (revenues.size() > 0){
Map<Integer, BigDecimal> amounts = revenues.stream().filter(t -> t.getAmount() != null)
.collect(Collectors.groupingBy(BaseOrderRevenue::getCompanyId, CollectorsUtil.summingBigDecimal(BaseOrderRevenue::getAmount)));
for(Map.Entry<Integer, BigDecimal> entry : amounts.entrySet()){
Integer companyId = entry.getKey();
BigDecimal amount = entry.getValue();
BaseOrderRevenue baseOrderRevenue = new BaseOrderRevenue();
baseOrderRevenue.setAmount(amount);
baseOrderRevenue.setCompanyId(companyId);
baseOrderRevenue.setOrderNo(orderNo);
baseOrderRevenue.setStatus(1);
revenueBiz.addOrUpd(baseOrderRevenue);
}
}
}
......
......@@ -7,11 +7,13 @@ import com.github.wxiaoqi.security.admin.entity.AppUserDetail;
import com.github.wxiaoqi.security.admin.entity.AppUserLogin;
import com.github.wxiaoqi.security.admin.vo.UserTeamMemberVo;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.vehicle.entity.BranchCompany;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
import java.math.BigDecimal;
import java.util.*;
......@@ -40,6 +42,9 @@ public class UserBusinessBiz {
@Autowired
private AppUserDetailBiz appUserDetailBiz;
@Autowired
private BranchCompanyBiz branchCompanyBiz;
public UserTeamMemberVo findTeamMemberPageByUserId(Integer userId, Integer pageNo, Integer pageSize) {
UserTeamMemberVo userTeamMemberVo = new UserTeamMemberVo();
......@@ -98,6 +103,72 @@ public class UserBusinessBiz {
return userTeamMemberVo;
}
public UserTeamMemberVo findTeamMemberPageByUserId1(Integer userId, Integer pageNo, Integer pageSize) {
UserTeamMemberVo userTeamMemberVo = new UserTeamMemberVo();
//查询推荐的团队
Example example = new Example(BranchCompany.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("inviterAccount",userId);
criteria.andEqualTo("isDel",0);
List<com.github.wxiaoqi.security.admin.entity.BranchCompany> list = branchCompanyBiz.selectByExample(example);
userTeamMemberVo.setTotalTeams(list == null ?0:list.size());
PageDataVO<UserIncomeBo> dataVO = appUserSellingWaterBiz.findMemberIdAndIncomeMapByMemberIds(userId, pageNo, pageSize);
List<UserIncomeBo> data = dataVO.getData();
if (CollectionUtils.isEmpty(data)) {
userTeamMemberVo.setPageNum(pageNo);
userTeamMemberVo.setPageSize(pageSize);
userTeamMemberVo.setTotalCount(0);
userTeamMemberVo.setTotalPage(0);
userTeamMemberVo.setTotalIncome(new BigDecimal(0));
userTeamMemberVo.setUserTeamMemberBos(Collections.EMPTY_LIST);
return userTeamMemberVo;
}
Map<Integer, UserIncomeBo> userIdAndIncomMap = data.stream().collect(Collectors.toMap(UserIncomeBo::getUserId, Function.identity()));
List<Integer> memberIds = data.stream().map(UserIncomeBo::getUserId).collect(Collectors.toList());
Map<Integer, AppUserLogin> userIdAndAppUserLoginMap = appUserLoginBiz.findUserIdAndUserLoginMapByMemberIds(memberIds);
Map<Integer, AppUserDetail> userIdAndAppUserDetailMap = appUserDetailBiz.findUserIdAndUserDetailMapByMemberIds(memberIds);
List<UserTeamMemberBo> userTeamMemberBos = new ArrayList<>();
UserTeamMemberBo userTeamMemberBo;
BigDecimal totalIncome = new BigDecimal(0);
for (Integer memberId : memberIds) {
userTeamMemberBo = new UserTeamMemberBo();
userTeamMemberBo.setLeagueTime(userIdAndIncomMap.get(memberId).getLeagueTime());
userTeamMemberBo.setUserId(memberId);
if (userIdAndAppUserLoginMap != null) {
AppUserLogin appUserLogin = userIdAndAppUserLoginMap.get(memberId);
if (appUserLogin == null) {
continue;
}
userTeamMemberBo.setUserName(appUserLogin.getUsername());
}
if (userIdAndAppUserDetailMap != null) {
AppUserDetail appUserDetail = userIdAndAppUserDetailMap.get(memberId);
userTeamMemberBo.setHeadUrl(appUserDetail == null ? "" : appUserDetail.getHeadimgurl());
userTeamMemberBo.setNickName(appUserDetail == null ? "" : appUserDetail.getNickname());
userTeamMemberBo.setRealName(appUserDetail == null ? "" : appUserDetail.getRealname());
}
BigDecimal income = userIdAndIncomMap.get(memberId).getIncome() == null ? new BigDecimal(0) : userIdAndIncomMap.get(memberId).getIncome();
userTeamMemberBo.setIncome(income);
totalIncome = totalIncome.add(income);
userTeamMemberBos.add(userTeamMemberBo);
}
userTeamMemberBos.sort(Comparator.comparing(UserTeamMemberBo::getIncome).reversed());
userTeamMemberVo.setPageNum(dataVO.getPageNum());
userTeamMemberVo.setPageSize(dataVO.getPageSize());
userTeamMemberVo.setTotalCount(dataVO.getTotalCount().intValue());
userTeamMemberVo.setTotalPage(dataVO.getTotalPage());
userTeamMemberVo.setUserTeamMemberBos(userTeamMemberBos);
userTeamMemberVo.setTotalIncome(totalIncome);
return userTeamMemberVo;
}
public PromoteBO getPromoteBoByUserId(Integer userId) {
PromoteBO promoteBO = new PromoteBO();
......
......@@ -34,4 +34,6 @@ public interface AppUserSellingWaterMapper extends Mapper<AppUserSellingWater> {
@Param("startTime") Long startTime,
@Param("endTime") Long endTime);
List<AppUserSellingWater> getCommisionByOrder(@Param("orderId") Integer orderId);
List<SellingWalletVo>findSellingWaterPageb(@Param("userId") Integer userId, @Param("divisionType") Integer divisionType);
}
package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.dto.BaseOrderAcceptDetailedDTO;
import com.github.wxiaoqi.security.admin.dto.OrderWaterDTO;
import com.github.wxiaoqi.security.admin.entity.BaseOrderAcceptDetailed;
import com.github.wxiaoqi.security.admin.entity.BaseOrderRevenue;
import com.github.wxiaoqi.security.admin.vo.BaseOrderAcceptDetailedVO;
import tk.mybatis.mapper.common.Mapper;
......@@ -19,4 +21,6 @@ public interface BaseOrderAcceptDetailedMapper extends Mapper<BaseOrderAcceptDet
List<BaseOrderAcceptDetailedVO> selectList(BaseOrderAcceptDetailedDTO acceptDetailedDTO);
List<BaseOrderRevenue> getListByOrderNo(OrderWaterDTO orderWaterDTO);
}
......@@ -2,8 +2,13 @@ package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.entity.BaseOrderRevenue;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.additional.idlist.SelectByIdListMapper;
import tk.mybatis.mapper.common.Mapper;
public interface BaseOrderRevenueMapper extends Mapper<BaseOrderRevenue>, SelectByIdListMapper<BaseOrderRevenue,Integer> {
BaseOrderRevenue infoByOrderNo(@Param("orderNo") String orderNo, @Param("type")String type,@Param("companyId")Integer companyId);
}
\ No newline at end of file
......@@ -46,6 +46,17 @@ public class UserBussinessController {
}
}
@GetMapping("/teams1")
public ObjectRestResponse<UserTeamMemberVo> findTeamPage1(@RequestParam("pageNo") Integer pageNo, @RequestParam("pageSize") Integer pageSize, HttpServletRequest request){
try {
IJWTInfo infoFromToken = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request));
UserTeamMemberVo userTeamMemberVo = businessBiz.findTeamMemberPageByUserId1(Integer.valueOf(infoFromToken.getId()), pageNo, pageSize);
return ObjectRestResponse.succ(userTeamMemberVo);
} catch (Exception e) {
throw new BaseException(e);
}
}
@GetMapping("/promote")
public ObjectRestResponse<PromoteBO> findPromoteBo(HttpServletRequest request){
try {
......
......@@ -68,6 +68,20 @@ public class UserSellingWaterController {
}
}
@GetMapping("/pageb")
public ObjectRestResponse<SellingWalletPagVo> findSellingWaterPageb(@RequestParam(required = false,value = "divisionType") Integer divisionType,
@RequestParam("pageNo") Integer pageNo,
@RequestParam("pageSize") Integer pageSize,
HttpServletRequest request) {
try {
IJWTInfo infoFromToken = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request));
SellingWalletPagVo sellingWalletPagVo = appUserSellingWaterBiz.findSellingWaterPageb(divisionType, Integer.valueOf(infoFromToken.getId()), pageNo, pageSize);
return ObjectRestResponse.succ(sellingWalletPagVo);
} catch (Exception e) {
throw new BaseException(e);
}
}
@PostMapping("app/unauth/order")
public ObjectRestResponse order(@RequestBody OrderWaterDTO orderWaterDTO) {
try {
......
......@@ -189,4 +189,22 @@ FROM
) r
GROUP BY r.user_id
</select>
<select id="findSellingWaterPageb" resultType="com.github.wxiaoqi.security.admin.dto.AppUserSellingWaterDTO">
SELECT
wa.user_id AS 'userId',
SUM(wa.commission) as commission ,
wa.crt_time as crtTime,
wa.source_id as sourceId,
ul.username as sourceName
FROM
app_user_selling_water wa
LEFT JOIN base_order_accept_detailed bo ON wa.accept_id = bo.id
LEFT JOIN app_user_login ul ON wa.source_id = ul.id
where wa.waiting = 1
and wa.user_id = #{userId}
and bo.division_type = #{divisionType}
and bo.`status` = 1
GROUP BY wa.source_id
</select>
</mapper>
\ No newline at end of file
......@@ -46,5 +46,11 @@
</select>
<select id="getListByOrderNo" resultType="com.github.wxiaoqi.security.admin.entity.BaseOrderRevenue" parameterType="com.github.wxiaoqi.security.admin.dto.OrderWaterDTO">
SELECT order_no as orderNo,mch_id as companyId,user_id as userId,SUM(division_amount-fee) as amount,GROUP_CONCAT(division_type) as type FROM base_order_accept_detailed
WHERE type=1 AND `status`=0 and division_type in (3,5,6,7,8)AND order_no=#{orderNo}
GROUP BY order_no,mch_id
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.github.wxiaoqi.security.admin.mapper.BaseOrderRevenueMapper">
<select id="infoByOrderNo" resultType="com.github.wxiaoqi.security.admin.entity.BaseOrderRevenue">
SELECT * FROM base_order_revenue WHERE order_no=#{orderNo} and company_id=#{companyId}
<if test=" type != null and type != '' ">
and FIND_IN_SET(type,#{type} )>0
</if>
</select>
</mapper>
\ 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