1、优化送水订单同步记录水票订单号业务
2、分销用户分销明细增加结算标识业务 3、增加分销用户个人当日收益数据统计
This commit is contained in:
@@ -33,7 +33,6 @@ public class GltTicketOrder implements Serializable {
|
||||
private Integer userTicketId;
|
||||
|
||||
@Schema(description = "关联订单编号")
|
||||
@TableField(exist = false)
|
||||
private String orderNo;
|
||||
|
||||
@Schema(description = "订单状态")
|
||||
|
||||
@@ -177,6 +177,7 @@ public class GltTicketOrderServiceImpl extends ServiceImpl<GltTicketOrderMapper,
|
||||
}
|
||||
|
||||
// 4) 插入 glt_ticket_order(storeId/addressId/totalNum/buyerRemarks…)
|
||||
gltTicketOrder.setOrderNo(userTicket.getOrderNo());
|
||||
gltTicketOrder.setUserId(userId);
|
||||
// 订单基础字段由后端兜底,避免前端误传/恶意传参
|
||||
gltTicketOrder.setStatus(0);
|
||||
|
||||
@@ -486,6 +486,9 @@ public class DealerOrderSettlement10584Task {
|
||||
|
||||
|
||||
ShopDealerRefereeVO dealerRefereeVO = shopDealerRefereeMapper.getDealerIdByUserId(order.getUserId());
|
||||
if(dealerRefereeVO == null){
|
||||
return null;
|
||||
}
|
||||
if (dealerLevel == 1) {
|
||||
Integer directUserId = dealerRefereeVO.getDirectUserId();
|
||||
Integer directUserType = dealerRefereeVO.getDirectUserType();
|
||||
|
||||
@@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -66,6 +67,13 @@ public class ShopDealerOrderController extends BaseController {
|
||||
return success(shopDealerOrderService.getByIdRel(id));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAuthority('shop:shopDealerOrder:list')")
|
||||
@Operation(summary = "查询个人今日收益")
|
||||
@GetMapping("/todayRevenue")
|
||||
public ApiResult<BigDecimal> todayRevenue() {
|
||||
return success(shopDealerOrderService.todayRevenue());
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAuthority('shop:shopDealerOrder:save')")
|
||||
@OperationLog
|
||||
@Operation(summary = "添加分销商订单记录表")
|
||||
|
||||
@@ -77,6 +77,9 @@ public class ShopDealerCapital implements Serializable {
|
||||
@Schema(description = "结算月份")
|
||||
private String month;
|
||||
|
||||
@Schema(description = "结算标识 0-未结算 1-已结算")
|
||||
private Integer paymentFlag;
|
||||
|
||||
@Schema(description = "商城ID")
|
||||
private Integer tenantId;
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.gxwebsoft.shop.entity.ShopDealerOrder;
|
||||
import com.gxwebsoft.shop.param.ShopDealerOrderParam;
|
||||
import com.gxwebsoft.shop.vo.ShopDealerOrderTaskVO;
|
||||
import com.gxwebsoft.shop.vo.ShopDealerOrderTodayRevenueVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
@@ -42,4 +43,11 @@ public interface ShopDealerOrderMapper extends BaseMapper<ShopDealerOrder> {
|
||||
*/
|
||||
List<ShopDealerOrderTaskVO> getDealerOrderList(@Param("tenantId") Integer tenantId);
|
||||
|
||||
/**
|
||||
* 获取用户当日分佣数据
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
List<ShopDealerOrderTodayRevenueVO> getTodayRevenue(@Param("userId") Integer userId);
|
||||
|
||||
}
|
||||
|
||||
@@ -111,5 +111,24 @@
|
||||
AND a.deleted = 0
|
||||
AND ((b.first_dividend > 0 AND first_dividend_flag = 0) OR (b.second_dividend > 0 AND second_dividend_flag = 0))
|
||||
</select>
|
||||
<select id="getTodayRevenue" resultType="com.gxwebsoft.shop.vo.ShopDealerOrderTodayRevenueVO">
|
||||
SELECT
|
||||
a.order_no,
|
||||
b.order_status,
|
||||
a.first_user_id,
|
||||
a.first_money,
|
||||
a.second_user_id,
|
||||
a.second_money,
|
||||
a.first_dividend_user,
|
||||
a.first_dividend,
|
||||
a.second_dividend_user,
|
||||
a.second_dividend
|
||||
FROM
|
||||
shop_dealer_order a
|
||||
LEFT JOIN shop_order b ON a.order_no = b.order_no
|
||||
WHERE
|
||||
DATE(a.create_time) = CURRENT_DATE
|
||||
AND (a.first_user_id = #{userId} OR a.second_user_id = #{userId} OR a.first_dividend_user = #{userId} OR a.second_dividend_user = #{userId})
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.gxwebsoft.common.core.web.PageResult;
|
||||
import com.gxwebsoft.shop.entity.ShopDealerOrder;
|
||||
import com.gxwebsoft.shop.param.ShopDealerOrderParam;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -39,6 +40,12 @@ public interface ShopDealerOrderService extends IService<ShopDealerOrder> {
|
||||
*/
|
||||
ShopDealerOrder getByIdRel(Integer id);
|
||||
|
||||
/**
|
||||
* 查询门店/服务商本人今日收益
|
||||
* @return
|
||||
*/
|
||||
BigDecimal todayRevenue();
|
||||
|
||||
/**
|
||||
* 手动触发单条订单的佣金解冻(保留与定时任务相同的前置条件检查)
|
||||
*
|
||||
|
||||
@@ -4,25 +4,25 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gxwebsoft.common.core.exception.BusinessException;
|
||||
import com.gxwebsoft.common.core.utils.LoginUserUtil;
|
||||
import com.gxwebsoft.common.core.web.PageParam;
|
||||
import com.gxwebsoft.common.core.web.PageResult;
|
||||
import com.gxwebsoft.common.system.entity.User;
|
||||
import com.gxwebsoft.glt.entity.GltTicketOrder;
|
||||
import com.gxwebsoft.glt.entity.GltTicketTemplate;
|
||||
import com.gxwebsoft.glt.entity.GltUserTicket;
|
||||
import com.gxwebsoft.glt.service.GltTicketOrderService;
|
||||
import com.gxwebsoft.glt.service.GltTicketTemplateService;
|
||||
import com.gxwebsoft.glt.service.GltUserTicketService;
|
||||
import com.gxwebsoft.shop.entity.ShopDealerCapital;
|
||||
import com.gxwebsoft.shop.entity.ShopDealerOrder;
|
||||
import com.gxwebsoft.shop.entity.ShopDealerUser;
|
||||
import com.gxwebsoft.shop.entity.ShopGoods;
|
||||
import com.gxwebsoft.shop.entity.ShopOrder;
|
||||
import com.gxwebsoft.shop.entity.ShopOrderGoods;
|
||||
import com.gxwebsoft.shop.entity.*;
|
||||
import com.gxwebsoft.shop.mapper.ShopDealerOrderMapper;
|
||||
import com.gxwebsoft.shop.mapper.ShopOrderMapper;
|
||||
import com.gxwebsoft.shop.param.ShopDealerOrderParam;
|
||||
import com.gxwebsoft.shop.service.ShopDealerCapitalService;
|
||||
import com.gxwebsoft.shop.service.ShopDealerOrderService;
|
||||
import com.gxwebsoft.shop.param.ShopDealerOrderParam;
|
||||
import com.gxwebsoft.common.core.web.PageParam;
|
||||
import com.gxwebsoft.common.core.web.PageResult;
|
||||
import com.gxwebsoft.shop.vo.ShopDealerOrderTodayRevenueVO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.support.TransactionTemplate;
|
||||
|
||||
@@ -32,11 +32,7 @@ import java.math.RoundingMode;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -105,6 +101,38 @@ public class ShopDealerOrderServiceImpl extends ServiceImpl<ShopDealerOrderMappe
|
||||
return param.getOne(baseMapper.selectListRel(param));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BigDecimal todayRevenue() {
|
||||
BigDecimal todayRevenue = BigDecimal.ZERO;
|
||||
User loginUser = LoginUserUtil.getLoginUser();
|
||||
if(loginUser != null){
|
||||
Integer userId = loginUser.getUserId();
|
||||
|
||||
List<ShopDealerOrderTodayRevenueVO> revenueVOList = baseMapper.getTodayRevenue(userId);
|
||||
if(CollectionUtils.isNotEmpty(revenueVOList)){
|
||||
for(ShopDealerOrderTodayRevenueVO revenueVO : revenueVOList){
|
||||
//已取消订单不统计
|
||||
if(Arrays.asList(2, 6).contains(revenueVO.getOrderStatus())){
|
||||
continue;
|
||||
}
|
||||
if(userId.equals(revenueVO.getFirstUserId()) && revenueVO.getFirstMoney().compareTo(BigDecimal.ZERO) > 0){
|
||||
todayRevenue = todayRevenue.add(revenueVO.getFirstMoney());
|
||||
}
|
||||
if(userId.equals(revenueVO.getSecondUserId()) && revenueVO.getSecondMoney().compareTo(BigDecimal.ZERO) > 0){
|
||||
todayRevenue = todayRevenue.add(revenueVO.getSecondMoney());
|
||||
}
|
||||
if(userId.equals(revenueVO.getFirstDividendUser()) && revenueVO.getFirstDividend().compareTo(BigDecimal.ZERO) > 0){
|
||||
todayRevenue = todayRevenue.add(revenueVO.getFirstDividend());
|
||||
}
|
||||
if(userId.equals(revenueVO.getSecondDividendUser()) && revenueVO.getSecondDividend().compareTo(BigDecimal.ZERO) > 0){
|
||||
todayRevenue = todayRevenue.add(revenueVO.getSecondDividend());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return todayRevenue;
|
||||
}
|
||||
|
||||
// ==================== 手动解冻 ====================
|
||||
|
||||
@Override
|
||||
|
||||
@@ -104,6 +104,7 @@ public class ShopDealerUserServiceImpl extends ServiceImpl<ShopDealerUserMapper,
|
||||
log.error("分销账户资金变更明细:" + entity);
|
||||
ShopDealerTypeEnum typeEnum = entity.getTypeEnum();
|
||||
ShopDealerCapitalUpdateEnum updateEnum = entity.getUpdateEnum();
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
//2.变动类型为 1-操作冻结账户余额 2-操作提现账户余额【直接结算】是需判断金额值问题
|
||||
if(ShopDealerTypeEnum.FREEZE_ACCOUNT.equals(typeEnum) || ShopDealerTypeEnum.WITHDRAW_ACCOUNT.equals(typeEnum)){
|
||||
@@ -152,7 +153,7 @@ public class ShopDealerUserServiceImpl extends ServiceImpl<ShopDealerUserMapper,
|
||||
dealerCapital.setComments(updateEnum.getDescription());
|
||||
dealerCapital.setToUserId(entity.getOrderUserId());
|
||||
dealerCapital.setTenantId(TENANT_ID);
|
||||
dealerCapital.setCreateTime(LocalDateTime.now());
|
||||
dealerCapital.setCreateTime(now);
|
||||
User loginUser = LoginUserUtil.getLoginUser();
|
||||
if(loginUser != null){
|
||||
dealerCapital.setCreator(loginUser.getUserId());
|
||||
@@ -179,8 +180,9 @@ public class ShopDealerUserServiceImpl extends ServiceImpl<ShopDealerUserMapper,
|
||||
dealerCapital.setFreezeMoneyAfter(dealerUser.getFreezeMoney());
|
||||
dealerCapital.setComments(updateEnum.getDescription());
|
||||
dealerCapital.setToUserId(entity.getOrderUserId());
|
||||
dealerCapital.setPaymentFlag(1);
|
||||
dealerCapital.setTenantId(TENANT_ID);
|
||||
dealerCapital.setCreateTime(LocalDateTime.now());
|
||||
dealerCapital.setCreateTime(now);
|
||||
User loginUser = LoginUserUtil.getLoginUser();
|
||||
if(loginUser != null){
|
||||
dealerCapital.setCreator(loginUser.getUserId());
|
||||
@@ -209,7 +211,8 @@ public class ShopDealerUserServiceImpl extends ServiceImpl<ShopDealerUserMapper,
|
||||
userCapitalMap.forEach((k, value) ->{
|
||||
|
||||
//5.4 查询是否存在待解冻订单数据
|
||||
ShopDealerCapital userCapital = value.stream().filter(capital -> ShopDealerTypeEnum.FREEZE_ACCOUNT.getCode().equals(capital.getType())).findFirst().orElse(null);
|
||||
ShopDealerCapital userCapital = value.stream().filter(capital -> ShopDealerTypeEnum.FREEZE_ACCOUNT.getCode().equals(capital.getType()) && capital.getPaymentFlag() != null
|
||||
&& capital.getPaymentFlag() == 0).findFirst().orElse(null);
|
||||
if(userCapital != null){
|
||||
|
||||
//5.5 查询此订单是否已结算
|
||||
@@ -239,15 +242,21 @@ public class ShopDealerUserServiceImpl extends ServiceImpl<ShopDealerUserMapper,
|
||||
dealerCapital.setMoneyAfter(dealerUser.getMoney());
|
||||
dealerCapital.setComments(updateEnum.getDescription());
|
||||
dealerCapital.setToUserId(entity.getOrderUserId());
|
||||
dealerCapital.setPaymentFlag(1);
|
||||
dealerCapital.setTenantId(TENANT_ID);
|
||||
dealerCapital.setCreateTime(LocalDateTime.now());
|
||||
dealerCapital.setCreateTime(now);
|
||||
User loginUser = LoginUserUtil.getLoginUser();
|
||||
if (loginUser != null) {
|
||||
dealerCapital.setCreator(loginUser.getUserId());
|
||||
}
|
||||
shopDealerCapitalMapper.insert(dealerCapital);
|
||||
userCapital.setPaymentFlag(1);
|
||||
}
|
||||
}
|
||||
|
||||
//5.6 更新冻结流水为已结算状态
|
||||
userCapital.setUpdateTime(now);
|
||||
shopDealerCapitalMapper.updateById(userCapital);
|
||||
}
|
||||
});
|
||||
}else {
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.gxwebsoft.shop.vo;
|
||||
|
||||
import cn.afterturn.easypoi.excel.annotation.Excel;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author xm
|
||||
* @since 2026-05-19
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "两级推荐人数据")
|
||||
public class ShopDealerOrderTodayRevenueVO {
|
||||
|
||||
@Schema(name = "订单编号")
|
||||
private String orderNo;
|
||||
|
||||
@Schema(description = "分销商用户id(一级)")
|
||||
private Integer firstUserId;
|
||||
|
||||
@Schema(description = "分销佣金(一级)")
|
||||
private BigDecimal firstMoney;
|
||||
|
||||
@Schema(description = "分销商用户id(二级)")
|
||||
private Integer secondUserId;
|
||||
|
||||
@Schema(description = "分销佣金(二级)")
|
||||
private BigDecimal secondMoney;
|
||||
|
||||
@Schema(description = "一级服务商/门店")
|
||||
private Integer firstDividendUser;
|
||||
|
||||
@Schema(description = "一级服务商/门店管理津贴")
|
||||
private BigDecimal firstDividend;
|
||||
|
||||
@Schema(description = "二级服务商/门店")
|
||||
private Integer secondDividendUser;
|
||||
|
||||
@Schema(description = "二级服务商/门店管理津贴")
|
||||
private BigDecimal secondDividend;
|
||||
|
||||
@Excel(name = "0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款")
|
||||
private Integer orderStatus;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user