Sfoglia il codice sorgente

Merge branch 'master' of http://115.29.66.169:10080/yiyao_shop/api

lubo 3 mesi fa
parent
commit
ccfa7a2264
19 ha cambiato i file con 145 aggiunte e 71 eliminazioni
  1. 35 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/shop/business/BusinessController.java
  2. 1 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/shop/product/ProductController.java
  3. 1 1
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/subsidy/SubsidyQueueController.java
  4. 1 1
      ruoyi-admin/src/main/resources/application-dev.yml
  5. 2 2
      ruoyi-api/src/main/java/com/ruoyi/api/controller/business/ApiBusinessDayBillController.java
  6. 0 3
      ruoyi-api/src/main/java/com/ruoyi/api/controller/common/CommonController.java
  7. 1 4
      ruoyi-business/src/main/java/com/ruoyi/agent/domain/vo/AgentVo.java
  8. 5 0
      ruoyi-business/src/main/java/com/ruoyi/business/domain/bo/BusinessBo.java
  9. 4 0
      ruoyi-business/src/main/java/com/ruoyi/business/service/IBusinessService.java
  10. 6 5
      ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BusinessApplyServiceImpl.java
  11. 18 0
      ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BusinessServiceImpl.java
  12. 25 0
      ruoyi-shop/src/main/java/com/ruoyi/shop/product/convert/ProductCategoryListConverter.java
  13. 13 36
      ruoyi-shop/src/main/java/com/ruoyi/shop/product/domain/vo/ProductVo.java
  14. 1 0
      ruoyi-shop/src/main/java/com/ruoyi/shop/product/service/impl/ProductStockFlowWaterServiceImpl.java
  15. 3 0
      ruoyi-shop/src/main/resources/mapper/product/ProductMapper.xml
  16. 2 0
      ruoyi-user/src/main/java/com/ruoyi/user/domain/bo/UserOpinionBo.java
  17. 2 0
      ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserOpinionServiceImpl.java
  18. 8 2
      ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserServiceImpl.java
  19. 17 17
      ruoyi-user/src/main/resources/mapper/user/UserMapper.xml

+ 35 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/shop/business/BusinessController.java

@@ -111,6 +111,15 @@ public class BusinessController extends BaseController {
         return R.ok(businessVo);
     }
 
+    @FilePathSplicing(type = FilePathSplicingType.RESPONSE)
+    @ApiOperation("获取商家详细信息")
+    @SaCheckPermission("business:business:query")
+    @GetMapping("/infoBase")
+    public R<BusinessVo> getInfoBase() {
+        BusinessVo businessVo = iBusinessService.queryById(getBusinessId(true));
+        return R.ok(businessVo);
+    }
+
     /**
      * 新增商家
      */
@@ -347,10 +356,36 @@ public class BusinessController extends BaseController {
         return businessVoTableDataInfo;
     }
 
+    @FilePathSplicing(type = FilePathSplicingType.RESPONSE)
+    @ApiOperation("查能迁移的连锁店")
+    @SaCheckPermission("business:business:chainPage")
+    @GetMapping("/chainPage")
+    public TableDataInfo<BusinessVo> chainPage(@Validated(QueryGroup.class) BusinessBo bo, PageQuery pageQuery) {
+        Long id = iBusinessService.queryParentBusinessIdById(bo.getBusinessId());
+        if (ObjectUtil.isNull(id)) {
+            //可能是总店
+            id = bo.getBusinessId();
+        }
+        BusinessBo queryBo = new BusinessBo();
+        queryBo.setParentBusinessId(id);
+        queryBo.setCloseStatus(false);
+        return iBusinessService.partnerPage(queryBo, pageQuery);
+    }
+
+
     @ApiOperation("下拉查连锁店")
     @GetMapping("/partnerSelect")
     public R<List<BusinessVo>> partnerSelect(@Validated(QueryGroup.class) BusinessBo bo) {
         bo.setParentBusinessId(getBusinessId(true));
         return R.ok(iBusinessService.querySlimList(bo));
     }
+
+    @FilePathSplicing(type = FilePathSplicingType.RESPONSE)
+    @ApiOperation("获取二维码")
+    @PostMapping("/getQrCode/{id}")
+    public R<String> getQrCode(@ApiParam("主键")
+                               @NotNull(message = "主键不能为空")
+                               @PathVariable("id") Long id) {
+        return R.ok("成功", iBusinessService.getQrCode(id));
+    }
 }

+ 1 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/shop/product/ProductController.java

@@ -216,6 +216,7 @@ public class ProductController extends BaseController {
     @Log(title = "产品", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(@Validated ProductBo bo, PageQuery pageQuery, HttpServletResponse response) {
+        bo.setBusinessId(getBusinessId(true));
         TableDataInfo<ProductVo> productVoTableDataInfo = iProductService.queryCustomPageList(bo, pageQuery);
         ExcelUtil.exportExcel(productVoTableDataInfo.getRows(), "商品", ProductVo.class, response);
     }

+ 1 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/subsidy/SubsidyQueueController.java

@@ -57,7 +57,7 @@ public class SubsidyQueueController extends BaseController {
      * 获取当前商家的排队数量
      */
     @ApiOperation("获取当前商家的排队数量")
-    @GetMapping("/validQueueCount}")
+    @GetMapping("/validQueueCount")
     public R<Long> validQueueCount() {
         return R.ok(iSubsidyQueueService.validQueueCount(getBusinessId(true), false));
     }

+ 1 - 1
ruoyi-admin/src/main/resources/application-dev.yml

@@ -273,4 +273,4 @@ fubei:
     callbackUrl: https://frp.songlanyun.com/api/wx/fuRefund/notify
 
 business:
-  qrUrl: https://yourdomain.com/universal_qr
+  qrUrl: https://shop.xiaocaituan.com

+ 2 - 2
ruoyi-api/src/main/java/com/ruoyi/api/controller/business/ApiBusinessDayBillController.java

@@ -68,8 +68,8 @@ public class ApiBusinessDayBillController extends AbstractApiController {
      * 导出商家日账单列表
      */
     @ApiOperation("导出商家日账单列表")
-    @PostMapping("/export")
-    public void export(@Validated @RequestBody BusinessDayBillBo bo, HttpServletResponse response) {
+    @GetMapping("/export")
+    public void export(@Validated BusinessDayBillBo bo, HttpServletResponse response) {
         if (ObjectUtil.isNull(bo.getBusinessId())) {
             bo.setBusinessId(getBusinessByUserId(getUserId(true), true));
         }

+ 0 - 3
ruoyi-api/src/main/java/com/ruoyi/api/controller/common/CommonController.java

@@ -69,7 +69,6 @@ public class CommonController extends AbstractApiController {
     @ApiImplicitParams({
         @ApiImplicitParam(name = "file", value = "文件", paramType = "query", dataTypeClass = File.class, required = true)
     })
-    @RepeatSubmit()
     @PostMapping("/upload")
     public R<SysOss> upload(@RequestPart("file") MultipartFile file) {
         getUserId();
@@ -88,7 +87,6 @@ public class CommonController extends AbstractApiController {
     @ApiImplicitParams({
         @ApiImplicitParam(name = "file", value = "文件", paramType = "query", dataTypeClass = File.class, required = true)
     })
-    @RepeatSubmit()
     @PostMapping("/uploadOrient")
     public R<SysOss> uploadOrient(@RequestPart("file") MultipartFile file) {
         getUserId();
@@ -120,7 +118,6 @@ public class CommonController extends AbstractApiController {
     @ApiImplicitParams({
         @ApiImplicitParam(name = "image", value = "Base64图片数据", paramType = "query", dataType = "String", required = true)
     })
-    @RepeatSubmit()
     @PostMapping("/uploadBase")
     public R<SysOss> uploadBase(@RequestBody Map<String, String> params) {
         String image = params.get("image");

+ 1 - 4
ruoyi-business/src/main/java/com/ruoyi/agent/domain/vo/AgentVo.java

@@ -55,7 +55,6 @@ public class AgentVo {
      * 头像
      */
     @FilePathValue
-    @ExcelProperty(value = "头像")
     @ApiModelProperty("头像")
     private String headPhoto;
 
@@ -184,7 +183,7 @@ public class AgentVo {
     /**
      * 累计提现金额
      */
-    @ExcelProperty(value = "累计提现金额", index = 12)
+    @ExcelProperty(value = "累计结算", index = 12)
     @ApiModelProperty("累计提现金额")
     private BigDecimal totalStatisticsWithdrawalAmount;
     /**
@@ -218,7 +217,6 @@ public class AgentVo {
      * 身份证正面照片URL
      */
     @FilePathValue
-    @ExcelProperty(value = "身份证正面照片URL")
     @ApiModelProperty("身份证正面照片URL")
     private String idCardFrontUrl;
 
@@ -226,7 +224,6 @@ public class AgentVo {
      * 身份证反面照片URL
      */
     @FilePathValue
-    @ExcelProperty(value = "身份证反面照片URL")
     @ApiModelProperty("身份证反面照片URL")
     private String idCardBackUrl;
 }

+ 5 - 0
ruoyi-business/src/main/java/com/ruoyi/business/domain/bo/BusinessBo.java

@@ -404,4 +404,9 @@ public class BusinessBo extends BaseEntity {
     @FilePathValue
     @ApiModelProperty(value = "商家结算信息")
     private BusinessSettlementBo settlementInfo;
+
+    /**
+     * 是否闭店
+     */
+    private Boolean closeStatus;
 }

+ 4 - 0
ruoyi-business/src/main/java/com/ruoyi/business/service/IBusinessService.java

@@ -155,4 +155,8 @@ public interface IBusinessService {
     List<Long> queryBusinessIdsByBusinessId(Long businessId);
 
     String loadCustomerServicePhone(Long businessId);
+
+    Long queryParentBusinessIdById(Long businessId);
+
+    String getQrCode(Long id);
 }

+ 6 - 5
ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BusinessApplyServiceImpl.java

@@ -132,6 +132,7 @@ public class BusinessApplyServiceImpl implements IBusinessApplyService {
         lqw.eq(bo.getAgentAuditUserId() != null, BusinessApply::getAgentAuditUserId, bo.getAgentAuditUserId());
         lqw.eq(bo.getAgentAuditStatus() != null, BusinessApply::getAgentAuditStatus, bo.getAgentAuditStatus());
         lqw.in(CollUtil.isNotEmpty(bo.getAgentAuditStatusList()), BusinessApply::getAgentAuditStatus, bo.getAgentAuditStatusList());
+        lqw.like(StringUtils.isNotBlank(bo.getLegalName()), BusinessApply::getLegalName, bo.getLegalName());
         Date startTime = bo.getStartTime();
         if (ObjectUtil.isNotNull(startTime)) {
             lqw.ge(BusinessApply::getCreateTime, DateUtil.beginOfDay(startTime));
@@ -269,13 +270,13 @@ public class BusinessApplyServiceImpl implements IBusinessApplyService {
         if (!AuditStatus.AUDIT_PASS.getCode().equals(businessApply.getAgentAuditStatus())) {
             throw new ServiceException(BusinessApplyExceptionEnum.AGENT_NOT_AUDIT_PASS);
         }
-        AgentAccountCodeVo agentAccountCodeVo = agentAccountCodeService.availableByAccountCode(businessApply.getAccountCode());
-        if (ObjectUtil.isNull(agentAccountCodeVo)) {
-            throw new ServiceException(BusinessApplyExceptionEnum.ACCOUNT_CODE_NOT_EXISTS);
-        }
-        Agent agent = agentService.loadById(agentAccountCodeVo.getAgentId(), true);
         Long businessId = businessService.queryIdByUserId(businessApply.getUserId());
         if (AuditStatus.AUDIT_PASS.getCode().equals(bo.getAuditStatus())) {
+            AgentAccountCodeVo agentAccountCodeVo = agentAccountCodeService.availableByAccountCode(businessApply.getAccountCode());
+            if (ObjectUtil.isNull(agentAccountCodeVo)) {
+                throw new ServiceException(BusinessApplyExceptionEnum.ACCOUNT_CODE_NOT_EXISTS);
+            }
+            Agent agent = agentService.loadById(agentAccountCodeVo.getAgentId(), true);
             //通过
             BusinessBo businessBo = BeanCopyUtils.copy(businessApply, BusinessBo.class);
             businessBo.setBusinessId(businessId);

+ 18 - 0
ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BusinessServiceImpl.java

@@ -199,6 +199,7 @@ public class BusinessServiceImpl implements IBusinessService {
         lqw.eq(bo.getShelvedStatus() != null, Business::getShelvedStatus, bo.getShelvedStatus());
         lqw.eq(bo.getHotStatus() != null, Business::getHotStatus, bo.getHotStatus());
         lqw.eq(bo.getParentBusinessId() != null, Business::getParentBusinessId, bo.getParentBusinessId());
+        lqw.eq(bo.getCloseStatus() != null, Business::getCloseStatus, bo.getCloseStatus());
         Date startTime = bo.getStartTime();
         if (ObjectUtil.isNotNull(startTime)) {
             lqw.ge(Business::getCreateTime, DateUtil.beginOfDay(startTime));
@@ -744,4 +745,21 @@ public class BusinessServiceImpl implements IBusinessService {
         return ObjectUtil.isNotNull(business) ? business.getCustomerServicePhone() : null;
     }
 
+    @Override
+    public Long queryParentBusinessIdById(Long businessId) {
+        Business business = baseMapper.selectOne(new LambdaQueryWrapper<Business>().select(Business::getParentBusinessId).eq(Business::getBusinessId, businessId));
+        return ObjectUtil.isNotNull(business) ? business.getParentBusinessId() : null;
+    }
+
+    @Override
+    public String getQrCode(Long id) {
+        Business business = loadById(id, true);
+        if (business.getQrCode() != null) {
+            return business.getQrCode();
+        }
+        business.setQrCode(generateQr(business.getInviteCode()));
+        baseMapper.updateById(business);
+        return business.getQrCode();
+    }
+
 }

+ 25 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/product/convert/ProductCategoryListConverter.java

@@ -0,0 +1,25 @@
+package com.ruoyi.shop.product.convert;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.data.WriteCellData;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+import com.ruoyi.shop.product.domain.vo.ProductCategoryRelationVo;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+public class ProductCategoryListConverter implements Converter<List<ProductCategoryRelationVo>> {
+    @Override
+    public WriteCellData<?> convertToExcelData(List<ProductCategoryRelationVo> value,
+                                               ExcelContentProperty contentProperty,
+                                               GlobalConfiguration globalConfiguration) {
+        // 拼接名称字段(假设ProductCategoryRelationVo有getName()方法)
+        String names = value.stream()
+            .map(ProductCategoryRelationVo::getCategoryName)
+            .filter(Objects::nonNull)
+            .collect(Collectors.joining(","));
+        return new WriteCellData<>(names);
+    }
+}

+ 13 - 36
ruoyi-shop/src/main/java/com/ruoyi/shop/product/domain/vo/ProductVo.java

@@ -1,42 +1,33 @@
 package com.ruoyi.shop.product.domain.vo;
 
-import java.math.BigDecimal;
-
-import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.ruoyi.common.annotation.ExcelDictFormat;
 import com.ruoyi.common.convert.ExcelBooleanConvert;
 import com.ruoyi.common.convert.ExcelEnumConvert;
 import com.ruoyi.common.core.domain.BaseVo;
-import com.ruoyi.common.core.validate.AddGroup;
-import com.ruoyi.common.core.validate.EditGroup;
 import com.ruoyi.common.enums.AuditStatus;
 import com.ruoyi.common.enums.ProductUseType;
 import com.ruoyi.common.filepathsplicing.FilePathRich;
 import com.ruoyi.common.filepathsplicing.FilePathValue;
-import com.ruoyi.common.typehandler.ListToStringTypeHandler;
 import com.ruoyi.shop.enums.ProductPaymentMode;
 import com.ruoyi.shop.merchant.domain.vo.MerchantCategoryVo;
 import com.ruoyi.shop.merchant.service.IMerchantCategoryService;
+import com.ruoyi.shop.product.convert.ProductCategoryListConverter;
 import com.ruoyi.shop.product.domain.ProductContent;
 import com.ruoyi.shop.product.service.IProductCategoryRelationService;
 import com.ruoyi.shop.product.service.IProductContentService;
 import com.ruoyi.shop.product.service.IProductSkuSetService;
 import com.ruoyi.shop.supplier.domain.vo.SupplierVo;
 import com.ruoyi.shop.supplier.service.ISupplierService;
-import com.ruoyi.shop.typehandler.ListToSkuTableItemTypeHandler;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import org.hibernate.validator.constraints.Length;
 
-import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
 import java.util.Optional;
 
 
@@ -56,7 +47,6 @@ public class ProductVo extends BaseVo {
     /**
      * 主键ID
      */
-    @ExcelProperty(value = "主键ID")
     @ApiModelProperty("主键ID")
     private Long productId;
 
@@ -90,7 +80,6 @@ public class ProductVo extends BaseVo {
     /**
      * 商品码SPU
      */
-    @ExcelProperty(value = "商品码SPU")
     @ApiModelProperty("商品码SPU")
     private String productCode;
 
@@ -161,14 +150,12 @@ public class ProductVo extends BaseVo {
      * 最小兑换积分数
      */
     @ApiModelProperty(value = "最小兑换积分数", required = true)
-    @ExcelProperty(value = "最小兑换积分数")
     private BigDecimal minPoints;
 
     /**
      * 最大兑换积分数
      */
     @ApiModelProperty(value = "最大兑换积分数", required = true)
-    @ExcelProperty(value = "最大兑换积分数")
     private BigDecimal maxPoints;
 
 
@@ -224,21 +211,26 @@ public class ProductVo extends BaseVo {
 
 
     @ApiModelProperty("分类名称")
-    @ExcelProperty(value = "分类名称")
+    @ExcelProperty(value = "平台分类")
     private String merchantCategoryName;
 
+    @ExcelProperty(value = "分类名称", converter = ProductCategoryListConverter.class)
+    @ApiModelProperty("商品分类关系")
+    private List<ProductCategoryRelationVo> productCategoryList;
 
-
+    /**
+     * 加载商品分类关系信息
+     */
+    public void loadProductCategoryList() {
+        IProductCategoryRelationService service = SpringUtil.getBean("productCategoryRelationServiceImpl", IProductCategoryRelationService.class);
+        this.productCategoryList = service.loadByProductId(this.productId);
+    }
 
     @ApiModelProperty("商家名称")
     @ExcelProperty(value = "商家名称")
     private String businessName;
 
-
-
-
     @ApiModelProperty("供应商")
-    @ExcelProperty(value = "分类名称")
     private String supplierName;
 
 
@@ -252,16 +244,12 @@ public class ProductVo extends BaseVo {
     /**
      * 是否新品(false:否,true:是)
      */
-    @ExcelProperty(value = "是否新品", converter = ExcelBooleanConvert.class)
-    @ExcelDictFormat(readConverterExp = "true=是,false=否")
     @ApiModelProperty("是否新品")
     private Boolean newStatus;
 
     /**
      * 是否推荐置顶(false:否,true:是)
      */
-    @ExcelProperty(value = "是否推荐置顶", converter = ExcelBooleanConvert.class)
-    @ExcelDictFormat(readConverterExp = "true=是,false=否")
     @ApiModelProperty("是否推荐置顶")
     private Boolean recommendStatus;
 
@@ -428,15 +416,4 @@ public class ProductVo extends BaseVo {
         this.productSkuSetList = service.loadVoByBusinessIdAndProductId(this.businessId,this.productId);
         this.stock = this.productSkuSetList.stream().mapToInt(ProductSkuSetVo::getStock).sum();
     }
-
-    @ApiModelProperty("商品分类关系")
-    private List<ProductCategoryRelationVo> productCategoryList;
-
-    /**
-     * 加载商品分类关系信息
-     */
-    public void loadProductCategoryList() {
-        IProductCategoryRelationService service = SpringUtil.getBean("productCategoryRelationServiceImpl", IProductCategoryRelationService.class);
-        this.productCategoryList = service.loadByProductId(this.productId);
-    }
 }

+ 1 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/product/service/impl/ProductStockFlowWaterServiceImpl.java

@@ -90,6 +90,7 @@ public class ProductStockFlowWaterServiceImpl implements IProductStockFlowWaterS
         lqw.eq(StringUtils.isNotBlank(bo.getOrderNo()), ProductStockFlowWater::getOrderNo, bo.getOrderNo());
         lqw.eq(StringUtils.isNotBlank(bo.getRefundOrderNo()), ProductStockFlowWater::getRefundOrderNo, bo.getRefundOrderNo());
         lqw.eq(bo.getRefundOrderId() != null, ProductStockFlowWater::getRefundOrderId, bo.getRefundOrderId());
+        lqw.orderByDesc(ProductStockFlowWater::getCreateTime);
         return lqw;
     }
 

+ 3 - 0
ruoyi-shop/src/main/resources/mapper/product/ProductMapper.xml

@@ -144,6 +144,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 </foreach>
                 )
             </if>
+            <if test="bo.productUseType != null">
+                and tp.product_use_type = #{bo.productUseType.code}
+            </if>
         </where>
         <if test="bo.orderType==1">
             ORDER BY tp.recommend_status DESC,tp.show_sales desc,tp.`create_time` ASC

+ 2 - 0
ruoyi-user/src/main/java/com/ruoyi/user/domain/bo/UserOpinionBo.java

@@ -105,5 +105,7 @@ public class UserOpinionBo extends BaseEntity {
     @ApiModelProperty(value = "处理结果", required = true)
     private String operateContent;
 
+    private Date submitStartTime;
+    private Date submitEndTime;
 
 }

+ 2 - 0
ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserOpinionServiceImpl.java

@@ -78,6 +78,8 @@ public class UserOpinionServiceImpl implements IUserOpinionService {
         lqw.like(StringUtils.isNotBlank(bo.getOperateUserName()), UserOpinion::getOperateUserName, bo.getOperateUserName());
         lqw.eq(bo.getOperateTime() != null, UserOpinion::getOperateTime, bo.getOperateTime());
         lqw.eq(StringUtils.isNotBlank(bo.getOperateContent()), UserOpinion::getOperateContent, bo.getOperateContent());
+        lqw.ge(bo.getSubmitStartTime() != null, UserOpinion::getSubmitTime, bo.getSubmitStartTime());
+        lqw.le(bo.getSubmitEndTime() != null, UserOpinion::getSubmitTime, bo.getSubmitEndTime());
         lqw.orderByDesc(UserOpinion::getSubmitTime);
         return lqw;
     }

+ 8 - 2
ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserServiceImpl.java

@@ -174,6 +174,7 @@ public class UserServiceImpl implements IUserService {
         lqw.ge(ObjectUtil.isNotNull(bo.getCreateDayStart()), User::getCreateTime, bo.getCreateDayStart());
         lqw.le(ObjectUtil.isNotNull(bo.getCreateDayEnd()), User::getCreateTime, bo.getCreateDayEnd());
         lqw.eq(ObjectUtil.isNotNull(bo.getParentUserId()), User::getParentUserId, bo.getParentUserId());
+        lqw.orderByDesc(User::getCreateTime);
         return lqw;
     }
 
@@ -796,13 +797,18 @@ public class UserServiceImpl implements IUserService {
     @Override
     public UserStatisticsVo statistics(UserBo bo) {
         UserStatisticsVo statistics = baseMapper.statistics(bo);
+        if (ObjectUtil.isNull(statistics)) {
+            return statistics;
+        }
         statistics.setAvailableBalance(baseMapper.queryAvailableBalance(bo));
         //剩余排队金额
         statistics.setSurplusQueueMoney(baseMapper.querySurplusQueueMoney(bo));
         //累计补贴金额
         UserStatisticsVo subsidyMoney = baseMapper.querySubsidyMoney(bo);
-        statistics.setShouldSubsidyMoney(subsidyMoney.getShouldSubsidyMoney());
-        statistics.setAlreadySubsidyMoney(subsidyMoney.getAlreadySubsidyMoney());
+        if (ObjectUtil.isNotNull(subsidyMoney)) {
+            statistics.setShouldSubsidyMoney(subsidyMoney.getShouldSubsidyMoney());
+            statistics.setAlreadySubsidyMoney(subsidyMoney.getAlreadySubsidyMoney());
+        }
         return statistics;
     }
 

+ 17 - 17
ruoyi-user/src/main/resources/mapper/user/UserMapper.xml

@@ -97,7 +97,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="queryAvailableBalance" resultType="java.math.BigDecimal">
         select sum(u.balance) from tb_user u
-        <include refid="whereByStatis"/>
+        <where>
+            <include refid="whereByStatis"/>
+        </where>
     </select>
 
     <select id="statistics" resultType="com.ruoyi.user.domain.vo.UserStatisticsVo">
@@ -109,8 +111,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="bo.id == null">
             join tb_user u on u.id = ub.user_id
         </if>
-        <include refid="whereByStatis"/>
         <where>
+            <include refid="whereByStatis"/>
             <if test="bo.id != null">
                 and ub.user_id = #{bo.id}
             </if>
@@ -148,8 +150,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="bo.businessId != null">
                 and tsq.current_business_id = #{bo.businessId}
             </if>
+            <include refid="whereByStatis"/>
         </where>
-        <include refid="whereByStatis"/>
     </select>
 
     <select id="selectBusinessPage" resultType="com.ruoyi.user.domain.vo.UserVo">
@@ -175,19 +177,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <sql id="whereByStatis">
-        <where>
-            <if test="bo.mobile != null and bo.mobile != ''">
-                and u.mobile like concat('%',#{bo.mobile},'%')
-            </if>
-            <if test="bo.nickname != null and bo.nickname != ''">
-                and u.nickname like concat('%',#{bo.nickname},'%')
-            </if>
-            <if test="bo.createDayStart != null">
-                and u.create_day &gt;= #{bo.createDayStart}
-            </if>
-            <if test="bo.createDayEnd != null">
-                and u.create_day &lt;= #{bo.createDayEnd}
-            </if>
-        </where>
+        <if test="bo.mobile != null and bo.mobile != ''">
+            and u.mobile like concat('%',#{bo.mobile},'%')
+        </if>
+        <if test="bo.nickname != null and bo.nickname != ''">
+            and u.nickname like concat('%',#{bo.nickname},'%')
+        </if>
+        <if test="bo.createDayStart != null">
+            and u.create_day &gt;= #{bo.createDayStart}
+        </if>
+        <if test="bo.createDayEnd != null">
+            and u.create_day &lt;= #{bo.createDayEnd}
+        </if>
     </sql>
 </mapper>