admin
2019-03-21 0e8e5917dfc650ed6731f9b5d9b068484a365f83
提现验证的BUG修改
9个文件已修改
264 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/admin/ExtractAdminController.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/ExtractMapper.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/HongBaoV2Mapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/ExtractMapper.xml 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/hongbao/HongBaoV2Mapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/HongBaoV2ServiceImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/ExtractServiceImpl.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/hongbao/HongBaoV2Service.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/ExtractService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/admin/ExtractAdminController.java
@@ -92,7 +92,6 @@
    @Resource
    private TaoBaoWeiQuanOrderService taoBaoWeiQuanOrderService;
    /**
     * 
     * 方法说明: 通过提现请求 可jsonP方式
@@ -126,17 +125,19 @@
        // 日志记录
        if (integer == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("已通过"));
            LogHelper.userInfo("[ip:" + IPUtil.getRemotIP(request) + "]" + admin.getName() + "通过了[id=" + id + "]的提现申请!");
            LogHelper
                    .userInfo("[ip:" + IPUtil.getRemotIP(request) + "]" + admin.getName() + "通过了[id=" + id + "]的提现申请!");
        } else if (integer == 1) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该提现记录已不存在,请刷新"));
            LogHelper.userInfo("[ip:" + IPUtil.getRemotIP(request) + "][管理员:" + admin.getName() + "] 同意提现id=" + id + "的提现申请不存在");
            LogHelper.userInfo(
                    "[ip:" + IPUtil.getRemotIP(request) + "][管理员:" + admin.getName() + "] 同意提现id=" + id + "的提现申请不存在");
        } else {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该用户已被处理,请刷新"));
            LogHelper.userInfo("[ip:" + IPUtil.getRemotIP(request) + "][管理员:" + admin.getName() + "] 同意提现id=" + id + "的提现申请状态异常");
            LogHelper.userInfo(
                    "[ip:" + IPUtil.getRemotIP(request) + "][管理员:" + admin.getName() + "] 同意提现id=" + id + "的提现申请状态异常");
        }
    }
    /**
     * 
@@ -165,7 +166,6 @@
            return;
        }
        try {
            // 编码转换
            reason = URLDecoder.decode(reason, "UTF-8");
@@ -174,7 +174,7 @@
        }
        try {
            extractService.rejectExtract(id, reason, admin);// 提现失败
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("拒绝成功"));
@@ -196,7 +196,6 @@
        }
    }
    /**
     * 获取今日提现记录:今日总额、总次数、成功次数、失败次数 获取系统提现记录:总额、总次数
@@ -711,7 +710,7 @@
        }
        try {
            extractService.checkExtract(uid);
            extractService.checkExtract(Long.parseLong(uid));
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("资金正常"));
        } catch (ExtractException e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/ExtractMapper.java
@@ -92,7 +92,14 @@
     * @return
     */
    int countTodayComplete();
    double countTodayMoney(@Param("uid") Long uid);
    /**
     * 获取补偿金额
     *
     * @param uid
     * @return
     */
    BigDecimal computeCompensateByUid(Long uid);
}
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/HongBaoV2Mapper.java
@@ -150,4 +150,13 @@
     */
    Long countByUidAndState(@Param("uid") Long uid, @Param("state") int state);
    /**
     * 通过用户ID与状态计算资金
     *
     * @param uid
     * @param stateList
     * @return
     */
    BigDecimal computeMoneyByUidAndState(@Param("uid") Long uid,@Param("stateList")  List<Integer> stateList);
}
fanli/src/main/java/com/yeshi/fanli/mapping/ExtractMapper.xml
@@ -6,7 +6,7 @@
        <result column="account" property="account" jdbcType="VARCHAR" />
        <result column="extractTime" property="extractTime" jdbcType="BIGINT" />
        <result column="receiveTime" property="receiveTime" jdbcType="TIMESTAMP" />
        <result column="ip" property="ip" jdbcType="VARCHAR" />
        <result column="money" property="money" jdbcType="DECIMAL" />
        <result column="name" property="name" jdbcType="VARCHAR" />
@@ -43,6 +43,14 @@
        where id = #{id,jdbcType=BIGINT} for update
    </select>
    <select id="computeCompensateByUid" resultType="java.math.BigDecimal"
        parameterType="java.lang.Long">
        select
        ecc_money
        from yeshi_ec_extract_check_compensate
        where ecc_uid=#{0}
    </select>
@@ -113,14 +121,14 @@
            <if test="system != null">
                adminId,
            </if>
            <if test="receiveTime != null">
                receiveTime,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
@@ -160,12 +168,12 @@
            <if test="system != null">
                #{adminId,jdbcType=BIGINT},
            </if>
            <if test="receiveTime != null">
                #{receiveTime,jdbcType=TIMESTAMP},
            </if>
        </trim>
    </insert>
    <update id="updateByPrimaryKeySelective" parameterType="com.yeshi.fanli.entity.bus.user.Extract">
@@ -211,12 +219,12 @@
            <if test="system != null">
                adminId = #{adminId,jdbcType=BIGINT},
            </if>
            <if test="receiveTime != null">
                receiveTime=#{receiveTime,jdbcType=TIMESTAMP},
            </if>
        </set>
        where id = #{id,jdbcType=BIGINT}
    </update>
@@ -258,20 +266,32 @@
         ]]>
        FROM
        (
        SELECT u.my_hongBao,s.uid AS uid,s.money AS hbmoney,IF(ss.money IS NOT
        NULL,ss.money,0) + u.my_hongBao+IF( dd.`money` IS NOT NULL,dd.money,0)
        +IF( cc.`money` IS NOT NULL,cc.money,0) AS totalmoney FROM
        SELECT u.my_hongBao,s.uid AS uid,s.money AS hbmoney,IF(ss.money
        IS NOT
        NULL,ss.money,0) + u.my_hongBao+IF( dd.`money` IS NOT
        NULL,dd.money,0)
        +IF( cc.`money` IS NOT NULL,cc.money,0) AS totalmoney
        FROM
        yeshi_ec_user u
        LEFT JOIN (SELECT h.hb_uid as uid,SUM(h.hb_money) AS money FROM yeshi_ec_hongbao_v2 h
        WHERE h.hb_state=3 AND h.hb_uid = #{uid,jdbcType=BIGINT} GROUP BY h.hb_uid)s ON
        LEFT JOIN (SELECT h.hb_uid as uid,SUM(h.hb_money)
        AS money FROM yeshi_ec_hongbao_v2 h
        WHERE h.hb_state=3 AND h.hb_uid =
        #{uid,jdbcType=BIGINT} GROUP BY h.hb_uid)s ON
        u.id=s.uid
        LEFT JOIN (SELECT SUM(t.`money`)AS money,t.uid FROM yeshi_ec_extract t
        WHERE (t.state=0 OR t.state=1) AND t.`uid`=#{uid,jdbcType=BIGINT}
        GROUP BY t.uid)ss ON ss.uid=u.id
        LEFT JOIN (SELECT ABS (SUM(d.money)) AS money,d.`uid` FROM
        yeshi_ec_account_details d WHERE (d.type=10 OR d.type=9 ) AND d.uid=
        #{uid,jdbcType=BIGINT} GROUP BY d.`uid`) dd ON dd.uid=u.`id`
        LEFT JOIN (SELECT SUM(c.ecc_money) AS money,c.`ecc_uid` AS uid FROM
        LEFT JOIN
        (SELECT SUM(t.`money`)AS money,t.uid FROM yeshi_ec_extract t
        WHERE
        (t.state=0 OR t.state=1) AND t.`uid`=#{uid,jdbcType=BIGINT}
        GROUP BY
        t.uid)ss ON ss.uid=u.id
        LEFT JOIN (SELECT ABS (SUM(d.money)) AS
        money,d.`uid` FROM
        yeshi_ec_account_details d WHERE (d.type=10 OR
        d.type=9 ) AND d.uid=
        #{uid,jdbcType=BIGINT} GROUP BY d.`uid`) dd ON
        dd.uid=u.`id`
        LEFT JOIN (SELECT SUM(c.ecc_money) AS money,c.`ecc_uid`
        AS uid FROM
        `yeshi_ec_extract_check_compensate` c WHERE
        c.ecc_uid=#{uid,jdbcType=BIGINT} GROUP BY c.ecc_uid) cc ON
        cc.uid=u.`id`
@@ -281,28 +301,39 @@
    </select>
    <select id="getTodayCount" resultType="java.util.HashMap">
        SELECT IFNULL(COUNT(et.id), 0)AS total,IFNULL(SUM(CASE WHEN et.state =
        1 THEN 1 ELSE 0 END),0) AS succeed,IFNULL(SUM(CASE WHEN et.state = 2
        THEN 1 ELSE 0 END),0) AS fails
        SELECT
        IFNULL(COUNT(et.id), 0)AS total,IFNULL(SUM(CASE WHEN et.state =
        1 THEN
        1 ELSE 0 END),0) AS succeed,IFNULL(SUM(CASE WHEN et.state = 2
        THEN 1
        ELSE 0 END),0) AS fails
        FROM yeshi_ec_extract et
        LEFT JOIN `yeshi_ec_extract_audit_record` ar ON ar.`extractId` = et.`id`
        WHERE  ar.`id` IS NOT NULL
               AND FROM_UNIXTIME(ar.`auditTime`/1000,'%y%m%d') = CURDATE()
        LEFT JOIN
        `yeshi_ec_extract_audit_record` ar ON ar.`extractId` = et.`id`
        WHERE
        ar.`id` IS NOT NULL
        AND FROM_UNIXTIME(ar.`auditTime`/1000,'%y%m%d') =
        CURDATE()
    </select>
    <select id="getTodayTotalSuccessMoney" resultType="java.math.BigDecimal">
        SELECT IFNULL(CAST(SUM(et.money)AS DECIMAL(19,2)),0) AS moneys
        FROM yeshi_ec_extract et
        LEFT JOIN `yeshi_ec_extract_audit_record` ar ON ar.`extractId` = et.`id`
        WHERE et.state=1 AND  ar.`id` IS NOT NULL
            AND FROM_UNIXTIME(ar.`auditTime`/1000,'%y%m%d') = CURDATE()
        SELECT
        IFNULL(CAST(SUM(et.money)AS DECIMAL(19,2)),0) AS moneys
        FROM
        yeshi_ec_extract et
        LEFT JOIN `yeshi_ec_extract_audit_record` ar ON
        ar.`extractId` = et.`id`
        WHERE et.state=1 AND ar.`id` IS NOT NULL
        AND
        FROM_UNIXTIME(ar.`auditTime`/1000,'%y%m%d') = CURDATE()
    </select>
    <select id="countTotalSuccess" resultType="java.util.HashMap">
        <!-- 提现成功 次数、总金额 -->
        SELECT CAST(SUM(et.money)AS DECIMAL(19,2)) AS totalmoney,
        IFNULL(COUNT(et.id),0) AS totalamount FROM yeshi_ec_extract et
        WHERE et.state=1
        IFNULL(COUNT(et.id),0) AS totalamount FROM yeshi_ec_extract et
        WHERE
        et.state=1
    </select>
@@ -310,7 +341,8 @@
        SELECT
        <include refid="Base_Column_List" />
        FROM yeshi_ec_extract
        WHERE adminId = ${adminId} and state=0 ORDER BY extractTime LIMIT 0,1
        WHERE adminId = ${adminId} and state=0 ORDER BY
        extractTime LIMIT 0,1
    </select>
    <select id="getNewTaskInfo" resultMap="BaseResultMap">
@@ -322,20 +354,26 @@
    <select id="countRecordsByUid" resultType="java.util.HashMap">
        SELECT IFNULL(COUNT(et.id), 0) AS totalamount,IFNULL(SUM(CASE WHEN et.state
        = 1 THEN 1 ELSE 0 END),0) AS succeed,
        IFNULL(SUM(CASE WHEN et.state = 2 THEN 1 ELSE 0 END),0) AS fail
        SELECT
        IFNULL(COUNT(et.id), 0) AS totalamount,IFNULL(SUM(CASE WHEN et.state
        =
        1 THEN 1 ELSE 0 END),0) AS succeed,
        IFNULL(SUM(CASE WHEN et.state = 2
        THEN 1 ELSE 0 END),0) AS fail
        FROM yeshi_ec_extract
        et WHERE (et.state=1 OR et.state= 2) AND et.uid = ${uid}
        et WHERE (et.state=1
        OR et.state= 2) AND et.uid = ${uid}
    </select>
    <select id="countSuccessMoneysByUid" resultType="java.lang.Double">
        SELECT IFNULL(ROUND(SUM(et.money),2),0) AS moneys FROM yeshi_ec_extract et
        SELECT
        IFNULL(ROUND(SUM(et.money),2),0) AS moneys FROM yeshi_ec_extract et
        WHERE et.state=1 AND et.uid = ${uid}
    </select>
    <select id="countSuccessByUid" resultType="java.lang.Long">
        SELECT COUNT(et.id) FROM yeshi_ec_extract et
        SELECT COUNT(et.id)
        FROM yeshi_ec_extract et
        WHERE et.state=1 AND et.uid = ${uid}
    </select>
@@ -362,12 +400,13 @@
        SELECT count(id) FROM yeshi_ec_extract
        WHERE (state=1 OR state= 2) <![CDATA[AND  FROM_UNIXTIME(extractTime/1000) >=CURDATE() ]]>
    </select>
    <select id="countTodayMoney" resultType="java.lang.Double">
        SELECT IFNULL(SUM(t.`money`),0) FROM  yeshi_ec_extract t
        WHERE t.`uid` = #{uid} AND t.state = 1
            AND <![CDATA[TO_DAYS( FROM_UNIXTIME(t.extractTime/1000)) = TO_DAYS(NOW())]]>
        SELECT IFNULL(SUM(t.`money`),0) FROM yeshi_ec_extract t
        WHERE t.`uid` =
        #{uid} AND t.state = 1
        AND <![CDATA[TO_DAYS( FROM_UNIXTIME(t.extractTime/1000)) = TO_DAYS(NOW())]]>
    </select>
</mapper>
fanli/src/main/java/com/yeshi/fanli/mapping/hongbao/HongBaoV2Mapper.xml
@@ -274,7 +274,19 @@
    </select>
    <select id="computeMoneyByUidAndState" resultType="java.math.BigDecimal">
        SELECT
        SUM(h.`hb_money`) FROM yeshi_ec_hongbao_v2 h
        WHERE
        h.`hb_uid`=#{uid}
        <if test="stateList!=null">
            <foreach collection="stateList" item="state" open=" and ("
                separator=" or " close=")">
                hb_state=#{state}
            </foreach>
        </if>
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">delete from
fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/HongBaoV2ServiceImpl.java
@@ -1,6 +1,7 @@
package com.yeshi.fanli.service.impl.hongbao;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
@@ -88,7 +89,6 @@
    @Resource
    private UserShareGoodsGroupService userShareGoodsGroupService;
    @Resource
    private HongBaoManageService hongBaoManageService;
@@ -145,7 +145,6 @@
    public HongBaoV2 selectByPrimaryKey(Long id) {
        return hongBaoV2Mapper.selectByPrimaryKey(id);
    }
    @Transactional
    @Override
@@ -829,4 +828,15 @@
        else
            return money;
    }
    @Override
    public BigDecimal computeMoneyByUidAndState(Long uid, int state) {
        List<Integer> stateList = new ArrayList<>();
        stateList.add(state);
        BigDecimal money = hongBaoV2Mapper.computeMoneyByUidAndState(uid, stateList);
        if (money == null)
            return new BigDecimal(0);
        else
            return money;
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/user/ExtractServiceImpl.java
@@ -1,6 +1,7 @@
package com.yeshi.fanli.service.impl.user;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -31,10 +32,12 @@
import com.yeshi.fanli.entity.bus.user.Extract;
import com.yeshi.fanli.entity.bus.user.ExtractAuditRecord;
import com.yeshi.fanli.entity.bus.user.ExtractRecord;
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
import com.yeshi.fanli.entity.bus.user.PayInfo;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.common.AdminUser;
import com.yeshi.fanli.entity.money.UserMoneyDetail;
import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum;
import com.yeshi.fanli.exception.ExtractException;
import com.yeshi.fanli.exception.NotExistObjectException;
import com.yeshi.fanli.exception.ObjectStateException;
@@ -42,11 +45,13 @@
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.config.SystemConfigService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service;
import com.yeshi.fanli.service.inter.msg.UserMoneyMsgNotificationService;
import com.yeshi.fanli.service.inter.push.PushService;
import com.yeshi.fanli.service.inter.user.ExtractRecordService;
import com.yeshi.fanli.service.inter.user.ExtractService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.UserMoneyDetailService;
import com.yeshi.fanli.service.inter.user.UserNotificationService;
import com.yeshi.fanli.util.CMQManager;
import com.yeshi.fanli.util.Constant;
@@ -94,6 +99,9 @@
    private HongBaoV2Mapper hongBaoV2Mapper;
    @Resource
    private HongBaoV2Service hongBaoV2Service;
    @Resource
    private PushService pushService;
    @Resource
@@ -107,6 +115,9 @@
    @Resource
    private AlipayAccountValidNormalHistoryMapper alipayAccountValidNormalHistoryMapper;
    @Resource
    private UserMoneyDetailService userMoneyDetailService;
    @Transactional
    public Integer addExtract(Extract extract) {
@@ -477,13 +488,44 @@
        return extractMapper.selectByPrimaryKey(id);
    }
    @Transactional
    @Override
    public void checkExtract(String uid) throws ExtractException {
        Long count = hongBaoV2Mapper.countByUidAndState(Long.parseLong(uid), HongBao.STATE_YILINGQU);
    public void checkExtract(Long uid) throws ExtractException {
        Long count = hongBaoV2Mapper.countByUidAndState(uid, HongBao.STATE_YILINGQU);
        if (count == null || count == 0)
            throw new ExtractException(1, "没有已到账的红包");
        List<Integer> list = extractMapper.checkExtract(uid);
        if (list != null && list.size() > 0 && list.get(0) == 0)
        // 获取所有收入所得
        BigDecimal hongBaoMoney = hongBaoV2Service.computeMoneyByUidAndState(uid, HongBaoV2.STATE_YILINGQU);
        Date now = new Date();
        // 获取提现,获取提现验证
        List<UserMoneyDetailTypeEnum> typeList = new ArrayList<>();
        typeList.add(UserMoneyDetailTypeEnum.extract);
        typeList.add(UserMoneyDetailTypeEnum.extractReject);
        typeList.add(UserMoneyDetailTypeEnum.extractVerify);
        BigDecimal extractMoney = userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, new Date(0),
                now);
        extractMoney = extractMoney.abs();
        // 获取维权
        typeList = new ArrayList<>();
        typeList.add(UserMoneyDetailTypeEnum.weiQuan);
        typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuan);
        typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan);
        typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan);
        typeList.add(UserMoneyDetailTypeEnum.hongbaoDeduct);
        BigDecimal weiqaunMoney = userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, new Date(0),
                now);
        weiqaunMoney = weiqaunMoney.abs();
        BigDecimal balance = userInfoService.selectByPKey(uid).getMyHongBao();
        BigDecimal compensateMoney = extractMapper.computeCompensateByUid(uid);
        if (compensateMoney == null)
            compensateMoney = new BigDecimal(0);
        BigDecimal after = hongBaoMoney.subtract(extractMoney.add(weiqaunMoney).add(balance).add(compensateMoney));
        if (after.compareTo(new BigDecimal("0")) != 0)
            throw new ExtractException(2, "结算资金异常");
    }
fanli/src/main/java/com/yeshi/fanli/service/inter/hongbao/HongBaoV2Service.java
@@ -4,9 +4,6 @@
import java.util.Date;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.yeshi.fanli.dto.HongBao;
import com.yeshi.fanli.dto.HongBaoDTO;
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
import com.yeshi.fanli.entity.order.CommonOrder;
@@ -116,5 +113,14 @@
     * @return
     */
    BigDecimal getUnRecievedMoneyWithPreGetTime(Long uid, Date minDate, Date maxDate);
    /**
     * 计算资金
     * @param uid
     * @param state
     * @return
     */
    BigDecimal computeMoneyByUidAndState(Long uid,int state);
}
fanli/src/main/java/com/yeshi/fanli/service/inter/user/ExtractService.java
@@ -57,7 +57,7 @@
     * @param uid
     * @return
     */
    public void checkExtract(String uid) throws ExtractException ;
    public void checkExtract(Long uid) throws ExtractException ;
    public Extract selectByPrimaryKey(Long id);
@@ -94,5 +94,7 @@
     * @return
     */
    public double countTodayMoney(Long uid);
}