فهرست منبع

Accept Merge Request #9: (dev-lzl -> dev-feat)

Merge Request: 添加入账管理接口

Created By: @刘子麟
Accepted By: @刘子麟
URL: https://chuanghaikeji.coding.net/p/moxuanyunshangwaimai/d/backend/git/merge/9
刘子麟 1 سال پیش
والد
کامیت
6b5fc1c65b

+ 13 - 3
src/main/java/com/sqx/modules/app/dao/UserMoneyDetailsDao.java

@@ -9,18 +9,19 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 @Mapper
 public interface UserMoneyDetailsDao extends BaseMapper<UserMoneyDetails> {
 
-    Double monthIncome(@Param("date") String date,@Param("userId") Long userId);
+    Double monthIncome(@Param("date") String date, @Param("userId") Long userId);
 
     Double selectMyProfit(Long userId);
 
-    IPage<UserMoneyDetails> selectUserMoneyDetails(Page<UserMoneyDetails> pages,@Param("userId") Long userId, @Param("classify") Integer classify);
+    IPage<UserMoneyDetails> selectUserMoneyDetails(Page<UserMoneyDetails> pages, @Param("userId") Long userId, @Param("classify") Integer classify);
 
     IPage<UserMoneyDetails> selectPwCashDetails(Page<UserMoneyDetails> pages, @Param("userName") String userName, @Param("date") String date,
-                                                @Param("dateType") String dateType,@Param("zhifubao") String zhifubao, @Param("zhifubaoName") String zhifubaoName,
+                                                @Param("dateType") String dateType, @Param("zhifubao") String zhifubao, @Param("zhifubaoName") String zhifubaoName,
                                                 @Param("userId") Long userId);
 
     IPage<UserMoneyDetails> selectShopCashDeposit(Page<UserMoneyDetails> pages, Long shopId, Integer classify);
@@ -30,4 +31,13 @@ public interface UserMoneyDetailsDao extends BaseMapper<UserMoneyDetails> {
     IPage<WalletDetailVO> walletDetailList(@Param("page") Page<UserMoneyDetails> pages, @Param("query") WalletDetailQuery query);
 
     BigDecimal walletDetailStatistics(@Param("query") WalletDetailQuery query);
+
+    List<UserMoneyDetails> accountEntryManagementDetailsList(@Param("row") Integer row, @Param("limit") Integer limit, @Param("shopName") String shopName, @Param("shopPhone") String shopPhone,
+                                                             @Param("userPhone") String userPhone, @Param("couponName") String couponName,
+                                                             @Param("orderNumber") String orderNumber, @Param("startTime") String startTime, @Param("endTime") String endTime);
+
+    int accountEntryManagementDetailsCount(@Param("shopName") String shopName, @Param("shopPhone") String shopPhone,
+                                           @Param("userPhone") String userPhone, @Param("couponName") String couponName,
+                                           @Param("orderNumber") String orderNumber, @Param("startTime") String startTime, @Param("endTime") String endTime);
+
 }

+ 56 - 0
src/main/java/com/sqx/modules/app/entity/UserMoneyDetails.java

@@ -78,5 +78,61 @@ public class UserMoneyDetails implements Serializable {
     @TableField(exist = false)
     private String userName;
 
+    /**
+     * 店铺名称
+     */
+    @TableField(exist = false)
+    private String shopName;
+
+    /**
+     * 店铺手机号
+     */
+    @TableField(exist = false)
+    private String shopPhone;
+
+    /**
+     * 下单手机号
+     */
+    @TableField(exist = false)
+    private String userPhone;
+
+    /**
+     * 优惠活动名称
+     */
+    @TableField(exist = false)
+    private String couponName;
+
+    /**
+     * 活动优惠金额
+     */
+    @TableField(exist = false)
+    private BigDecimal activityDiscountAmount;
 
+
+    /**
+     * 优惠券优惠金额
+     */
+    @TableField(exist = false)
+    private BigDecimal couponMoney;
+
+    /**
+     * 跑腿费
+     */
+    @TableField(exist = false)
+    private BigDecimal errandMoney;
+
+    /**
+     * 订单号
+     */
+    @TableField(exist = false)
+    private BigDecimal orderNumber;
+
+    /**
+     * 订单id
+     */
+    /**
+     * 订单号
+     */
+    @TableField(exist = false)
+    private BigDecimal orderId;
 }

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

@@ -29,4 +29,20 @@ public interface UserMoneyDetailsService extends IService<UserMoneyDetails> {
      * @return
      */
     BigDecimal walletDetailStatistics(WalletDetailQuery query);
+
+    /**
+     * 入账管理
+     * @param page
+     * @param limit
+     * @param shopName
+     * @param shopPhone
+     * @param userPhone
+     * @param couponName
+     * @param orderNumber
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    PageUtils accountEntryManagementDetails(Integer page, Integer limit, String shopName, String shopPhone, String userPhone, String couponName, String orderNumber, String startTime, String endTime);
+
 }

+ 34 - 6
src/main/java/com/sqx/modules/app/service/impl/UserMoneyDetailsServiceImpl.java

@@ -11,22 +11,25 @@ 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.checkerframework.checker.units.qual.A;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 @Service
 public class UserMoneyDetailsServiceImpl extends ServiceImpl<UserMoneyDetailsDao, UserMoneyDetails> implements UserMoneyDetailsService {
 
     @Override
-    public Result queryUserMoneyDetails(Integer page, Integer limit, Long userId,Integer classify,Integer type) {
+    public Result queryUserMoneyDetails(Integer page, Integer limit, Long userId, Integer classify, Integer type) {
         IPage<UserMoneyDetails> page1 = new Page(page, limit);
         QueryWrapper<UserMoneyDetails> queryWrapper = new QueryWrapper();
         queryWrapper.eq("user_id", userId);
-        if(classify!=null){
+        if (classify != null) {
             queryWrapper.eq("classify", classify);
         }
-        if(type!=null){
+        if (type != null) {
             queryWrapper.eq("type", type);
         }
         queryWrapper.eq("state", 2);
@@ -36,7 +39,7 @@ public class UserMoneyDetailsServiceImpl extends ServiceImpl<UserMoneyDetailsDao
 
     @Override
     public Double monthIncome(String date, Long userId) {
-        return baseMapper.monthIncome(date,userId);
+        return baseMapper.monthIncome(date, userId);
     }
 
     @Override
@@ -44,10 +47,10 @@ public class UserMoneyDetailsServiceImpl extends ServiceImpl<UserMoneyDetailsDao
         IPage<UserMoneyDetails> page1 = new Page(page, limit);
         QueryWrapper<UserMoneyDetails> queryWrapper = new QueryWrapper();
         queryWrapper.eq("shop_id", shopId);
-        if(classify!=null){
+        if (classify != null) {
             queryWrapper.eq("classify", classify);
         }
-        if(type!=null){
+        if (type != null) {
             queryWrapper.eq("type", type);
         }
         queryWrapper.eq("state", 2);
@@ -77,4 +80,29 @@ public class UserMoneyDetailsServiceImpl extends ServiceImpl<UserMoneyDetailsDao
         BigDecimal result = baseMapper.walletDetailStatistics(query);
         return result;
     }
+
+
+    @Override
+    public PageUtils accountEntryManagementDetails(Integer page, Integer limit, String shopName, String shopPhone, String userPhone, String couponName, String orderNumber, String startTime, String endTime) {
+        IPage<UserMoneyDetails> iPage = new Page<>();
+        Integer row=(page-1)*limit;
+        List<UserMoneyDetails> userMoneyDetailsList = baseMapper.accountEntryManagementDetailsList(row,limit, shopName, shopPhone, userPhone, couponName, orderNumber, startTime, endTime);
+        int total = baseMapper.accountEntryManagementDetailsCount(shopName, shopPhone, userPhone, couponName, orderNumber, startTime, endTime);
+
+//        当前页数
+        iPage.setCurrent(page);
+//        每页显示数
+        iPage.setSize(limit);
+//        数据
+        iPage.setRecords(userMoneyDetailsList);
+//        总页数
+
+        iPage.setPages((int)Math.ceil((double)total/limit));
+//        总数
+        iPage.setTotal(total);
+        PageUtils pageUtils = new PageUtils(iPage);
+        List<?> list = pageUtils.getList();
+        System.out.println("list = " + list);
+        return pageUtils;
+    }
 }

+ 7 - 0
src/main/java/com/sqx/modules/shop/controller/app/ShopMoneyController.java

@@ -180,4 +180,11 @@ public class ShopMoneyController extends AbstractController {
         return userMoneyDetailsService.selectShopCashDeposit(sysUserShop.getShopId(), page, limit, classify);
     }
 
+    @GetMapping(value = "/accountEntryManagement")
+    @ApiOperation("入账管理")
+    public Result accountEntryManagement(Integer page, Integer limit,String shopName,String shopPhone,String userPhone,String couponName,String orderNumber,String startTime,String endTime){
+        PageUtils pageUtils = userMoneyDetailsService.accountEntryManagementDetails(page, limit, shopName, shopPhone, userPhone, couponName, orderNumber, startTime, endTime);
+        return Result.success().put("data", pageUtils);
+    }
+
 }

+ 173 - 27
src/main/resources/mapper/userMoney/UserMoneyDetailsMapper.xml

@@ -3,16 +3,27 @@
 <mapper namespace="com.sqx.modules.app.dao.UserMoneyDetailsDao">
 
     <select id="selectUserMoneyDetails" resultType="com.sqx.modules.app.entity.UserMoneyDetails">
-        select * from user_money_details where user_id = #{userId} and classify = #{classify} order by create_time desc
+        select *
+        from user_money_details
+        where user_id = #{userId}
+          and classify = #{classify}
+        order by create_time desc
     </select>
 
     <select id="selectShopCashDeposit" resultType="com.sqx.modules.app.entity.UserMoneyDetails">
-        select * from user_money_details where shop_id = #{shopId} and classify = #{classify}
+        select *
+        from user_money_details
+        where shop_id = #{shopId}
+          and classify = #{classify}
         order by create_time desc
     </select>
 
     <select id="selectShopCashDepositList" resultType="com.sqx.modules.app.entity.UserMoneyDetails">
-        select * from user_money_details where shop_id = #{shopId} and classify = 2 order by create_time desc
+        select *
+        from user_money_details
+        where shop_id = #{shopId}
+          and classify = 2
+        order by create_time desc
     </select>
 
     <sql id="walletQueryCondition">
@@ -34,43 +45,178 @@
             </if>
 
             <if test="query.endTime != null">
-                and umd.create_time <![CDATA[<=]]> #{query.endTime}</if>
+                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
+        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
+        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)
+        sum(o.amount)
+        from
+        (
+        select
+        case
+        when umd.type = 1 then umd.money
+        else -umd.money
+        end as 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
-            ) o
+        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
+        ) o
     </select>
 
+    <select id="accountEntryManagementDetailsList" resultType="com.sqx.modules.app.entity.UserMoneyDetails">
+        SELECT
+        umd2.id,
+        umd2.orderNumber,
+        umd2.user_id as userId,
+        umd2.shop_id as shopId,
+        umd2.title,
+        umd2.content,
+        umd2.type,
+        umd2.classify,
+        umd2.money,
+        umd2.create_time as createTime,
+        umd2.state,
+        tbu.user_name as userName,
+        tbu.phone as userPhone,
+        gs.shop_name as shopName,
+        gs.phone as shopPhone,
+        tcu.coupon_name as couponName,
+        tcu.money as couponMoney,
+        apr.discount_amount as activityDiscountAmount,
+        tbo.errand_money as errandMoney
+        FROM
+        (
+        SELECT
+        RIGHT( umd.title, 18 ) AS orderNumber,
+        umd.id,
+        umd.user_id,
+        umd.shop_id,
+        umd.title,
+        umd.content,
+        umd.type,
+        umd.classify,
+        umd.money,
+        umd.create_time,
+        umd.state,
+        umd.children_id
+        FROM
+        `user_money_details` umd
+        WHERE
+        umd.type = 1
+        AND umd.classify = 3
+        AND umd.shop_id IS NOT NULL
+        AND umd.state=2
+        AND umd.title LIKE '商户订单收入' '%'
+        ) umd2
+        LEFT JOIN tb_order tbo on tbo.order_number=umd2.orderNumber
+        LEFT JOIN tb_user tbu on tbu.user_id=tbo.user_id
+        LEFT JOIN goods_shop gs on gs.shop_id=tbo.shop_id
+        LEFT JOIN tb_coupon_user tcu on tbo.coupon_id = tcu.id
+        LEFT JOIN activity_part_record apr on apr.order_id = tbo.order_id
+        where 1 = 1
+        <if test="shopName != null and shopName != ''">
+            and gs.shop_name like  concat("%", #{shopName}, "%")
+        </if>
+
+        <if test="shopPhone != null and shopPhone != ''">
+            and gs.phone= #{shopPhone}
+        </if>
+
+        <if test="userPhone != null and userPhone != ''">
+            and tbu.phone=#{userPhone}
+        </if>
+
+        <if test="couponName != null and couponName != ''">
+            and tcu.coupon_name like  concat("%", #{couponName}, "%")
+        </if>
+
+        <if test="orderNumber != null and orderNumber != ''">
+            and tbo.order_number = #{orderNumber}
+        </if>
+
+        <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
+            and umd2.create_time >= #{startTime} and #{endTime} >= umd2.create_time
+        </if>
+        ORDER BY umd2.id desc
+        LIMIT #{limit} OFFSET #{row}
+    </select>
+    <select id="accountEntryManagementDetailsCount" resultType="java.lang.Integer">
+        SELECT
+        count(*)
+        FROM
+        (
+        SELECT
+        RIGHT( umd.title, 18 ) AS orderNumber,
+        umd.id,
+        umd.user_id,
+        umd.shop_id,
+        umd.title,
+        umd.content,
+        umd.type,
+        umd.classify,
+        umd.money,
+        umd.create_time,
+        umd.state,
+        umd.children_id
+        FROM
+        `user_money_details` umd
+        WHERE
+        umd.type = 1
+        AND umd.classify = 3
+        AND umd.shop_id IS NOT NULL
+        AND umd.state=2
+        AND umd.title LIKE '商户订单收入' '%'
+        ) umd2
+        LEFT JOIN tb_order tbo on tbo.order_number=umd2.orderNumber
+        LEFT JOIN tb_user tbu on tbu.user_id=tbo.user_id
+        LEFT JOIN goods_shop gs on gs.shop_id=tbo.shop_id
+        LEFT JOIN tb_coupon_user tcu on tbo.coupon_id = tcu.id
+        LEFT JOIN activity_part_record apr on apr.order_id = tbo.order_id
+        where 1 = 1
+        <if test="shopName != null and shopName != ''">
+            and gs.shop_name like concat("%", #{shopName}, "%")
+        </if>
+
+        <if test="shopPhone != null and shopPhone != ''">
+            and gs.phone= #{shopPhone}
+        </if>
+
+        <if test="userPhone != null and userPhone != ''">
+            and tbu.phone=#{userPhone}
+        </if>
+
+        <if test="couponName != null and couponName != ''">
+            and tcu.coupon_name like concat("%", #{couponName}, "%")
+        </if>
+
+        <if test="orderNumber != null and orderNumber != ''">
+            and tbo.order_number = #{orderNumber}
+        </if>
+
+        <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
+            and umd2.create_time >= #{startTime} and #{endTime} >= umd2.create_time
+        </if>
+    </select>
 </mapper>