订单统计需求

This commit is contained in:
Tankaikai 2025-04-21 13:59:17 +08:00
parent 88f01b4be9
commit 8fa1b7005e
5 changed files with 218 additions and 5 deletions

View File

@ -120,6 +120,15 @@ public class OrdersController extends AbstractController {
result.put("tuiMemberOrdersMoney", tuiMemberOrdersMoney);
result.put("cashCount", cashCount == null ? 0 : cashCount);
result.put("cashSum", cashSum == null ? 0 : new BigDecimal(cashSum).setScale(2, RoundingMode.HALF_UP));
double signInAwardMoney = ordersService.selectSignInAwardMoney(flag, time, sysUserId);
double shareAwardMoney = ordersService.selectShareAwardMoney(flag, time, sysUserId);
double newUserTaskDoneAwardMoney = ordersService.selectNewUserTaskDoneAwardMoney(flag, time, sysUserId);
double inviteTaskDoneAwardMoney = ordersService.selectInviteTaskDoneAwardMoney(flag, time, sysUserId);
result.put("signInAwardMoney", signInAwardMoney);
result.put("shareAwardMoney", shareAwardMoney);
result.put("newUserTaskDoneAwardMoney", newUserTaskDoneAwardMoney);
result.put("inviteTaskDoneAwardMoney", inviteTaskDoneAwardMoney);
return Result.success().put("data", result);
}

View File

@ -45,4 +45,36 @@ public interface OrdersDao extends BaseMapper<Orders> {
Integer countOrderNum(Long userId, String time);
BigDecimal sumPayByCourseId(Long courseId);
/**
* 下级签到奖励金额总和
* @param flag 1-2-3-
* @param time 时间范围格式2019-01-01,2019-01-31
* @return 签到奖励金额总和
*/
Double selectSignInAwardMoney(Integer flag, String time, Long sysUserId);
/**
* 分享达标奖励金额总和
* @param flag 1-2-3-
* @param time 时间范围格式2019-01-01,2019-01-31
* @return 分享达标奖励金额总和
*/
Double selectShareAwardMoney(Integer flag, String time, Long sysUserId);
/**
* 新人福利任务完成奖励金额总和
* @param flag 1-2-3-
* @param time 时间范围格式2019-01-01,2019-01-31
* @return 新人福利任务完成奖励金额总和
*/
Double selectNewUserTaskDoneAwardMoney(Integer flag, String time, Long sysUserId);
/**
* 邀请15人完成达标任务奖励金额总和
* @param flag 1-2-3-
* @param time 时间范围格式2019-01-01,2019-01-31
* @return 邀请15人完成达标任务奖励金额总和
*/
Double selectInviteTaskDoneAwardMoney(Integer flag, String time, Long sysUserId);
}

View File

@ -73,4 +73,28 @@ public interface OrdersService extends IService<Orders> {
void fillSysUserId(Orders orders);
SummaryDTO queryByTradeNo(String outTradeNo);
/**
* 下级签到奖励金额总和
* @return 签到奖励金额总和
*/
double selectSignInAwardMoney(Integer flag, String time, Long sysUserId);
/**
* 分享达标奖励金额总和
* @return 分享达标奖励金额总和
*/
double selectShareAwardMoney(Integer flag, String time, Long sysUserId);
/**
* 新人福利任务完成奖励金额总和
* @return 新人福利任务完成奖励金额总和
*/
double selectNewUserTaskDoneAwardMoney(Integer flag, String time, Long sysUserId);
/**
* 邀请15人完成达标任务奖励金额总和
* @return 邀请15人完成达标任务奖励金额总和
*/
double selectInviteTaskDoneAwardMoney(Integer flag, String time, Long sysUserId);
}

View File

@ -6,6 +6,7 @@ import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.db.Db;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
@ -19,6 +20,7 @@ import com.sqx.common.exception.SqxException;
import com.sqx.common.utils.DateUtils;
import com.sqx.common.utils.PageUtils;
import com.sqx.common.utils.Result;
import com.sqx.common.utils.SqlFetcher;
import com.sqx.modules.app.entity.*;
import com.sqx.modules.app.service.*;
import com.sqx.modules.common.service.CommonInfoService;
@ -47,9 +49,11 @@ import com.sqx.modules.sys.entity.SysUserEntity;
import com.sqx.modules.utils.AliPayOrderUtil;
import com.sqx.modules.utils.InvitationCodeUtil;
import com.sqx.modules.utils.TimeCompleteUtils;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@ -103,6 +107,10 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
@Autowired
private RedisService redisService;
@Autowired
private SqlFetcher sqlFetcher;
@Value("${spring.profiles.active}")
private String profiles;
private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true);
@ -279,7 +287,7 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
// reentrantReadWriteLock.writeLock().lock();
try {
CourseDetails courseDetail = null;
if(courseDetailsId != null){
if (courseDetailsId != null) {
courseDetail = courseDetailsService.getOne(new LambdaQueryWrapper<CourseDetails>()
.eq(CourseDetails::getCourseDetailsId, courseDetailsId)
.eq(CourseDetails::getCourseId, courseId));
@ -845,19 +853,19 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
Long userId = null;
try {
// 提现回调单号
if (outTradeNo.contains("-") && outTradeNo.contains(":")){
if (outTradeNo.contains("-") && outTradeNo.contains(":")) {
tradeNo = outTradeNo.split("-")[0];
userId = Convert.toLong(outTradeNo.split("-")[1].split(":")[0]);
}
// 支付回调单号
else if(outTradeNo.contains("-")){
else if (outTradeNo.contains("-")) {
tradeNo = outTradeNo.split("-")[0];
userId = Convert.toLong(outTradeNo.split("-")[1]);
}
}catch (Exception e){
} catch (Exception e) {
throw new SqxException("交易订单号不合法");
}
if(StrUtil.isEmpty(tradeNo) || userId == null){
if (StrUtil.isEmpty(tradeNo) || userId == null) {
throw new SqxException("交易订单号不合法");
}
SummaryDTO data = new SummaryDTO();
@ -906,4 +914,52 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
return data;
}
@Override
@SneakyThrows
public double selectSignInAwardMoney(Integer flag, String time, Long sysUserId) {
Map<String,Object> param = new HashMap<>(3);
param.put("flag", flag);
param.put("time", time);
param.put("sysUserId", sysUserId);
String sql = sqlFetcher.getSqlFromXml("com.sqx.modules.orders.dao.OrdersDao.selectSignInAwardMoney", param);
System.out.println(sql);
return Db.use(profiles).queryNumber(sql).doubleValue();
}
@Override
@SneakyThrows
public double selectShareAwardMoney(Integer flag, String time, Long sysUserId) {
Map<String,Object> param = new HashMap<>(3);
param.put("flag", flag);
param.put("time", time);
param.put("sysUserId", sysUserId);
String sql = sqlFetcher.getSqlFromXml("com.sqx.modules.orders.dao.OrdersDao.selectShareAwardMoney", param);
System.out.println(sql);
return Db.use(profiles).queryNumber(sql).doubleValue();
}
@Override
@SneakyThrows
public double selectNewUserTaskDoneAwardMoney(Integer flag, String time, Long sysUserId) {
Map<String,Object> param = new HashMap<>(3);
param.put("flag", flag);
param.put("time", time);
param.put("sysUserId", sysUserId);
String sql = sqlFetcher.getSqlFromXml("com.sqx.modules.orders.dao.OrdersDao.selectNewUserTaskDoneAwardMoney", param);
System.out.println(sql);
return Db.use(profiles).queryNumber(sql).doubleValue();
}
@Override
@SneakyThrows
public double selectInviteTaskDoneAwardMoney(Integer flag, String time, Long sysUserId) {
Map<String,Object> param = new HashMap<>(3);
param.put("flag", flag);
param.put("time", time);
param.put("sysUserId", sysUserId);
String sql = sqlFetcher.getSqlFromXml("com.sqx.modules.orders.dao.OrdersDao.selectInviteTaskDoneAwardMoney", param);
System.out.println(sql);
return Db.use(profiles).queryNumber(sql).doubleValue();
}
}

View File

@ -330,5 +330,97 @@
and course_id = #{courseId}
group by course_id
</select>
<select id="selectSignInAwardMoney" resultType="java.lang.Double">
select
ifnull(sum(x.money),0)
from v_user_money_detail_temp x
where 1=1
and x.classify = 6
and x.type = 1
and x.state = 2
and x.user_id !=1
and x.title = '签到奖励'
<if test="sysUserId!=null and sysUserId != 1">
and x.sys_user_id=#{sysUserId}
</if>
<if test="flag!=null and flag==1">
and date_format(x.create_time,'%Y-%m-%d')=date_format('${time}','%Y-%m-%d')
</if>
<if test="flag!=null and flag==2">
and date_format(x.create_time,'%Y-%m')=date_format('${time}','%Y-%m')
</if>
<if test="flag!=null and flag==3">
and date_format(x.create_time,'%Y')=date_format('${time}','%Y')
</if>
</select>
<select id="selectShareAwardMoney" resultType="java.lang.Double">
select
ifnull(sum(x.money),0)
from v_user_money_detail_temp x
where 1=1
and x.classify = 6
and x.type = 1
and x.state = 2
and x.user_id !=1
and x.title = '分享达标奖励'
<if test="sysUserId!=null and sysUserId != 1">
and x.sys_user_id=#{sysUserId}
</if>
<if test="flag!=null and flag==1">
and date_format(x.create_time,'%Y-%m-%d')=date_format('${time}','%Y-%m-%d')
</if>
<if test="flag!=null and flag==2">
and date_format(x.create_time,'%Y-%m')=date_format('${time}','%Y-%m')
</if>
<if test="flag!=null and flag==3">
and date_format(x.create_time,'%Y')=date_format('${time}','%Y')
</if>
</select>
<select id="selectNewUserTaskDoneAwardMoney" resultType="java.lang.Double">
select
ifnull(sum(x.money),0)
from v_user_money_detail_temp x
where 1=1
and x.classify = 7
and x.type = 1
and x.state = 2
and x.user_id !=1
and x.money_type = 1
<if test="sysUserId!=null and sysUserId != 1">
and x.sys_user_id=#{sysUserId}
</if>
<if test="flag!=null and flag==1">
and date_format(x.create_time,'%Y-%m-%d')=date_format('${time}','%Y-%m-%d')
</if>
<if test="flag!=null and flag==2">
and date_format(x.create_time,'%Y-%m')=date_format('${time}','%Y-%m')
</if>
<if test="flag!=null and flag==3">
and date_format(x.create_time,'%Y')=date_format('${time}','%Y')
</if>
</select>
<select id="selectInviteTaskDoneAwardMoney" resultType="java.lang.Double">
select
ifnull(sum(x.money),0)
from v_user_money_detail_temp x
where 1=1
and x.classify = 6
and x.type = 1
and x.state = 2
and x.user_id !=1
and x.title = '[分享达标额外奖励]'
<if test="sysUserId!=null and sysUserId != 1">
and x.sys_user_id=#{sysUserId}
</if>
<if test="flag!=null and flag==1">
and date_format(x.create_time,'%Y-%m-%d')=date_format('${time}','%Y-%m-%d')
</if>
<if test="flag!=null and flag==2">
and date_format(x.create_time,'%Y-%m')=date_format('${time}','%Y-%m')
</if>
<if test="flag!=null and flag==3">
and date_format(x.create_time,'%Y')=date_format('${time}','%Y')
</if>
</select>
</mapper>