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 + "的提现申请状态异常"); } } /** * @@ -164,7 +165,6 @@ JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(3, "邮箱验证未通过")); return; } try { // 编码转换 @@ -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
@@ -95,4 +95,11 @@ 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
@@ -44,6 +44,14 @@ </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> <delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> @@ -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` 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() 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 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> @@ -365,7 +403,8 @@ <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 WHERE t.`uid` = #{uid} AND t.state = 1 AND <![CDATA[TO_DAYS( FROM_UNIXTIME(t.extractTime/1000)) = TO_DAYS(NOW())]]> </select> 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; @@ -117,4 +114,13 @@ */ 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); @@ -95,4 +95,6 @@ */ public double countTodayMoney(Long uid); }