|
@@ -14,6 +14,7 @@ package vip.xiaonuo.biz.modular.consumptionrecord.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.collection.CollStreamUtil;
|
|
import cn.hutool.core.collection.CollStreamUtil;
|
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.PhoneUtil;
|
|
import cn.hutool.core.util.PhoneUtil;
|
|
@@ -21,7 +22,11 @@ import cn.hutool.core.util.StrUtil;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
+import com.google.common.collect.Maps;
|
|
import jakarta.annotation.Resource;
|
|
import jakarta.annotation.Resource;
|
|
|
|
+import jakarta.servlet.http.HttpServletResponse;
|
|
|
|
+import org.apache.commons.collections4.MapUtils;
|
|
|
|
+import org.apache.commons.compress.utils.Lists;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.checkerframework.checker.units.qual.C;
|
|
import org.checkerframework.checker.units.qual.C;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
@@ -29,9 +34,11 @@ import org.springframework.transaction.annotation.Transactional;
|
|
import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
|
|
import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
|
|
import vip.xiaonuo.biz.modular.consumptionrecord.param.*;
|
|
import vip.xiaonuo.biz.modular.consumptionrecord.param.*;
|
|
import vip.xiaonuo.biz.modular.user.entity.BizUser;
|
|
import vip.xiaonuo.biz.modular.user.entity.BizUser;
|
|
|
|
+import vip.xiaonuo.biz.modular.user.result.BizMemberUserResult;
|
|
import vip.xiaonuo.biz.modular.user.service.BizUserService;
|
|
import vip.xiaonuo.biz.modular.user.service.BizUserService;
|
|
import vip.xiaonuo.biz.modular.userfundchangerecord.entity.BizUserFundChangeRecord;
|
|
import vip.xiaonuo.biz.modular.userfundchangerecord.entity.BizUserFundChangeRecord;
|
|
import vip.xiaonuo.biz.modular.userfundchangerecord.service.BizUserFundChangeRecordService;
|
|
import vip.xiaonuo.biz.modular.userfundchangerecord.service.BizUserFundChangeRecordService;
|
|
|
|
+import vip.xiaonuo.biz.modular.utils.CommonExportUtil;
|
|
import vip.xiaonuo.common.cache.CommonCacheOperator;
|
|
import vip.xiaonuo.common.cache.CommonCacheOperator;
|
|
import vip.xiaonuo.common.enums.CommonSortOrderEnum;
|
|
import vip.xiaonuo.common.enums.CommonSortOrderEnum;
|
|
import vip.xiaonuo.common.exception.CommonException;
|
|
import vip.xiaonuo.common.exception.CommonException;
|
|
@@ -40,10 +47,12 @@ import vip.xiaonuo.biz.modular.consumptionrecord.entity.ConsumptionRecord;
|
|
import vip.xiaonuo.biz.modular.consumptionrecord.mapper.ConsumptionRecordMapper;
|
|
import vip.xiaonuo.biz.modular.consumptionrecord.mapper.ConsumptionRecordMapper;
|
|
import vip.xiaonuo.biz.modular.consumptionrecord.service.ConsumptionRecordService;
|
|
import vip.xiaonuo.biz.modular.consumptionrecord.service.ConsumptionRecordService;
|
|
import vip.xiaonuo.common.util.CommonCryptogramUtil;
|
|
import vip.xiaonuo.common.util.CommonCryptogramUtil;
|
|
|
|
+import vip.xiaonuo.dev.api.DevConfigApi;
|
|
|
|
|
|
|
|
+import java.io.IOException;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
-import java.util.Date;
|
|
|
|
-import java.util.List;
|
|
|
|
|
|
+import java.math.RoundingMode;
|
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 消费记录Service接口实现类
|
|
* 消费记录Service接口实现类
|
|
@@ -63,6 +72,9 @@ public class ConsumptionRecordServiceImpl extends ServiceImpl<ConsumptionRecordM
|
|
@Resource
|
|
@Resource
|
|
private BizUserFundChangeRecordService bizUserFundChangeRecordService;
|
|
private BizUserFundChangeRecordService bizUserFundChangeRecordService;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ private DevConfigApi devConfigApi;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public Page<ConsumptionRecord> page(ConsumptionRecordPageParam consumptionRecordPageParam) {
|
|
public Page<ConsumptionRecord> page(ConsumptionRecordPageParam consumptionRecordPageParam) {
|
|
QueryWrapper<ConsumptionRecord> queryWrapper = new QueryWrapper<ConsumptionRecord>().checkSqlInjection();
|
|
QueryWrapper<ConsumptionRecord> queryWrapper = new QueryWrapper<ConsumptionRecord>().checkSqlInjection();
|
|
@@ -70,7 +82,8 @@ public class ConsumptionRecordServiceImpl extends ServiceImpl<ConsumptionRecordM
|
|
queryWrapper.like("su.name",consumptionRecordPageParam.getUserName());
|
|
queryWrapper.like("su.name",consumptionRecordPageParam.getUserName());
|
|
}
|
|
}
|
|
if(ObjectUtil.isNotEmpty(consumptionRecordPageParam.getConsumptionOperate())){
|
|
if(ObjectUtil.isNotEmpty(consumptionRecordPageParam.getConsumptionOperate())){
|
|
- queryWrapper.eq("cr.consumption_operate",consumptionRecordPageParam.getConsumptionOperate());
|
|
|
|
|
|
+ List<String> list = Arrays.asList(consumptionRecordPageParam.getConsumptionOperate().split(","));
|
|
|
|
+ queryWrapper.in("cr.consumption_operate",list);
|
|
}
|
|
}
|
|
if(ObjectUtil.isNotEmpty(consumptionRecordPageParam.getOrgId())){
|
|
if(ObjectUtil.isNotEmpty(consumptionRecordPageParam.getOrgId())){
|
|
queryWrapper.eq("cr.consumption_org",consumptionRecordPageParam.getOrgId());
|
|
queryWrapper.eq("cr.consumption_org",consumptionRecordPageParam.getOrgId());
|
|
@@ -79,6 +92,16 @@ public class ConsumptionRecordServiceImpl extends ServiceImpl<ConsumptionRecordM
|
|
ObjectUtil.isNotEmpty(consumptionRecordPageParam.getConsumptionTimeEnd())){
|
|
ObjectUtil.isNotEmpty(consumptionRecordPageParam.getConsumptionTimeEnd())){
|
|
queryWrapper.between("cr.consumption_time",consumptionRecordPageParam.getConsumptionTimeBegin()+" 00:00:00",consumptionRecordPageParam.getConsumptionTimeEnd()+" 23:59:59");
|
|
queryWrapper.between("cr.consumption_time",consumptionRecordPageParam.getConsumptionTimeBegin()+" 00:00:00",consumptionRecordPageParam.getConsumptionTimeEnd()+" 23:59:59");
|
|
}
|
|
}
|
|
|
|
+ if(ObjectUtil.isNotEmpty(consumptionRecordPageParam.getAdjustType())){
|
|
|
|
+ queryWrapper.eq("cr.adjust_type",consumptionRecordPageParam.getAdjustType());
|
|
|
|
+ }
|
|
|
|
+ if(ObjectUtil.isNotEmpty(consumptionRecordPageParam.getRecordId())){
|
|
|
|
+ List<String> idList = Lists.newArrayList();
|
|
|
|
+ bizUserService.list(new QueryWrapper<BizUser>().lambda().
|
|
|
|
+ eq(BizUser::getReferralUser, consumptionRecordPageParam.getRecordId())).
|
|
|
|
+ forEach(user->idList.add(user.getId()));
|
|
|
|
+ queryWrapper.in("cr.user_id",idList);
|
|
|
|
+ }
|
|
// 校验数据范围
|
|
// 校验数据范围
|
|
List<String> loginUserDataScope = StpLoginUserUtil.getLoginUserDataScope();
|
|
List<String> loginUserDataScope = StpLoginUserUtil.getLoginUserDataScope();
|
|
if (ObjectUtil.isNotEmpty(loginUserDataScope)) {
|
|
if (ObjectUtil.isNotEmpty(loginUserDataScope)) {
|
|
@@ -86,6 +109,7 @@ public class ConsumptionRecordServiceImpl extends ServiceImpl<ConsumptionRecordM
|
|
} else {
|
|
} else {
|
|
queryWrapper.in("cr.user_id", StpLoginUserUtil.getLoginUser().getId());
|
|
queryWrapper.in("cr.user_id", StpLoginUserUtil.getLoginUser().getId());
|
|
}
|
|
}
|
|
|
|
+ queryWrapper.eq("cr.DELETE_FLAG","NOT_DELETE");
|
|
queryWrapper.orderByDesc("cr.create_time");
|
|
queryWrapper.orderByDesc("cr.create_time");
|
|
Page<ConsumptionRecord> pageList = this.getBaseMapper().getPageList(CommonPageRequest.defaultPage(), queryWrapper);
|
|
Page<ConsumptionRecord> pageList = this.getBaseMapper().getPageList(CommonPageRequest.defaultPage(), queryWrapper);
|
|
for(ConsumptionRecord consumptionRecord : pageList.getRecords()){
|
|
for(ConsumptionRecord consumptionRecord : pageList.getRecords()){
|
|
@@ -95,13 +119,13 @@ public class ConsumptionRecordServiceImpl extends ServiceImpl<ConsumptionRecordM
|
|
if(StringUtils.equals(consumptionRecord.getConsumptionOperate(),"3") || StringUtils.equals(consumptionRecord.getConsumptionOperate(),"4")){
|
|
if(StringUtils.equals(consumptionRecord.getConsumptionOperate(),"3") || StringUtils.equals(consumptionRecord.getConsumptionOperate(),"4")){
|
|
//消费结算,设置下说明
|
|
//消费结算,设置下说明
|
|
if(StringUtils.equals(consumptionRecord.getConsumptionType(),"1")){
|
|
if(StringUtils.equals(consumptionRecord.getConsumptionType(),"1")){
|
|
- consumptionRecord.setConsumptionRemark("代金券消费"+consumptionRecord.getVoucherMoney().stripTrailingZeros().toPlainString()+"元");
|
|
|
|
|
|
+ consumptionRecord.setConsumptionRemark("积分消费"+consumptionRecord.getVoucherMoney().stripTrailingZeros().toPlainString()+"个");
|
|
}
|
|
}
|
|
if(StringUtils.equals(consumptionRecord.getConsumptionType(),"2")){
|
|
if(StringUtils.equals(consumptionRecord.getConsumptionType(),"2")){
|
|
- consumptionRecord.setConsumptionRemark("账户余额消费"+consumptionRecord.getAccountMoney().stripTrailingZeros().toPlainString()+"元");
|
|
|
|
|
|
+ consumptionRecord.setConsumptionRemark("糕点消费"+consumptionRecord.getAccountMoney().stripTrailingZeros().toPlainString()+"个");
|
|
}
|
|
}
|
|
if(StringUtils.equals(consumptionRecord.getConsumptionType(),"3")){
|
|
if(StringUtils.equals(consumptionRecord.getConsumptionType(),"3")){
|
|
- consumptionRecord.setConsumptionRemark("代金券消费"+consumptionRecord.getVoucherMoney().stripTrailingZeros().toPlainString()+"元"+",账户余额消费"+consumptionRecord.getAccountMoney().stripTrailingZeros().toPlainString()+"元");
|
|
|
|
|
|
+ consumptionRecord.setConsumptionRemark("积分消费"+consumptionRecord.getVoucherMoney().stripTrailingZeros().toPlainString()+"个"+",糕点消费"+consumptionRecord.getAccountMoney().stripTrailingZeros().toPlainString()+"个");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -138,24 +162,18 @@ public class ConsumptionRecordServiceImpl extends ServiceImpl<ConsumptionRecordM
|
|
}
|
|
}
|
|
}else if(StringUtils.equals(consumptionRecordAddParam.getConsumptionOperate(),"2")){
|
|
}else if(StringUtils.equals(consumptionRecordAddParam.getConsumptionOperate(),"2")){
|
|
bizUserFundChangeRecord.setChangeType("5");
|
|
bizUserFundChangeRecord.setChangeType("5");
|
|
- if(bizUser.getVoucherBalance().compareTo(BigDecimal.ZERO) == 0){
|
|
|
|
- throw new CommonException("会员当前代金券余额为0,不可扣减!");
|
|
|
|
- }
|
|
|
|
- if(bizUser.getAccountBalance().compareTo(BigDecimal.ZERO) == 0){
|
|
|
|
- throw new CommonException("会员当前账户余额为0,不可扣减!");
|
|
|
|
- }
|
|
|
|
//会员扣减
|
|
//会员扣减
|
|
if(StringUtils.equals(consumptionRecordAddParam.getConsumptionType(),"1")){
|
|
if(StringUtils.equals(consumptionRecordAddParam.getConsumptionType(),"1")){
|
|
//选择代金券,用户原有代金券金额-本次扣减金额
|
|
//选择代金券,用户原有代金券金额-本次扣减金额
|
|
if(consumptionRecord.getConsumptionMoney().compareTo(bizUser.getVoucherBalance()) > 0){
|
|
if(consumptionRecord.getConsumptionMoney().compareTo(bizUser.getVoucherBalance()) > 0){
|
|
- throw new CommonException("会员当前代金券余额不足,不可扣减!");
|
|
|
|
|
|
+ throw new CommonException("会员当前账户积分不足,不可扣减!");
|
|
}
|
|
}
|
|
bizUser.setVoucherBalance(bizUser.getVoucherBalance().subtract(consumptionRecordAddParam.getConsumptionMoney()));
|
|
bizUser.setVoucherBalance(bizUser.getVoucherBalance().subtract(consumptionRecordAddParam.getConsumptionMoney()));
|
|
consumptionRecord.setVoucherMoney(consumptionRecordAddParam.getConsumptionMoney());
|
|
consumptionRecord.setVoucherMoney(consumptionRecordAddParam.getConsumptionMoney());
|
|
}else if(StringUtils.equals(consumptionRecordAddParam.getConsumptionType(),"2")){
|
|
}else if(StringUtils.equals(consumptionRecordAddParam.getConsumptionType(),"2")){
|
|
//选择账户余额,用户原有余额-本次扣减余额
|
|
//选择账户余额,用户原有余额-本次扣减余额
|
|
if(consumptionRecord.getConsumptionMoney().compareTo(bizUser.getAccountBalance()) > 0){
|
|
if(consumptionRecord.getConsumptionMoney().compareTo(bizUser.getAccountBalance()) > 0){
|
|
- throw new CommonException("会员当前账户余额不足,不可扣减!");
|
|
|
|
|
|
+ throw new CommonException("会员当前账户糕点不足,不可扣减!");
|
|
}
|
|
}
|
|
bizUser.setAccountBalance(bizUser.getAccountBalance().subtract(consumptionRecordAddParam.getConsumptionMoney()));
|
|
bizUser.setAccountBalance(bizUser.getAccountBalance().subtract(consumptionRecordAddParam.getConsumptionMoney()));
|
|
consumptionRecord.setAccountMoney(consumptionRecordAddParam.getConsumptionMoney());
|
|
consumptionRecord.setAccountMoney(consumptionRecordAddParam.getConsumptionMoney());
|
|
@@ -184,7 +202,7 @@ public class ConsumptionRecordServiceImpl extends ServiceImpl<ConsumptionRecordM
|
|
BigDecimal subtract = consumptionRecordAddParam.getConsumptionMoney().subtract(bizUser.getVoucherBalance());
|
|
BigDecimal subtract = consumptionRecordAddParam.getConsumptionMoney().subtract(bizUser.getVoucherBalance());
|
|
//如果差额大于账户余额,表示账户余额不足
|
|
//如果差额大于账户余额,表示账户余额不足
|
|
if(subtract.compareTo(bizUser.getAccountBalance()) > 0){
|
|
if(subtract.compareTo(bizUser.getAccountBalance()) > 0){
|
|
- throw new CommonException("账户余额不足,请先充值!");
|
|
|
|
|
|
+ throw new CommonException("账户糕点不足,请先充值!");
|
|
}
|
|
}
|
|
//记录消费信息
|
|
//记录消费信息
|
|
consumptionRecord.setVoucherMoney(bizUser.getVoucherBalance());
|
|
consumptionRecord.setVoucherMoney(bizUser.getVoucherBalance());
|
|
@@ -251,6 +269,15 @@ public class ConsumptionRecordServiceImpl extends ServiceImpl<ConsumptionRecordM
|
|
throw new CommonException("手机号码:{}格式错误", consumptionRecordAddParam.getPhoneNumber());
|
|
throw new CommonException("手机号码:{}格式错误", consumptionRecordAddParam.getPhoneNumber());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ if(ObjectUtil.isNotEmpty(consumptionRecordAddParam.getUserId())){
|
|
|
|
+ BizUser bizUser = bizUserService.getById(consumptionRecordAddParam.getUserId());
|
|
|
|
+ if(ObjectUtil.isEmpty(bizUser)){
|
|
|
|
+ throw new CommonException("用户不存在!");
|
|
|
|
+ }
|
|
|
|
+ if(StringUtils.equals(bizUser.getUserStatus(),"DISABLED")){
|
|
|
|
+ throw new CommonException("用户账号冻结,不可消费!");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@@ -296,8 +323,227 @@ public class ConsumptionRecordServiceImpl extends ServiceImpl<ConsumptionRecordM
|
|
consumptionResult.setOrderMoney(new BigDecimal(0));
|
|
consumptionResult.setOrderMoney(new BigDecimal(0));
|
|
return consumptionResult;
|
|
return consumptionResult;
|
|
}
|
|
}
|
|
|
|
+ queryWrapper.eq("bcr.DELETE_FLAG","NOT_DELETE");
|
|
queryWrapper.in("bcr.consumption_operate",'3','4');
|
|
queryWrapper.in("bcr.consumption_operate",'3','4');
|
|
queryWrapper.between("bcr.consumption_time", format+" 00:00:00",format+" 23:59:59");
|
|
queryWrapper.between("bcr.consumption_time", format+" 00:00:00",format+" 23:59:59");
|
|
return this.getBaseMapper().getRecordTotal(queryWrapper);
|
|
return this.getBaseMapper().getRecordTotal(queryWrapper);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public Map<String, Object> queryTodayRevenue(ConsumptionRecordPageParam consumptionRecordPageParam) {
|
|
|
|
+ if(ObjectUtil.isEmpty(consumptionRecordPageParam.getConsumptionTime())){
|
|
|
|
+ throw new CommonException("时间不能为空!");
|
|
|
|
+ }
|
|
|
|
+ Map<String,Object> map = Maps.newHashMap();
|
|
|
|
+ QueryWrapper<ConsumptionRecord> todayQuery = getQueryWrapper(consumptionRecordPageParam);
|
|
|
|
+ ConsumptionResult todayTotal = this.getBaseMapper().getRecordTotal(todayQuery);
|
|
|
|
+ map.put("orderTotal",todayTotal.getOrderCount());
|
|
|
|
+ map.put("accountTotal",todayTotal.getOrderMoney());
|
|
|
|
+ String format = DateUtil.format(DateUtil.offsetDay(DateUtil.parseDate(consumptionRecordPageParam.getConsumptionTime()), -1), "yyyy-MM-dd");
|
|
|
|
+ consumptionRecordPageParam.setConsumptionTime(format);
|
|
|
|
+ QueryWrapper<ConsumptionRecord> yesQuery = getQueryWrapper(consumptionRecordPageParam);
|
|
|
|
+ ConsumptionResult yesTotal = this.getBaseMapper().getRecordTotal(yesQuery);
|
|
|
|
+ if(todayTotal.getOrderCount().compareTo(yesTotal.getOrderCount()) >= 0){
|
|
|
|
+ map.put("orderFlag","rise");
|
|
|
|
+ map.put("orderContrast",todayTotal.getOrderCount()-yesTotal.getOrderCount());
|
|
|
|
+ if(todayTotal.getOrderCount()!=0 && yesTotal.getOrderCount()!=0){
|
|
|
|
+ map.put("orderPercent",((todayTotal.getOrderCount()-yesTotal.getOrderCount())/yesTotal.getOrderCount())*100);
|
|
|
|
+ }else{
|
|
|
|
+ map.put("orderPercent",0);
|
|
|
|
+ }
|
|
|
|
+ }else{
|
|
|
|
+ map.put("orderFlag","decline");
|
|
|
|
+ map.put("orderContrast",yesTotal.getOrderCount()-todayTotal.getOrderCount());
|
|
|
|
+ if(todayTotal.getOrderCount()!=0 && yesTotal.getOrderCount()!=0){
|
|
|
|
+ map.put("orderPercent",((yesTotal.getOrderCount()-todayTotal.getOrderCount())/yesTotal.getOrderCount())*100);
|
|
|
|
+ }else{
|
|
|
|
+ map.put("orderPercent",0);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ BigDecimal todayMoney = todayTotal.getOrderMoney();
|
|
|
|
+ BigDecimal yesMoney = yesTotal.getOrderMoney();
|
|
|
|
+ if(todayTotal.getOrderMoney().compareTo(yesTotal.getOrderMoney()) > 0){
|
|
|
|
+ map.put("accountFlag","rise");
|
|
|
|
+ map.put("accountContrast",todayMoney.subtract(yesMoney));
|
|
|
|
+
|
|
|
|
+ if(todayMoney.compareTo(BigDecimal.ZERO)!=0 && yesMoney.compareTo(BigDecimal.ZERO) !=0){
|
|
|
|
+ map.put("accountPercent",(todayMoney.subtract(yesMoney)).divide(yesMoney).multiply(new BigDecimal(100)).setScale(1, RoundingMode.HALF_UP));
|
|
|
|
+ }else{
|
|
|
|
+ map.put("accountPercent",0);
|
|
|
|
+ }
|
|
|
|
+ }else{
|
|
|
|
+ map.put("accountFlag","decline");
|
|
|
|
+ map.put("accountContrast",yesMoney.subtract(todayMoney));
|
|
|
|
+
|
|
|
|
+ if(todayMoney.compareTo(BigDecimal.ZERO)!=0 && yesMoney.compareTo(BigDecimal.ZERO) !=0){
|
|
|
|
+ map.put("accountPercent",(yesMoney.subtract(todayMoney)).divide(yesMoney).multiply(new BigDecimal(100)).setScale(1,RoundingMode.HALF_UP));
|
|
|
|
+ }else{
|
|
|
|
+ map.put("accountPercent",0);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return map;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public QueryWrapper<ConsumptionRecord> getQueryWrapper(ConsumptionRecordPageParam consumptionRecordPageParam){
|
|
|
|
+ QueryWrapper<ConsumptionRecord> queryWrapper = new QueryWrapper<>();
|
|
|
|
+ if(ObjectUtil.isNotEmpty(consumptionRecordPageParam.getConsumptionTime())){
|
|
|
|
+ queryWrapper.between("bcr.consumption_time",consumptionRecordPageParam.getConsumptionTime()+" 00:00:00",
|
|
|
|
+ consumptionRecordPageParam.getConsumptionTime()+" 23:59:59");
|
|
|
|
+ }
|
|
|
|
+ // 校验数据范围
|
|
|
|
+ List<String> loginUserDataScope = StpLoginUserUtil.getLoginUserDataScope();
|
|
|
|
+ if (ObjectUtil.isNotEmpty(loginUserDataScope)) {
|
|
|
|
+ queryWrapper.in("bcr.consumption_org", loginUserDataScope);
|
|
|
|
+ }else{
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ queryWrapper.eq("bcr.DELETE_FLAG","NOT_DELETE");
|
|
|
|
+ queryWrapper.in("bcr.consumption_operate",'3','4');
|
|
|
|
+ return queryWrapper;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public ConsumptionResult getRecordTotal(ConsumptionRecordPageParam consumptionRecordPageParam) {
|
|
|
|
+ QueryWrapper<ConsumptionRecord> queryWrapper = new QueryWrapper<>();
|
|
|
|
+ if(ObjectUtil.isNotEmpty(consumptionRecordPageParam.getOrgId())){
|
|
|
|
+ queryWrapper.eq("bcr.consumption_org",consumptionRecordPageParam.getOrgId());
|
|
|
|
+ }
|
|
|
|
+ if(ObjectUtil.isNotEmpty(consumptionRecordPageParam.getConsumptionTimeBegin()) && ObjectUtil.isNotEmpty(consumptionRecordPageParam.getConsumptionTimeEnd())){
|
|
|
|
+ queryWrapper.between("bcr.consumption_time",consumptionRecordPageParam.getConsumptionTimeBegin()+" 00:00:00",consumptionRecordPageParam.getConsumptionTimeEnd()+" 23:59:59");
|
|
|
|
+ }
|
|
|
|
+ queryWrapper.eq("bcr.DELETE_FLAG","NOT_DELETE");
|
|
|
|
+ queryWrapper.in("bcr.consumption_operate","3","4");
|
|
|
|
+ return this.getBaseMapper().getRecordTotal(queryWrapper);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public UserBalanceResult queryBalanceTotal(ConsumptionRecordPageParam consumptionRecordPageParam) {
|
|
|
|
+ QueryWrapper<ConsumptionRecord> queryWrapper = getAccountQueryWrapper(consumptionRecordPageParam);
|
|
|
|
+ UserBalanceResult userBalanceResult = this.getBaseMapper().queryBalanceTotal(queryWrapper);
|
|
|
|
+ QueryWrapper<ConsumptionRecord> customQueryWrapper = getCustomQueryWrapper(consumptionRecordPageParam);
|
|
|
|
+ UserBalanceResult result = this.getBaseMapper().queryBalanceTotal(customQueryWrapper);
|
|
|
|
+ userBalanceResult.setUserCount(result.getUserCount());
|
|
|
|
+ return userBalanceResult;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public QueryWrapper<ConsumptionRecord> getAccountQueryWrapper(ConsumptionRecordPageParam consumptionRecordPageParam){
|
|
|
|
+ QueryWrapper<ConsumptionRecord> queryWrapper = new QueryWrapper<>();
|
|
|
|
+ if(ObjectUtil.isNotEmpty(consumptionRecordPageParam.getOrgId())){
|
|
|
|
+ queryWrapper.eq("su.ORG_ID",consumptionRecordPageParam.getOrgId());
|
|
|
|
+ }
|
|
|
|
+ if(ObjectUtil.isNotEmpty(consumptionRecordPageParam.getConsumptionTimeBegin()) && ObjectUtil.isNotEmpty(consumptionRecordPageParam.getConsumptionTimeEnd())){
|
|
|
|
+ queryWrapper.between("su.CREATE_TIME",consumptionRecordPageParam.getConsumptionTimeBegin()+" 00:00:00",consumptionRecordPageParam.getConsumptionTimeEnd()+" 23:59:59");
|
|
|
|
+ }
|
|
|
|
+ queryWrapper.in("su.USER_TYPE","2","3");
|
|
|
|
+ queryWrapper.eq("su.DELETE_FLAG","NOT_DELETE");
|
|
|
|
+ return queryWrapper;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public QueryWrapper<ConsumptionRecord> getCustomQueryWrapper(ConsumptionRecordPageParam consumptionRecordPageParam){
|
|
|
|
+ QueryWrapper<ConsumptionRecord> queryWrapper = new QueryWrapper<>();
|
|
|
|
+ if(ObjectUtil.isNotEmpty(consumptionRecordPageParam.getConsumptionTimeBegin()) && ObjectUtil.isNotEmpty(consumptionRecordPageParam.getConsumptionTimeEnd())){
|
|
|
|
+ queryWrapper.between("su.CREATE_TIME",consumptionRecordPageParam.getConsumptionTimeBegin()+" 00:00:00",consumptionRecordPageParam.getConsumptionTimeEnd()+" 23:59:59");
|
|
|
|
+ }
|
|
|
|
+ queryWrapper.in("su.USER_TYPE","2","3");
|
|
|
|
+ queryWrapper.eq("su.DELETE_FLAG","NOT_DELETE");
|
|
|
|
+ return queryWrapper;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public Map<String,Object> queryConsumptionChart(ConsumptionRecordPageParam consumptionRecordPageParam) {
|
|
|
|
+ List<String> timeList = Lists.newArrayList();
|
|
|
|
+ List<BigDecimal> moneyList = Lists.newArrayList();
|
|
|
|
+ List<Integer> orderList = Lists.newArrayList();
|
|
|
|
+ List<Integer> userCountList = Lists.newArrayList();
|
|
|
|
+ Map<String,Object> result = Maps.newHashMap();
|
|
|
|
+ QueryWrapper<ConsumptionRecord> queryWrapper = new QueryWrapper<>();
|
|
|
|
+ List<Map<String, Object>> mapList = this.getBaseMapper().queryConsumptionChart(queryWrapper);
|
|
|
|
+ for(Map<String,Object> map: mapList){
|
|
|
|
+ timeList.add(MapUtils.getString(map,"dateTime"));
|
|
|
|
+ moneyList.add(new BigDecimal(MapUtils.getString(map,"consumptionMoney")));
|
|
|
|
+ orderList.add(MapUtils.getInteger(map,"consumptionCount"));
|
|
|
|
+ userCountList.add(MapUtils.getInteger(map,"userCount"));
|
|
|
|
+ }
|
|
|
|
+ result.put("dateTime",timeList);
|
|
|
|
+ result.put("consumptionMoney",moneyList);
|
|
|
|
+ result.put("consumptionCount",orderList);
|
|
|
|
+ result.put("userCount",userCountList);
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public Map<String, Object> queryEachStore(ConsumptionRecordPageParam consumptionRecordPageParam) {
|
|
|
|
+ Map<String,Object> result = Maps.newHashMap();
|
|
|
|
+ List<Map<String, Object>> mapList = getList(consumptionRecordPageParam);
|
|
|
|
+ result.put("dataList",mapList);
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public Page<BizMemberUserResult> warnPage(ConsumptionRecordPageParam consumptionRecordPageParam) {
|
|
|
|
+ Page<BizMemberUserResult> warnPageList = new Page();
|
|
|
|
+ String warnSwitch = devConfigApi.getValueByKey("warnSwitch");
|
|
|
|
+ if(ObjectUtil.isNotEmpty(warnSwitch) && StringUtils.equals(warnSwitch,"true")){
|
|
|
|
+ //预警开关开启
|
|
|
|
+ long warnCount = Long.parseLong(devConfigApi.getValueByKey("warnCount"));
|
|
|
|
+ QueryWrapper queryWrapper = new QueryWrapper<ConsumptionRecord>();
|
|
|
|
+ queryWrapper.gt("a.count",warnCount);
|
|
|
|
+ if(ObjectUtil.isNotEmpty(consumptionRecordPageParam.getUserName())){
|
|
|
|
+ queryWrapper.like("su.NAME",consumptionRecordPageParam.getUserName());
|
|
|
|
+ }
|
|
|
|
+ warnPageList = this.getBaseMapper().getWarnPageList(CommonPageRequest.defaultPage(), queryWrapper);
|
|
|
|
+ for(BizMemberUserResult bizMemberUserResult : warnPageList.getRecords()){
|
|
|
|
+ if(ObjectUtil.isNotEmpty(bizMemberUserResult.getPhone())){
|
|
|
|
+ bizMemberUserResult.setPhone(CommonCryptogramUtil.doSm4CbcDecrypt(bizMemberUserResult.getPhone()));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return warnPageList;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ public List<Map<String, Object>> getList(ConsumptionRecordPageParam consumptionRecordPageParam){
|
|
|
|
+ List<String> orgIds = new ArrayList<>();
|
|
|
|
+ if(ObjectUtil.isNotEmpty(consumptionRecordPageParam.getOrgId())){
|
|
|
|
+ orgIds = Arrays.asList(consumptionRecordPageParam.getOrgId().split(","));
|
|
|
|
+ }
|
|
|
|
+ String startTime = null;
|
|
|
|
+ String endTime = null;
|
|
|
|
+ if(ObjectUtil.isNotEmpty(consumptionRecordPageParam.getConsumptionTimeBegin())){
|
|
|
|
+ startTime=consumptionRecordPageParam.getConsumptionTimeBegin()+" 00:00:00";
|
|
|
|
+ }
|
|
|
|
+ if(ObjectUtil.isNotEmpty(consumptionRecordPageParam.getConsumptionTimeEnd())){
|
|
|
|
+ endTime = consumptionRecordPageParam.getConsumptionTimeEnd()+" 23:59:59";
|
|
|
|
+ }
|
|
|
|
+ List<Map<String, Object>> mapList = this.getBaseMapper().queryEachStore(orgIds, startTime, endTime);
|
|
|
|
+ return mapList;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void exportRecord(ConsumptionRecordPageParam consumptionRecordPageParam, HttpServletResponse response) throws IOException {
|
|
|
|
+ List<Map<String, Object>> mapList = getList(consumptionRecordPageParam);
|
|
|
|
+ String fileName = "汇总统计报表.xlsx";
|
|
|
|
+ List<ConsumptionRecordExportResult> list = Lists.newArrayList();
|
|
|
|
+ for(Map<String,Object> map:mapList){
|
|
|
|
+ ConsumptionRecordExportResult consumeRecordExportResult = new ConsumptionRecordExportResult();
|
|
|
|
+ consumeRecordExportResult.setName(MapUtils.getString(map,"name"));
|
|
|
|
+ consumeRecordExportResult.setCode(MapUtils.getString(map,"code"));
|
|
|
|
+ consumeRecordExportResult.setOrderCount(MapUtils.getInteger(map,"orderCount"));
|
|
|
|
+ consumeRecordExportResult.setAccountMoney(new BigDecimal(MapUtils.getString(map,"accountMoney")));
|
|
|
|
+ consumeRecordExportResult.setVoucherMoney(new BigDecimal(MapUtils.getString(map,"voucherMoney")));
|
|
|
|
+ consumeRecordExportResult.setUserCount(MapUtils.getInteger(map,"userCount"));
|
|
|
|
+ list.add(consumeRecordExportResult);
|
|
|
|
+ }
|
|
|
|
+ CommonExportUtil.export(fileName, ConsumptionRecordExportResult.class,list,response,"汇总统计报表");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ public static void main(String[] args) {
|
|
|
|
+ System.out.printf("加密后手机号:"+CommonCryptogramUtil.doSm4CbcEncrypt("15240260262"));
|
|
|
|
+ }
|
|
}
|
|
}
|