Jelajahi Sumber

新增管理端钱包明细相关接口

codingliang 2 tahun lalu
induk
melakukan
a5e3088dd3

+ 19 - 0
src/main/java/com/sqx/common/query/PageQuery.java

@@ -0,0 +1,19 @@
+package com.sqx.common.query;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 分页查询参数
+ */
+@Data
+@ApiModel("分页参数")
+public class PageQuery {
+
+    @ApiModelProperty("当前页,默认为1")
+    private int page = 1;
+
+    @ApiModelProperty("每页大小,默认为10")
+    private int limit = 10;
+}

+ 7 - 0
src/main/java/com/sqx/modules/app/dao/UserMoneyDetailsDao.java

@@ -3,9 +3,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.sqx.modules.app.entity.UserMoneyDetails;
+import com.sqx.modules.pay.controller.query.WalletDetailQuery;
+import com.sqx.modules.pay.vo.WalletDetailVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
+
 @Mapper
 public interface UserMoneyDetailsDao extends BaseMapper<UserMoneyDetails> {
 
@@ -23,4 +27,7 @@ public interface UserMoneyDetailsDao extends BaseMapper<UserMoneyDetails> {
 
     IPage<UserMoneyDetails> selectShopCashDepositList(Page<UserMoneyDetails> pages, Long shopId);
 
+    IPage<WalletDetailVO> walletDetailList(@Param("page") Page<UserMoneyDetails> pages, @Param("query") WalletDetailQuery query);
+
+    BigDecimal walletDetailStatistics(@Param("query") WalletDetailQuery query);
 }

+ 17 - 0
src/main/java/com/sqx/modules/app/service/UserMoneyDetailsService.java

@@ -1,8 +1,12 @@
 package com.sqx.modules.app.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.sqx.common.utils.PageUtils;
 import com.sqx.common.utils.Result;
 import com.sqx.modules.app.entity.UserMoneyDetails;
+import com.sqx.modules.pay.controller.query.WalletDetailQuery;
+
+import java.math.BigDecimal;
 
 public interface UserMoneyDetailsService extends IService<UserMoneyDetails> {
     Result queryUserMoneyDetails(Integer page, Integer limit, Long userId, Integer classify, Integer type);
@@ -12,4 +16,17 @@ public interface UserMoneyDetailsService extends IService<UserMoneyDetails> {
 
     Result selectShopCashDeposit(Long shopId, Integer page, Integer limit, Integer classify);
 
+    /**
+     * 钱包明细列表
+     * @param query
+     * @return
+     */
+    PageUtils walletDetailList(WalletDetailQuery query);
+
+    /**
+     * 钱包明细统计
+     * @param query
+     * @return
+     */
+    BigDecimal walletDetailStatistics(WalletDetailQuery query);
 }

+ 19 - 0
src/main/java/com/sqx/modules/app/service/impl/UserMoneyDetailsServiceImpl.java

@@ -9,8 +9,12 @@ import com.sqx.common.utils.Result;
 import com.sqx.modules.app.dao.UserMoneyDetailsDao;
 import com.sqx.modules.app.entity.UserMoneyDetails;
 import com.sqx.modules.app.service.UserMoneyDetailsService;
+import com.sqx.modules.pay.controller.query.WalletDetailQuery;
+import com.sqx.modules.pay.vo.WalletDetailVO;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+
 @Service
 public class UserMoneyDetailsServiceImpl extends ServiceImpl<UserMoneyDetailsDao, UserMoneyDetails> implements UserMoneyDetailsService {
 
@@ -57,4 +61,19 @@ public class UserMoneyDetailsServiceImpl extends ServiceImpl<UserMoneyDetailsDao
         PageUtils pageUtils = new PageUtils(baseMapper.selectShopCashDeposit(pages, shopId, classify));
         return Result.success().put("data", pageUtils);
     }
+
+    @Override
+    public PageUtils walletDetailList(WalletDetailQuery query) {
+        Page<UserMoneyDetails> pages = new Page<>(query.getPage(), query.getLimit());
+
+        IPage<WalletDetailVO> vo = baseMapper.walletDetailList(pages, query);
+
+        return new PageUtils(vo);
+    }
+
+    @Override
+    public BigDecimal walletDetailStatistics(WalletDetailQuery query) {
+        BigDecimal result = baseMapper.walletDetailStatistics(query);
+        return result;
+    }
 }

+ 37 - 0
src/main/java/com/sqx/modules/pay/controller/WalletDetailController.java

@@ -0,0 +1,37 @@
+package com.sqx.modules.pay.controller;
+
+import com.sqx.common.utils.PageUtils;
+import com.sqx.common.utils.Result;
+import com.sqx.modules.app.service.UserMoneyDetailsService;
+import com.sqx.modules.pay.controller.query.WalletDetailQuery;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+
+@RestController
+@Api(value = "钱包明细", tags = {"管理平台"})
+@RequestMapping(value = "/wallet")
+public class WalletDetailController {
+
+    @Resource
+    private UserMoneyDetailsService userMoneyDetailsService;
+
+    @ApiOperation("钱包明细列表")
+    @GetMapping("list")
+    public Result walletDetailList(WalletDetailQuery query) {
+        PageUtils result = userMoneyDetailsService.walletDetailList(query);
+        return Result.success().put("data", result);
+    }
+
+    @ApiOperation("钱包明细统计")
+    @GetMapping("statistics")
+    public Result walletDetailStatistics(WalletDetailQuery query) {
+        BigDecimal result = userMoneyDetailsService.walletDetailStatistics(query);
+        return Result.success().put("data", result);
+    }
+}

+ 34 - 0
src/main/java/com/sqx/modules/pay/controller/query/WalletDetailQuery.java

@@ -0,0 +1,34 @@
+package com.sqx.modules.pay.controller.query;
+
+import com.sqx.common.query.PageQuery;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * 钱包明细查询
+ */
+@Data
+@ApiModel("钱包明细详情")
+public class WalletDetailQuery extends PageQuery {
+
+    @ApiModelProperty("店铺名称,模糊查询")
+    private String shopName;
+
+    @ApiModelProperty("收支类别,1充值、2支出")
+    private String type;
+
+    @ApiModelProperty("明细类别,1骑手保证金、2商户保证金 、3钱包明细")
+    private String classify;
+
+    @ApiModelProperty("查询开始时间, 时间格式yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startTime;
+
+    @ApiModelProperty("查询截止时间, 时间格式yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTime;
+}

+ 37 - 0
src/main/java/com/sqx/modules/pay/vo/WalletDetailVO.java

@@ -0,0 +1,37 @@
+package com.sqx.modules.pay.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel("钱包明细")
+public class WalletDetailVO {
+
+    @ApiModelProperty("明细id")
+    private Integer id;
+
+    @ApiModelProperty("店铺名称")
+    private String shopName;
+
+    @ApiModelProperty("明细标题")
+    private String title;
+
+    @ApiModelProperty("明细内容")
+    private String content;
+
+    @ApiModelProperty("收支类别,1收入、2支出")
+    private String type;
+
+    @ApiModelProperty("钱包类别,1骑手保证金、2商户保证金、3钱包明细")
+    private String classify;
+
+    @ApiModelProperty("金额")
+    private BigDecimal money;
+
+    @ApiModelProperty("创建时间")
+    private Date createTime;
+}

+ 59 - 0
src/main/resources/mapper/userMoney/UserMoneyDetailsMapper.xml

@@ -15,4 +15,63 @@
         select * from user_money_details where shop_id = #{shopId} and classify = 2 order by create_time desc
     </select>
 
+    <sql id="walletQueryCondition">
+        <where>
+            <if test="query.shopName != null and query.shopName != ''">
+                and gs.shop_name like "%"#{query.shopName}"%"
+            </if>
+
+            <if test="query.type != null and query.type != ''">
+                and umd.type = #{query.type}
+            </if>
+
+            <if test="query.classify != null and query.classify != ''">
+                and umd.classify = #{query.classify}
+            </if>
+
+            <if test="query.startTime != null">
+                and umd.create_time >= #{query.startTime}
+            </if>
+
+            <if test="query.endTime != null">
+                and umd.create_time <![CDATA[<=]]> #{query.endTime}</if>
+        </where>
+    </sql>
+
+    <select id="walletDetailList" resultType="com.sqx.modules.pay.vo.WalletDetailVO">
+        select
+            umd.id,
+            gs.shop_name,
+            umd.title,
+            umd.content,
+            umd.type,
+            umd.classify,
+            umd.money,
+            umd.create_time
+        from
+            user_money_details umd
+            left join goods_shop gs on gs.shop_id = umd.shop_id
+        <include refid="walletQueryCondition"></include>
+        order by umd.create_time desc
+    </select>
+
+    <select id="walletDetailStatistics" resultType="java.math.BigDecimal">
+        select
+            sum(o.amount)
+        from
+            (
+                select
+                    case
+                        when umd.type = 1 then umd.money
+                        else -umd.money
+                    end as amount
+                from
+                    user_money_details umd
+                left join goods_shop gs on gs.shop_id = umd.shop_id
+                <include refid="walletQueryCondition"></include>
+                order by umd.create_time desc
+                limit #{query.page}, #{query.limit}
+            ) o
+    </select>
+
 </mapper>