guomengjiao месяцев назад: 4
Родитель
Сommit
4efa255a6a

+ 31 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/user/UserController.java

@@ -53,6 +53,14 @@ public class UserController extends BaseController {
         return R.ok(vo);
     }
 
+    @ApiOperation("商家-用户金额统计")
+    @GetMapping("/business-statistics")
+    public R<UserStatisticsVo> businessStatistics(UserBo bo) {
+        bo.setBusinessId(getBusinessId(true));
+        UserStatisticsVo vo = iUserService.statistics(bo);
+        return R.ok(vo);
+    }
+
     /**
      * 查询小程序用户管理列表
      */
@@ -64,6 +72,18 @@ public class UserController extends BaseController {
         return iUserService.queryPageList(bo, pageQuery);
     }
 
+    /**
+     * 商家查询小程序用户管理列表
+     */
+    @FilePathSplicing(type = FilePathSplicingType.RESPONSE)
+    @ApiOperation("商家-查询小程序用户管理列表")
+    @SaCheckPermission("system:miniapp:user:page")
+    @GetMapping("/businessPage")
+    public TableDataInfo<UserVo> businessPage(@Validated(QueryGroup.class) UserBo bo, PageQuery pageQuery) {
+        bo.setBusinessId(getBusinessId(true));
+        return iUserService.queryBusinessPageList(bo, pageQuery);
+    }
+
     /**
      * 查询小程序用户管理列表
      */
@@ -136,4 +156,15 @@ public class UserController extends BaseController {
         ExcelUtil.exportExcel(list, "小程序用户管理", UserVo.class, response);
     }
 
+    /**
+     * 修改用户状态
+     */
+    @ApiOperation("修改用户状态")
+    @SaCheckPermission("system:miniapp:user:edit")
+    @Log(title = "小程序用户管理", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeStatus/{id}")
+    public R<Void> changeStatus(@ApiParam("主键串") @NotNull(message = "主键不能为空")
+                                    @PathVariable Long id) {
+        return toAjax(iUserService.updateStatus(id) ? 1 : 0);
+    }
 }

+ 9 - 0
ruoyi-user/src/main/java/com/ruoyi/user/domain/vo/UserVo.java

@@ -185,4 +185,13 @@ public class UserVo {
      */
     @ApiModelProperty("是否是商家")
     private Boolean isBusiness;
+
+    @ApiModelProperty("剩余排队金额")
+    private BigDecimal surplusQueueMoney;
+    @ApiModelProperty("累计应补贴金额")
+    private BigDecimal shouldSubsidyMoney;
+    @ApiModelProperty("累计已补贴金额")
+    private BigDecimal alreadySubsidyMoney;
+    @ApiModelProperty("累计可用积分")
+    private BigDecimal availablePoint;
 }

+ 3 - 0
ruoyi-user/src/main/java/com/ruoyi/user/mapper/UserMapper.java

@@ -1,5 +1,6 @@
 package com.ruoyi.user.mapper;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import com.ruoyi.user.domain.User;
 import com.ruoyi.user.domain.bo.UserBo;
@@ -36,4 +37,6 @@ public interface UserMapper extends BaseMapperPlus<UserMapper, User, UserVo> {
     BigDecimal querySurplusQueueMoney(@Param("bo") UserBo bo);
 
     UserStatisticsVo querySubsidyMoney(@Param("bo") UserBo bo);
+
+    Page<UserVo> selectBusinessPage(@Param("page") Page<Object> build, @Param("bo") UserBo bo);
 }

+ 4 - 0
ruoyi-user/src/main/java/com/ruoyi/user/service/IUserService.java

@@ -193,4 +193,8 @@ public interface IUserService {
     String queryNameById(Long userId);
 
     UserStatisticsVo statistics(UserBo bo);
+
+    TableDataInfo<UserVo> queryBusinessPageList(UserBo bo, PageQuery pageQuery);
+
+    Boolean updateStatus(Long id);
 }

+ 46 - 0
ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserServiceImpl.java

@@ -17,6 +17,7 @@ import com.alipay.api.request.AlipayUserInfoShareRequest;
 import com.alipay.api.response.AlipaySystemOauthTokenResponse;
 import com.alipay.api.response.AlipayUserInfoShareResponse;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.binarywang.utils.qrcode.MatrixToImageWriter;
@@ -117,9 +118,29 @@ public class UserServiceImpl implements IUserService {
         }
         LambdaQueryWrapper<User> lqw = buildQueryWrapper(bo);
         Page<UserVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        result.setRecords(convertList(result.getRecords(), false));
         return TableDataInfo.build(result);
     }
 
+    private List<UserVo> convertList(List<UserVo> list, boolean isBusiness) {
+        if(ObjectUtil.isEmpty(list)) {
+            return new ArrayList<>();
+        }
+        return list.stream().map(item -> {
+            UserBo userBo = new UserBo();
+            userBo.setId(item.getId());
+            item.setSurplusQueueMoney(baseMapper.querySurplusQueueMoney(userBo));
+            UserStatisticsVo userStatisticsVo = baseMapper.querySubsidyMoney(userBo);
+            item.setShouldSubsidyMoney(userStatisticsVo.getShouldSubsidyMoney());
+            item.setAlreadySubsidyMoney(userStatisticsVo.getAlreadySubsidyMoney());
+            if (!isBusiness) {
+                UserStatisticsVo statistics = baseMapper.statistics(userBo);
+                item.setAvailablePoint(statistics.getAvailablePoint());
+            }
+            return item;
+        }).collect(Collectors.toList());
+    }
+
     /**
      * 查询小程序用户管理列表
      *
@@ -775,9 +796,34 @@ public class UserServiceImpl implements IUserService {
         statistics.setSurplusQueueMoney(baseMapper.querySurplusQueueMoney(bo));
         //累计补贴金额
         UserStatisticsVo subsidyMoney = baseMapper.querySubsidyMoney(bo);
+        statistics.setShouldSubsidyMoney(subsidyMoney.getShouldSubsidyMoney());
+        statistics.setAlreadySubsidyMoney(subsidyMoney.getAlreadySubsidyMoney());
         return statistics;
     }
 
+    @Override
+    public TableDataInfo<UserVo> queryBusinessPageList(UserBo bo, PageQuery pageQuery) {
+        if(ObjectUtil.isNotNull(bo.getCreateDayStart())) {
+            bo.setCreateDayStart(DateUtil.beginOfDay(bo.getCreateDayStart()));
+        }
+        if(ObjectUtil.isNotNull(bo.getCreateDayEnd())) {
+            bo.setCreateDayEnd(DateUtil.endOfDay(bo.getCreateDayEnd()));
+        }
+        Page<UserVo> result = baseMapper.selectBusinessPage(pageQuery.build(), bo);
+        result.setRecords(convertList(result.getRecords(), true));
+        return TableDataInfo.build(result);
+    }
+
+    @Override
+    public Boolean updateStatus(Long id) {
+        User user = loadByIdForLock(id, true);
+        this.baseMapper.update(null, new LambdaUpdateWrapper<User>()
+            .set(User::getStatus, !user.getStatus())
+            .eq(User::getId, id)
+        );
+        return true;
+    }
+
     private String generateUniqueMemberCode(Long userId) {
         //生成唯一码 用户不会重复 6-8位
         String userIdPart = String.valueOf(userId);

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

@@ -105,10 +105,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             sum(ub.order_total_consumption) shopConsume,
             sum(ub.online_order_total_consumption) lineConsume,
             sum(ub.integral_able) availablePoint
-        from tb_user u
-        join tb_user_business_role ub on u.id = ub.user_id
+        from tb_user_business_role ub
+        <if test="bo.id == null">
+            join tb_user u on u.id = ub.user_id
+        </if>
         <include refid="whereByStatis"/>
         <where>
+            <if test="bo.id != null">
+                and ub.user_id = #{bo.id}
+            </if>
             <if test="bo.businessId != null">
                 and ub.business_id = #{bo.businessId}
             </if>
@@ -117,8 +122,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="querySurplusQueueMoney" resultType="java.math.BigDecimal">
         select sum(tsq.should_subsidy_amount - tsq.actual_subsidy_amount) from tb_subsidy_queue tsq
-        join tb_user u on tsq.user_id = u.id
+        <if test="bo.id == null">
+            join tb_user u on tsq.user_id = u.id
+        </if>
         where tsq.subsidy_status = 0
+        <if test="bo.id != null">
+            and tsq.user_id = #{bo.id}
+        </if>
         <if test="bo.businessId != null">
             and tsq.current_business_id = #{bo.businessId}
         </if>
@@ -126,9 +136,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id="querySubsidyMoney" resultType="com.ruoyi.user.domain.vo.UserStatisticsVo">
-        select sum(tsq.should_subsidy_amount) shouldSubsidyMoney from tb_subsidy_queue tsq
-        join tb_user u on tsq.user_id = u.id
+        select sum(tsq.should_subsidy_amount) shouldSubsidyMoney, sum(tsq.actual_subsidy_amount) alreadySubsidyMoney
+        from tb_subsidy_queue tsq
+        <if test="bo.id == null">
+            join tb_user u on tsq.user_id = u.id
+        </if>
         <where>
+            <if test="bo.id != null">
+                and tsq.user_id = #{bo.id}
+            </if>
             <if test="bo.businessId != null">
                 and tsq.current_business_id = #{bo.businessId}
             </if>
@@ -136,6 +152,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="whereByStatis"/>
     </select>
 
+    <select id="selectBusinessPage" resultType="com.ruoyi.user.domain.vo.UserVo">
+        select u.*, ub.integral_able availablePoint from tb_user u
+        join tb_user_business_role ub on u.id = ub.user_id
+        where ub.business_id = #{bo.businessId}
+        <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.realName != null and bo.realName != ''">
+            and u.real_name like concat('%',#{bo.realName},'%')
+        </if>
+        <if test="bo.createDayStart != null">
+            and u.create_time &gt;= #{bo.createDayStart}
+        </if>
+        <if test="bo.createDayEnd != null">
+            and u.create_time &lt;= #{bo.createDayEnd}
+        </if>
+    </select>
+
     <sql id="whereByStatis">
         <where>
             <if test="bo.mobile != null and bo.mobile != ''">