消费返现相关

This commit is contained in:
张松
2025-10-13 16:54:34 +08:00
parent 5de49a0912
commit 0c34fd0959
18 changed files with 786 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
package com.czg.service.market.mapper;
import com.mybatisflex.core.BaseMapper;
import com.czg.market.entity.MkConsumeCashback;
/**
* 映射层。
*
* @author zs
* @since 2025-10-13
*/
public interface MkConsumeCashbackMapper extends BaseMapper<MkConsumeCashback> {
}

View File

@@ -0,0 +1,19 @@
package com.czg.service.market.mapper;
import com.mybatisflex.core.BaseMapper;
import com.czg.market.entity.MkConsumeCashbackRecord;
import java.math.BigDecimal;
/**
* 消费返现明细 映射层。
*
* @author zs
* @since 2025-10-13
*/
public interface MkConsumeCashbackRecordMapper extends BaseMapper<MkConsumeCashbackRecord> {
BigDecimal sumCachbackAmount();
}

View File

@@ -0,0 +1,76 @@
package com.czg.service.market.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.czg.account.entity.ShopInfo;
import com.czg.account.entity.ShopUser;
import com.czg.market.vo.MkConsumeCashbackRecordVO;
import com.czg.order.entity.OrderInfo;
import com.czg.utils.MyQueryWrapper;
import com.czg.utils.PageUtil;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.market.entity.MkConsumeCashbackRecord;
import com.czg.market.service.MkConsumeCashbackRecordService;
import com.czg.service.market.mapper.MkConsumeCashbackRecordMapper;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Map;
/**
* 消费返现明细 服务层实现。
*
* @author zs
* @since 2025-10-13
*/
@Service
public class MkConsumeCashbackRecordServiceImpl extends ServiceImpl<MkConsumeCashbackRecordMapper, MkConsumeCashbackRecord> implements MkConsumeCashbackRecordService{
@Override
public Map<String, Object> getRecord(Long mainShopId, Long shopId, String key, LocalDateTime startTime, LocalDateTime endTime) {
QueryWrapper queryWrapper = new MyQueryWrapper().eq(MkConsumeCashbackRecord::getMainShopId, mainShopId)
.selectAll(MkConsumeCashbackRecord.class)
.select(ShopInfo::getShopName)
.select(ShopUser::getPhone, ShopUser::getNickName)
.leftJoin(ShopInfo.class).on(ShopInfo::getId, MkConsumeCashbackRecord::getShopId)
.leftJoin(OrderInfo.class).on(OrderInfo::getId, MkConsumeCashbackRecord::getOrderId)
.leftJoin(ShopUser.class).on(ShopUser::getId, MkConsumeCashbackRecord::getShopUserId)
.eq(MkConsumeCashbackRecord::getShopId, shopId);
QueryWrapper totalQuery = new QueryWrapper()
.leftJoin(ShopInfo.class).on(ShopInfo::getId, MkConsumeCashbackRecord::getShopId)
.leftJoin(OrderInfo.class).on(OrderInfo::getId, MkConsumeCashbackRecord::getOrderId)
.leftJoin(ShopUser.class).on(ShopUser::getId, MkConsumeCashbackRecord::getShopUserId)
.eq(MkConsumeCashbackRecord::getMainShopId, mainShopId).eq(MkConsumeCashbackRecord::getShopId, shopId);
if (StrUtil.isNotBlank(key)) {
totalQuery.and(and -> {
and.or(or -> {
or.like(ShopInfo::getShopName, key);
}).or(or -> {
or.like(OrderInfo::getOrderNo, key);
}).or(or -> {
or.like(ShopUser::getPhone, key);
}).or(or -> {
or.like(ShopUser::getNickName, key);
});
});
queryWrapper.and(and -> {
and.or(or -> {
or.like(ShopInfo::getShopName, key);
}).or(or -> {
or.like(OrderInfo::getOrderNo, key);
}).or(or -> {
or.like(ShopUser::getPhone, key);
}).or(or -> {
or.like(ShopUser::getNickName, key);
});
});
}
BigDecimal amount = getOneAs(totalQuery.select("SUM(cashback_amount)"), BigDecimal.class);
Map<String, Object> map = BeanUtil.beanToMap(pageAs(PageUtil.buildPage(), queryWrapper, MkConsumeCashbackRecordVO.class));
map.put("totalAmount", amount);
return map;
}
}

View File

@@ -0,0 +1,74 @@
package com.czg.service.market.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSONArray;
import com.czg.account.entity.ShopInfo;
import com.czg.account.service.ShopInfoService;
import com.czg.constant.TableValueConstant;
import com.czg.exception.ApiNotPrintException;
import com.czg.market.dto.MkConsumeCashbackDTO;
import com.czg.market.dto.MkConsumeDiscountDTO;
import com.czg.market.entity.MkConsumeCashbackStep;
import com.czg.market.entity.MkConsumeDiscount;
import com.czg.market.entity.MkConsumeDiscountRandom;
import com.czg.market.vo.MkConsumeCashbackVO;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.update.UpdateWrapper;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.market.entity.MkConsumeCashback;
import com.czg.market.service.MkConsumeCashbackService;
import com.czg.service.market.mapper.MkConsumeCashbackMapper;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
/**
* 服务层实现。
*
* @author zs
* @since 2025-10-13
*/
@Service
public class MkConsumeCashbackServiceImpl extends ServiceImpl<MkConsumeCashbackMapper, MkConsumeCashback> implements MkConsumeCashbackService{
@DubboReference
private ShopInfoService shopInfoService;
@Override
public MkConsumeCashbackVO detail(Long shopId) {
MkConsumeCashback consumeCashback = getOne(new QueryWrapper().eq(MkConsumeCashback::getMainShopId, shopId));
if (consumeCashback == null) {
consumeCashback = new MkConsumeCashback();
consumeCashback.setMainShopId(shopId);
save(consumeCashback);
consumeCashback = getOne(new QueryWrapper().eq(MkConsumeCashback::getMainShopId, shopId));
}
MkConsumeCashbackVO consumeCashbackVO = BeanUtil.copyProperties(consumeCashback, MkConsumeCashbackVO.class, "cashbackInfo");
if (StrUtil.isNotBlank(consumeCashback.getCashbackStepList())) {
consumeCashbackVO.setCashbackStepList(JSONArray.parseArray(consumeCashback.getCashbackStepList()).toList(MkConsumeCashbackStep.class));
}
return consumeCashbackVO;
}
@Override
public Boolean edit(Long shopId, MkConsumeCashbackDTO consumeDiscountDTO) {
MkConsumeCashback consumeCashback = getOne(new QueryWrapper().eq(MkConsumeCashback::getMainShopId, shopId));
BeanUtil.copyProperties(consumeDiscountDTO, consumeCashback);
// 包含的店铺开启余额支付
if ("all".equals(consumeDiscountDTO.getUseType())) {
shopInfoService.update(new ShopInfo().setIsAccountPay(1), new QueryWrapper().eq(ShopInfo::getMainId, shopId));
}else {
if (consumeDiscountDTO.getShopIdList() != null) {
shopInfoService.update(new ShopInfo().setIsAccountPay(1), new QueryWrapper().eq(ShopInfo::getMainId, shopId).in(ShopInfo::getId, consumeDiscountDTO.getShopIdList()));
consumeCashback.setShopIdList(JSONArray.toJSONString(consumeDiscountDTO.getShopIdList()));
}
}
if (consumeDiscountDTO.getCashbackStepList() != null && !consumeDiscountDTO.getCashbackStepList().isEmpty()) {
consumeCashback.setCashbackStepList(JSONArray.toJSONString(consumeDiscountDTO));
}
return updateById(consumeCashback);
}
}

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.czg.service.market.mapper.MkConsumeCashbackMapper">
</mapper>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.czg.service.market.mapper.MkConsumeCashbackRecordMapper">
<select id="sumCachbackAmount" resultType="java.math.BigDecimal">
</select>
</mapper>