Преглед изворни кода

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

lubo пре 4 месеци
родитељ
комит
fc73876fb7

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

@@ -14,7 +14,6 @@ import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.enums.FilePathSplicingType;
 import com.ruoyi.common.filepathsplicing.FilePathSplicing;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.subsidy.service.ISubsidyQueueService;
 import com.ruoyi.user.domain.bo.UserBo;
 import com.ruoyi.user.domain.vo.UserStatisticsVo;
 import com.ruoyi.user.domain.vo.UserVo;
@@ -46,13 +45,19 @@ import java.util.List;
 public class UserController extends BaseController {
 
     private final IUserService iUserService;
-    private final ISubsidyQueueService subsidyQueueService;
 
     @ApiOperation("用户金额统计")
     @GetMapping("/statistics")
     public R<UserStatisticsVo> statistics(UserBo bo) {
         UserStatisticsVo vo = iUserService.statistics(bo);
-//        vo.setSurplusQueueMoney(subsidyQueueService.);
+        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);
     }
 
@@ -67,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);
+    }
+
     /**
      * 查询小程序用户管理列表
      */
@@ -139,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);
+    }
 }

Разлика између датотеке није приказан због своје велике величине
+ 3 - 3
ruoyi-admin/src/main/resources/application-dev.yml


+ 6 - 3
ruoyi-api/src/main/java/com/ruoyi/api/controller/business/ApiBusinessController.java

@@ -98,9 +98,12 @@ public class ApiBusinessController extends AbstractApiController {
     @PostMapping("/info")
     public R<BusinessVo> getInfo(@RequestBody BusinessBo bo) {
         BusinessVo businessVo = iBusinessService.queryById(bo.getBusinessId());
-
-        businessVo.setDistance(MapTools.calculate(bo.getUserLongitude(), bo.getUserLatitude(), businessVo.getLongitude(), businessVo.getLatitude()));
-
+        if (businessVo == null) {
+            return R.ok();
+        }
+        if (StrUtil.isNotEmpty(bo.getUserLongitude()) && StrUtil.isNotEmpty(bo.getUserLatitude())) {
+            businessVo.setDistance(MapTools.calculate(bo.getUserLongitude(), bo.getUserLatitude(), businessVo.getLongitude(), businessVo.getLatitude()));
+        }
         // 没有标题和图片取值系统配置中的值
         String shareTitle = businessVo.getShareTitle();
         String shareImage = businessVo.getShareImage();

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

@@ -111,7 +111,7 @@ public class ApiBusinessDayBillController extends AbstractApiController {
         map.put("todayOnlineOrderNum", today.getOnlineOrderNum());
         map.put("todayOnlineOrderAmount", today.getOnlineOrderAmount());
 
-        if (yesterday.getOnlineOrderNum() > 0) {
+        if (ObjectUtil.isNotNull(yesterday) && yesterday.getOnlineOrderNum() > 0) {
             double v = (today.getOnlineOrderNum() - yesterday.getOnlineOrderNum()) / (double) yesterday.getOnlineOrderNum();
             map.put("onlineOrderOnDay", MathUtils.setScale(v * 100D, 1));
         } else {
@@ -121,7 +121,7 @@ public class ApiBusinessDayBillController extends AbstractApiController {
         map.put("todayShopOrderNum", today.getShopOrderNum());
         map.put("todayShopOrderAmount", today.getShopOrderAmount());
 
-        if (yesterday.getOnlineOrderNum() > 0) {
+        if (ObjectUtil.isNotNull(yesterday) && yesterday.getShopOrderNum() > 0) {
             double v = (today.getShopOrderNum() - yesterday.getShopOrderNum()) / (double) yesterday.getShopOrderNum();
             map.put("shopOrderOnDay", MathUtils.setScale(v * 100D, 1));
         } else {

+ 1 - 5
ruoyi-api/src/main/java/com/ruoyi/api/controller/line/ApiOnlineOrderController.java

@@ -4,14 +4,12 @@ import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.ruoyi.api.controller.common.AbstractApiController;
-import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.annotation.RepeatSubmit;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.common.core.validate.QueryGroup;
-import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.onlineorder.domain.bo.CreateOnlineOrderBo;
 import com.ruoyi.onlineorder.domain.bo.OnlineOrderBo;
 import com.ruoyi.onlineorder.domain.vo.OnlineOrderVo;
@@ -85,7 +83,6 @@ public class ApiOnlineOrderController extends AbstractApiController {
      * 用户在线下单在线订单
      */
     @ApiOperation("用户在线下单在线订单")
-    @Log(title = "在线订单", businessType = BusinessType.INSERT)
     @RepeatSubmit()
     @PostMapping("/create")
     public R<PayOnlineOrderVo> create(@Validated(AddGroup.class) @RequestBody CreateOnlineOrderBo bo) {
@@ -98,7 +95,7 @@ public class ApiOnlineOrderController extends AbstractApiController {
                 String.valueOf(order.getOrderId()),
                 lazyTime);
         }
-        return R.ok();
+        return R.ok(order);
     }
 
 
@@ -106,7 +103,6 @@ public class ApiOnlineOrderController extends AbstractApiController {
      * 用户取消订单
      */
     @ApiOperation("用户取消订单")
-    @Log(title = "在线订单", businessType = BusinessType.UPDATE)
     @RepeatSubmit()
     @PostMapping("/cancel/{orderId}")
     public R<Void> cancel(@ApiParam("主键")

+ 4 - 3
ruoyi-line/src/main/java/com/ruoyi/onlineorder/domain/vo/PayOnlineOrderVo.java

@@ -1,8 +1,7 @@
 package com.ruoyi.onlineorder.domain.vo;
 
 
-import com.ruoyi.common.core.validate.AddGroup;
-import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.fubeiPay.domain.PayVo;
 import com.ruoyi.onlineorder.enums.OnlineOrderPayType;
 import com.ruoyi.onlineorder.enums.OnlinePayStatus;
 import io.swagger.annotations.ApiModel;
@@ -10,7 +9,6 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
@@ -61,6 +59,9 @@ public class PayOnlineOrderVo implements Serializable {
     @ApiModelProperty(value = "预支付单编号", required = true)
     private String prepayId;
 
+    @ApiModelProperty(value = "支付信息", required = true)
+    private PayVo payVo;
+
     /**
      * 支付过期时间
      */

+ 1 - 0
ruoyi-line/src/main/java/com/ruoyi/onlineorder/service/impl/OnlineOrderServiceImpl.java

@@ -281,6 +281,7 @@ public class OnlineOrderServiceImpl implements IOnlineOrderService {
         PayVo payOrder = fubeiPayService.createPayOrder(pay);
         //TODO 调用第三方支付接口结束
         payOnlineOrderVo.setPrepayId(payOrder.getPayOrderId());
+        payOnlineOrderVo.setPayVo(payOrder);
         return payOnlineOrderVo;
     }
 

+ 0 - 8
ruoyi-user/src/main/java/com/ruoyi/user/domain/bo/UserBo.java

@@ -132,14 +132,6 @@ public class UserBo extends BaseEntity {
     @ApiModelProperty("账户余额")
     private BigDecimal balance;
 
-    @ApiModelProperty("消费开始时间")
-    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
-    @DateTimeFormat(pattern = "yyyy-MM-dd")
-    private Date consumeStartTime;
-    @ApiModelProperty("消费结束时间")
-    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
-    @DateTimeFormat(pattern = "yyyy-MM-dd")
-    private Date consumeEndTime;
     @ApiModelProperty("商家主键")
     private Long businessId;
 }

+ 4 - 2
ruoyi-user/src/main/java/com/ruoyi/user/domain/vo/UserStatisticsVo.java

@@ -58,8 +58,10 @@ public class UserStatisticsVo {
     private BigDecimal lineConsume;
     @ApiModelProperty("剩余排队金额")
     private BigDecimal surplusQueueMoney;
-    @ApiModelProperty("累计补贴金额")
-    private BigDecimal subsidyMoney;
+    @ApiModelProperty("累计应补贴金额")
+    private BigDecimal shouldSubsidyMoney;
+    @ApiModelProperty("累计已补贴金额")
+    private BigDecimal alreadySubsidyMoney;
     @ApiModelProperty("累计可用积分")
     private BigDecimal availablePoint;
 }

+ 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;
 }

+ 8 - 1
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;
@@ -31,5 +32,11 @@ public interface UserMapper extends BaseMapperPlus<UserMapper, User, UserVo> {
 
     BigDecimal queryAvailableBalance(@Param("bo") UserBo bo);
 
-    BigDecimal queryAvailablePoint(@Param("bo") UserBo bo);
+    UserStatisticsVo statistics(@Param("bo") UserBo bo);
+
+    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);
 }

+ 53 - 6
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());
+    }
+
     /**
      * 查询小程序用户管理列表
      *
@@ -769,12 +790,38 @@ public class UserServiceImpl implements IUserService {
 
     @Override
     public UserStatisticsVo statistics(UserBo bo) {
-        UserStatisticsVo vo = new UserStatisticsVo();
-        //累计可用余额
-        vo.setAvailableBalance(baseMapper.queryAvailableBalance(bo));
-        //累计可用积分
-        vo.setAvailablePoint(baseMapper.queryAvailablePoint(bo));
-        return vo;
+        UserStatisticsVo statistics = baseMapper.statistics(bo);
+        statistics.setAvailableBalance(baseMapper.queryAvailableBalance(bo));
+        //剩余排队金额
+        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) {

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

@@ -100,17 +100,79 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="whereByStatis"/>
     </select>
 
-    <select id="queryAvailablePoint" resultType="java.math.BigDecimal">
-        select sum(ub.integral_able) from tb_user u
-         join tb_user_business_role ub on u.id = ub.user_id
+    <select id="statistics" resultType="com.ruoyi.user.domain.vo.UserStatisticsVo">
+        select
+            sum(ub.order_total_consumption) shopConsume,
+            sum(ub.online_order_total_consumption) lineConsume,
+            sum(ub.integral_able) availablePoint
+        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>
         </where>
     </select>
 
+    <select id="querySurplusQueueMoney" resultType="java.math.BigDecimal">
+        select sum(tsq.should_subsidy_amount - tsq.actual_subsidy_amount) from tb_subsidy_queue tsq
+        <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>
+        <include refid="whereByStatis"/>
+    </select>
+
+    <select id="querySubsidyMoney" resultType="com.ruoyi.user.domain.vo.UserStatisticsVo">
+        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>
+        </where>
+        <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 != ''">