admin
2018-12-27 aea2e8ac46a81803a6cb18b4364961751478b00c
用户资金统计完善
11个文件已修改
234 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/UserMoneyController.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/money/UserMoneyDetailMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/CommonOrderGoodsMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/taobao/TaoBaoOrderMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/money/UserMoneyDetailMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderGoodsMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderMapper.xml 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/taobao/TaoBaoOrderMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserMoneyDetailServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserMoneyDetailService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/UserMoneyController.java
@@ -4,6 +4,7 @@
import java.io.PrintWriter;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@@ -24,8 +25,8 @@
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.money.UserMoneyDetail;
import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.UserMoneyDetailService;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.StringUtil;
@@ -47,6 +48,9 @@
    @Resource
    private UserMoneyDetailService userMoneyDetailService;
    @Resource
    private UserInfoService userInfoService;
    /**
     * 新版资金详情(1.4.9)
@@ -129,22 +133,125 @@
        out.print(JsonUtil.loadTrueResult(data));
    }
    /**
     * 用户资金统计
     *
     * @param acceptData
     * @param uid
     * @param out
     */
    @RequestMapping(value = "getUserMoneyStatistic")
    public void getUserMoneyStatistic(AcceptData acceptData, Long uid, PrintWriter out) {
        if (uid == null || uid == 0) {
            out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
            return;
        }
        BigDecimal balance = userInfoService.getMyHB(uid);
        UserMoneyStatisticVO vo = new UserMoneyStatisticVO();
        vo.setBalanceMoney(new BigDecimal("0.02"));
        vo.setLastMonthExtractMoney(new BigDecimal("0.03"));
        vo.setLastMonthRecievedMoney(new BigDecimal("0.04"));
        vo.setLatestThreeMonthRecievedMoney(new BigDecimal("0.05"));
        vo.setMonthExtractMoney(new BigDecimal("0.06"));
        vo.setMonthRecievedMoney(new BigDecimal("0.07"));
        vo.setTotalInviteMoney(new BigDecimal("0.08"));
        vo.setTotalRecievedMoney(new BigDecimal("0.09"));
        vo.setTotalShareMoney(new BigDecimal("0.10"));
        vo.setBalanceMoney(balance);
        Date minDate = null;
        Date maxDate = null;
        List<UserMoneyDetailTypeEnum> typeList = new ArrayList<>();
        // 上月提现
        typeList.clear();
        typeList.add(UserMoneyDetailTypeEnum.extract);
        typeList.add(UserMoneyDetailTypeEnum.extractReject);
        typeList.add(UserMoneyDetailTypeEnum.extractVerify);
        long timeStamp = System.currentTimeMillis();
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(timeStamp);
        maxDate = new Date(TimeUtil
                .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
        calendar.add(Calendar.MONTH, -1);
        minDate = new Date(TimeUtil
                .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
        vo.setLastMonthExtractMoney(
                userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
        // 上月收入
        typeList.clear();
        typeList.add(UserMoneyDetailTypeEnum.fanli);
        typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuan);
        typeList.add(UserMoneyDetailTypeEnum.share);
        typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan);
        typeList.add(UserMoneyDetailTypeEnum.invite);
        typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan);
        typeList.add(UserMoneyDetailTypeEnum.inviteAndShare);
        typeList.add(UserMoneyDetailTypeEnum.weiQuan);
        typeList.add(UserMoneyDetailTypeEnum.hongbao);
        typeList.add(UserMoneyDetailTypeEnum.hongbaoDeduct);
        vo.setLastMonthRecievedMoney(
                userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
        // 最近三个月收入
        maxDate = new Date(timeStamp);
        minDate = new Date(timeStamp - 1000 * 60 * 60 * 24 * 90L);
        vo.setLatestThreeMonthRecievedMoney(
                userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
        // 本月提现
        maxDate = new Date(timeStamp);
        calendar = Calendar.getInstance();
        minDate = new Date(TimeUtil
                .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
        calendar.add(Calendar.MONTH, -1);
        typeList.clear();
        typeList.add(UserMoneyDetailTypeEnum.extract);
        typeList.add(UserMoneyDetailTypeEnum.extractReject);
        typeList.add(UserMoneyDetailTypeEnum.extractVerify);
        vo.setMonthExtractMoney(
                userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
        // 本月到账
        typeList.clear();
        typeList.add(UserMoneyDetailTypeEnum.fanli);
        typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuan);
        typeList.add(UserMoneyDetailTypeEnum.share);
        typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan);
        typeList.add(UserMoneyDetailTypeEnum.invite);
        typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan);
        typeList.add(UserMoneyDetailTypeEnum.inviteAndShare);
        typeList.add(UserMoneyDetailTypeEnum.weiQuan);
        typeList.add(UserMoneyDetailTypeEnum.hongbao);
        typeList.add(UserMoneyDetailTypeEnum.hongbaoDeduct);
        vo.setMonthRecievedMoney(
                userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
        // 总的邀请赚
        typeList.clear();
        typeList.add(UserMoneyDetailTypeEnum.invite);
        typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan);
        minDate = new Date(0L);
        maxDate = new Date(timeStamp);
        vo.setTotalInviteMoney(
                userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
        // 总的到账
        typeList.clear();
        typeList.add(UserMoneyDetailTypeEnum.fanli);
        typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuan);
        typeList.add(UserMoneyDetailTypeEnum.share);
        typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan);
        typeList.add(UserMoneyDetailTypeEnum.invite);
        typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan);
        typeList.add(UserMoneyDetailTypeEnum.inviteAndShare);
        typeList.add(UserMoneyDetailTypeEnum.weiQuan);
        typeList.add(UserMoneyDetailTypeEnum.hongbao);
        typeList.add(UserMoneyDetailTypeEnum.hongbaoDeduct);
        vo.setTotalRecievedMoney(
                userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
        // 总的分享赚
        typeList.clear();
        typeList.add(UserMoneyDetailTypeEnum.share);
        typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan);
        vo.setTotalShareMoney(
                userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
        Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create();
        out.print(JsonUtil.loadTrueResult(gson.toJson(vo)));
    }
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/money/UserMoneyDetailMapper.java
@@ -1,5 +1,6 @@
package com.yeshi.fanli.dao.mybatis.money;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@@ -68,14 +69,28 @@
    
    /**
     * 根据用户ID获取资金明细(老版)
     *
     * @param uid
     * @param start
     * @param count
     * @return
     */
    List<UserMoneyDetail> selectByUidWithState(@Param("uid")Long uid,@Param("start") long start, @Param("count")int count);
    List<UserMoneyDetail> selectByUidWithState(@Param("uid") Long uid, @Param("start") long start,
            @Param("count") int count);
    
    Long selectCountByUidWithState(@Param("uid")Long uid);
    /**
     * 统计某个用户某段时间内产生的明细之和
     *
     * @param uid
     * @param typeList
     * @param minDate
     * @param maxDate
     * @return
     */
    BigDecimal getTotalMoneyByTypeAndUidWithDate(@Param("uid") Long uid, @Param("typeList") List<String> typeList,
            @Param("minDate") Date minDate, @Param("maxDate") Date maxDate);
}
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/CommonOrderGoodsMapper.java
@@ -29,4 +29,13 @@
    List<CommonOrderGoods> listByGoodsIdAndGoodsType(@Param("goodsId") String goodsId,
            @Param("goodsType") int goodsType);
    /**
     * 没有标题的列表
     *
     * @param start
     * @param count
     * @return
     */
    List<CommonOrderGoods> listNoTitle(@Param("start") long start, @Param("count") int count);
}
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/taobao/TaoBaoOrderMapper.java
@@ -68,4 +68,7 @@
    List<TaoBaoOrder> getStateByOrderIdAndPayment(@Param("orderId")String orderId, @Param("payment")String payment);
    
    
    TaoBaoOrder selectLatestByAuctionId(long auctionId);
}
fanli/src/main/java/com/yeshi/fanli/mapping/money/UserMoneyDetailMapper.xml
@@ -195,6 +195,18 @@
    </select>
    <select id="getTotalMoneyByTypeAndUidWithDate" resultType="java.math.BigDecimal">
        select sum(umd_money) from yeshi_ec_user_money_detail where
        umd_uid=#{uid} and umd_createtime>=#{minDate} and
        umd_createtime<![CDATA[<]]>#{maxDate}
        <foreach collection="typeList" item="item" open=" and ("
            separator=" or " close=")">
            umd_type=#{item}
        </foreach>
    </select>
fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderGoodsMapper.xml
@@ -37,6 +37,14 @@
        cog_goods_type=#{goodsType}
    </select>
    <select id="listNoTitle" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
        from yeshi_ec_common_order_goods limit #{start},#{count}
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">delete from
        yeshi_ec_common_order_goods where cog_id = #{id,jdbcType=BIGINT}
    </delete>
fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderMapper.xml
@@ -71,7 +71,7 @@
    </resultMap>
    <sql id="Base_Column_List">co_id,co_uid,co_order_no,co_source_type,co_source_position,co_order_goods_id,co_count,co_state,co_estimate,co_eIncome,co_payment,co_settlement,co_third_create_time,co_settle_time,cog_create_time,cog_update_time
    <sql id="Base_Column_List">co_id,co_uid,co_order_no,co_source_type,co_source_position,co_order_goods_id,co_count,co_state,co_estimate,co_eIncome,co_payment,co_settlement,co_third_create_time,co_settle_time,co_create_time,co_update_time
    </sql>
    <select id="selectByPrimaryKey" resultMap="BaseResultMap"
        parameterType="java.lang.Long">
@@ -88,7 +88,7 @@
        yeshi_ec_common_order where co_id = #{id,jdbcType=BIGINT}</delete>
    <insert id="insert" parameterType="com.yeshi.fanli.entity.order.CommonOrder"
        useGeneratedKeys="true" keyProperty="id">insert into yeshi_ec_common_order
        (co_id,co_uid,co_order_no,co_source_type,co_source_position,co_order_goods_id,co_count,co_state,co_estimate,co_eIncome,co_payment,co_settlement,co_third_create_time,co_settle_time,cog_create_time,cog_update_time)
        (co_id,co_uid,co_order_no,co_source_type,co_source_position,co_order_goods_id,co_count,co_state,co_estimate,co_eIncome,co_payment,co_settlement,co_third_create_time,co_settle_time,co_create_time,co_update_time)
        values
        (#{id,jdbcType=BIGINT},#{userInfo.id,jdbcType=BIGINT},#{orderNo,jdbcType=VARCHAR},#{sourceType,jdbcType=INTEGER},#{sourcePosition,jdbcType=VARCHAR},#{commonOrderGoods.id,jdbcType=BIGINT},#{count,jdbcType=INTEGER},#{state,jdbcType=INTEGER},#{estimate,jdbcType=DECIMAL},#{eIncome,jdbcType=DECIMAL},#{payment,jdbcType=DECIMAL},#{settlement,jdbcType=DECIMAL},#{thirdCreateTime,jdbcType=TIMESTAMP},#{settleTime,jdbcType=TIMESTAMP},#{createTime,jdbcType=TIMESTAMP},#{updateTime,jdbcType=TIMESTAMP})
    </insert>
@@ -110,8 +110,8 @@
            <if test="settlement != null">co_settlement,</if>
            <if test="thirdCreateTime != null">co_third_create_time,</if>
            <if test="settleTime != null">co_settle_time,</if>
            <if test="createTime != null">cog_create_time,</if>
            <if test="updateTime != null">cog_update_time,</if>
            <if test="createTime != null">co_create_time,</if>
            <if test="updateTime != null">co_update_time,</if>
        </trim>
        values
        <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -147,8 +147,8 @@
        #{payment,jdbcType=DECIMAL},co_settlement =
        #{settlement,jdbcType=DECIMAL},co_third_create_time =
        #{thirdCreateTime,jdbcType=TIMESTAMP},co_settle_time =
        #{settleTime,jdbcType=TIMESTAMP},cog_create_time =
        #{createTime,jdbcType=TIMESTAMP},cog_update_time =
        #{settleTime,jdbcType=TIMESTAMP},co_create_time =
        #{createTime,jdbcType=TIMESTAMP},co_update_time =
        #{updateTime,jdbcType=TIMESTAMP} where co_id = #{id,jdbcType=BIGINT}
    </update>
    <update id="updateByPrimaryKeySelective" parameterType="com.yeshi.fanli.entity.order.CommonOrder">
@@ -170,8 +170,8 @@
            <if test="thirdCreateTime != null">co_third_create_time=#{thirdCreateTime,jdbcType=TIMESTAMP},
            </if>
            <if test="settleTime != null">co_settle_time=#{settleTime,jdbcType=TIMESTAMP},</if>
            <if test="createTime != null">cog_create_time=#{createTime,jdbcType=TIMESTAMP},</if>
            <if test="updateTime != null">cog_update_time=#{updateTime,jdbcType=TIMESTAMP},</if>
            <if test="createTime != null">co_create_time=#{createTime,jdbcType=TIMESTAMP},</if>
            <if test="updateTime != null">co_update_time=#{updateTime,jdbcType=TIMESTAMP},</if>
        </set>
        where co_id = #{id,jdbcType=BIGINT}
    </update>
@@ -308,7 +308,7 @@
        totalSettlement,COALESCE(SUM(tc.`co_count`),0)AS
        totalCount,tc.`co_source_type`,tc.`co_order_no`,tg.*
        FROM yeshi_ec_common_order_goods tg
        LEFT JOIN yeshi_ec_common_order tc ON tc.`co_order_goods_id` = tg.`cog_id`
        LEFT JOIN yeshi_ec_common_order tc ON tc.`co_order_goods_id` = tg.`co_id`
        WHERE
        <foreach collection="list" item="item" separator=" OR ">
            (tc.`co_source_type` = #{item.sourceType,jdbcType=INTEGER} AND
fanli/src/main/java/com/yeshi/fanli/mapping/taobao/TaoBaoOrderMapper.xml
@@ -68,6 +68,15 @@
        <include refid="Base_Column_List" />
        from yeshi_ec_taobao_order where to_order_id = #{0}
    </select>
    <select id="selectLatestByAuctionId" resultMap="BaseResultMap"
        parameterType="java.lang.Long">
        select
        <include refid="Base_Column_List" />
        from yeshi_ec_taobao_order where to_auction_id = #{0}  order by to_id desc limit 1
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">delete from
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserMoneyDetailServiceImpl.java
@@ -1,5 +1,6 @@
package com.yeshi.fanli.service.impl.user;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
@@ -16,6 +17,7 @@
import com.yeshi.fanli.dao.mybatis.money.UserMoneyDetailMapper;
import com.yeshi.fanli.entity.money.UserMoneyDetail;
import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum;
import com.yeshi.fanli.service.inter.user.UserMoneyDetailService;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.vo.money.UserMoneyDetailHistoryVO;
@@ -171,4 +173,16 @@
        return userMoneyDetailMapper.selectCountByUidWithState(uid);
    }
    @Override
    public BigDecimal statisticUserTypeMoneyWithDate(Long uid, List<UserMoneyDetailTypeEnum> typeList, Date minDate,
            Date maxDate) {
        List<String> list = new ArrayList<>();
        if (typeList != null)
            for (UserMoneyDetailTypeEnum type : typeList) {
                list.add(type.name());
            }
        BigDecimal money = userMoneyDetailMapper.getTotalMoneyByTypeAndUidWithDate(uid, list, minDate, maxDate);
        return money == null ? new BigDecimal(0) : money;
    }
}
fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserMoneyDetailService.java
@@ -1,9 +1,11 @@
package com.yeshi.fanli.service.inter.user;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.yeshi.fanli.entity.money.UserMoneyDetail;
import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum;
import com.yeshi.fanli.vo.money.UserMoneyDetailHistoryVO;
/**
@@ -36,6 +38,7 @@
    /**
     * 资金明细详情列表(老版本)
     *
     * @param uid
     * @param page
     * @param pageSize
@@ -46,9 +49,22 @@
    /**
     * 资金明细详情总数(老版本)
     *
     * @param uid
     * @return
     */
    public long countByUidWithState(Long uid);
    /**
     * 分类型与时间统计用户的资金总和
     *
     * @param uid
     * @param typeList
     * @param minDate
     * @param maxDate
     * @return
     */
    public BigDecimal statisticUserTypeMoneyWithDate(Long uid, List<UserMoneyDetailTypeEnum> typeList, Date minDate,
            Date maxDate);
}
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java
@@ -193,6 +193,7 @@
            goods.setProvcity(item.optString("provcity"));
            goods.setPictUrl(item.optString("pict_url"));
            goods.setShopTitle(item.optString("nick"));
            goods.setSellerId(item.optLong("seller_id"));
            String optString = item.optString("shop_dsr");
            if (!StringUtil.isNullOrEmpty(optString)) {