应用中心
-存酒 团购卷退款
This commit is contained in:
@@ -23,6 +23,8 @@ public interface TbPlatformDictService {
|
||||
*/
|
||||
List<TbPlatformDictDto> queryAll(TbPlatformDictQueryCriteria criteria);
|
||||
|
||||
List<TbPlatformDictDto> queryByType(String type);
|
||||
|
||||
/**
|
||||
* 根据ID查询
|
||||
* @param id ID
|
||||
|
||||
@@ -50,6 +50,11 @@ public class TbPlatformDictServiceImpl implements TbPlatformDictService {
|
||||
return tbPlatformDictMapper.toDto(tbPlatformDictRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TbPlatformDictDto> queryByType(String type){
|
||||
return tbPlatformDictMapper.toDto(tbPlatformDictRepository.findAllByTypeAndIsShowCash(type,1));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public TbPlatformDictDto findById(Integer id) {
|
||||
|
||||
@@ -1,43 +1,47 @@
|
||||
package cn.ysk.cashier.service.impl.order;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.ysk.cashier.dto.order.ReturnGroupOrderDto;
|
||||
import cn.ysk.cashier.dto.order.TbGroupOrderInfoDto;
|
||||
import cn.ysk.cashier.dto.order.TbGroupOrderInfoQueryCriteria;
|
||||
import cn.ysk.cashier.dto.shop.TbMerchantThirdApplyDto;
|
||||
import cn.ysk.cashier.exception.BadRequestException;
|
||||
import cn.ysk.cashier.mapper.order.TbGroupOrderInfoMapper;
|
||||
import cn.ysk.cashier.model.ReturnOrderReq;
|
||||
import cn.ysk.cashier.pojo.order.TbGroupOrderCoupon;
|
||||
import cn.ysk.cashier.pojo.order.TbGroupOrderInfo;
|
||||
import cn.ysk.cashier.pojo.shop.TbMerchantThirdApply;
|
||||
import cn.ysk.cashier.mybatis.entity.TbOrderPayment;
|
||||
import cn.ysk.cashier.repository.order.TbGroupOrderInfoRepository;
|
||||
import cn.ysk.cashier.service.order.TbGroupOrderCouponService;
|
||||
import cn.ysk.cashier.service.order.TbGroupOrderInfoService;
|
||||
import cn.ysk.cashier.service.shop.TbMerchantThirdApplyService;
|
||||
import cn.ysk.cashier.mybatis.service.TbOrderPaymentService;
|
||||
import cn.ysk.cashier.thirdpay.resp.OrderReturnResp;
|
||||
import cn.ysk.cashier.thirdpay.resp.PublicResp;
|
||||
import cn.ysk.cashier.thirdpay.service.ThirdPayService;
|
||||
import cn.ysk.cashier.utils.*;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* @description 服务实现
|
||||
* @author ww
|
||||
* @description 服务实现
|
||||
* @date 2024-05-07
|
||||
**/
|
||||
@Service
|
||||
@@ -50,22 +54,31 @@ public class TbGroupOrderInfoServiceImpl implements TbGroupOrderInfoService {
|
||||
private final TbGroupOrderCouponService orderCouponService;
|
||||
private final TbMerchantThirdApplyService thirdApplyService;
|
||||
|
||||
private final ThirdPayService thirdPayService;
|
||||
@Autowired
|
||||
private TbOrderPaymentService paymentService;
|
||||
|
||||
@Value("${thirdPay.url}")
|
||||
private String url;
|
||||
@Value("${thirdPay.groupCallBack}")
|
||||
private String groupCallBack;
|
||||
|
||||
@Override
|
||||
public Map<String,Object> queryAll(TbGroupOrderInfoQueryCriteria criteria, Pageable pageable){
|
||||
Page<TbGroupOrderInfo> page = tbGroupOrderInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
|
||||
public Map<String, Object> queryAll(TbGroupOrderInfoQueryCriteria criteria, Pageable pageable) {
|
||||
Page<TbGroupOrderInfo> page = tbGroupOrderInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable);
|
||||
return PageUtil.toPage(page.map(tbGroupOrderInfoMapper::toDto));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TbGroupOrderInfoDto> queryAll(TbGroupOrderInfoQueryCriteria criteria){
|
||||
return tbGroupOrderInfoMapper.toDto(tbGroupOrderInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
|
||||
public List<TbGroupOrderInfoDto> queryAll(TbGroupOrderInfoQueryCriteria criteria) {
|
||||
return tbGroupOrderInfoMapper.toDto(tbGroupOrderInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder)));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public TbGroupOrderInfoDto findById(Integer id) {
|
||||
TbGroupOrderInfo tbGroupOrderInfo = tbGroupOrderInfoRepository.findById(id).orElseGet(TbGroupOrderInfo::new);
|
||||
ValidationUtil.isNull(tbGroupOrderInfo.getId(),"TbGroupOrderInfo","id",id);
|
||||
ValidationUtil.isNull(tbGroupOrderInfo.getId(), "TbGroupOrderInfo", "id", id);
|
||||
TbGroupOrderInfoDto dto = tbGroupOrderInfoMapper.toDto(tbGroupOrderInfo);
|
||||
dto.setCoupons(orderCouponService.queryAll(dto.getId()));
|
||||
return dto;
|
||||
@@ -81,7 +94,7 @@ public class TbGroupOrderInfoServiceImpl implements TbGroupOrderInfoService {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void update(TbGroupOrderInfo resources) {
|
||||
TbGroupOrderInfo tbGroupOrderInfo = tbGroupOrderInfoRepository.findById(resources.getId()).orElseGet(TbGroupOrderInfo::new);
|
||||
ValidationUtil.isNull( tbGroupOrderInfo.getId(),"TbGroupOrderInfo","id",resources.getId());
|
||||
ValidationUtil.isNull(tbGroupOrderInfo.getId(), "TbGroupOrderInfo", "id", resources.getId());
|
||||
tbGroupOrderInfo.copy(resources);
|
||||
tbGroupOrderInfoRepository.save(tbGroupOrderInfo);
|
||||
}
|
||||
@@ -137,7 +150,7 @@ public class TbGroupOrderInfoServiceImpl implements TbGroupOrderInfoService {
|
||||
public ResponseEntity<Object> returnOrder(ReturnGroupOrderDto param) {
|
||||
TbGroupOrderInfo groupOrderInfo = tbGroupOrderInfoRepository.getById(param.getOrderId());
|
||||
List<TbGroupOrderCoupon> tbGroupOrderCoupons = orderCouponService.queryNoRefundByOrderId(param.getOrderId());
|
||||
if (param.getNum() >= tbGroupOrderCoupons.size()) {
|
||||
if (param.getNum() > tbGroupOrderCoupons.size()) {
|
||||
throw new BadRequestException("可退数量不足");
|
||||
}
|
||||
for (int i = 0; i < param.getNum(); i++) {
|
||||
@@ -149,31 +162,40 @@ public class TbGroupOrderInfoServiceImpl implements TbGroupOrderInfoService {
|
||||
orderCouponService.update(coupon);
|
||||
}
|
||||
TbMerchantThirdApplyDto thirdApply = thirdApplyService.findById(groupOrderInfo.getMerchantId());
|
||||
if(Objects.isNull(thirdApply)){
|
||||
if (Objects.isNull(thirdApply)) {
|
||||
throw new BadRequestException("支付参数配置错误");
|
||||
}
|
||||
ReturnOrderReq req = new ReturnOrderReq();
|
||||
req.setAppId(thirdApply.getAppId());
|
||||
req.setTimestamp(System.currentTimeMillis());
|
||||
req.setOrderNumber(groupOrderInfo.getPayOrderNo());
|
||||
req.setAmount(param.getRefundAmount().toString());
|
||||
req.setMercRefundNo(groupOrderInfo.getOrderNo());
|
||||
req.setRefundReason("团购卷:退货");
|
||||
req.setPayPassword(thirdApply.getPayPassword());
|
||||
Map<String, Object> map = BeanUtil.transBean2Map(req);
|
||||
req.setSign(MD5Utils.encrypt(map, thirdApply.getAppToken(), true));
|
||||
log.info("groupOrderReturn req:{}", JSONUtil.toJsonStr(req));
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
ResponseEntity<String> response = restTemplate.postForEntity("https://gatewaytestapi.sxczgkj.cn/gate-service/merchantOrder/returnOrder", req, String.class);
|
||||
log.info("groupOrderReturn:{}", response.getBody());
|
||||
if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) {
|
||||
JSONObject object = JSONObject.parseObject(response.getBody());
|
||||
if (!object.get("code").equals("0")) {
|
||||
throw new BadRequestException("退款渠道调用失败");
|
||||
QueryWrapper<TbOrderPayment> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("order_id", param.getOrderId());
|
||||
TbOrderPayment payment = paymentService.getOne(queryWrapper);
|
||||
PublicResp<OrderReturnResp> publicResp = thirdPayService.returnOrder(
|
||||
url,
|
||||
thirdApply.getAppId(),
|
||||
groupOrderInfo.getOrderNo(),
|
||||
payment.getTradeNumber(),
|
||||
null,
|
||||
"团购卷订单退款",
|
||||
param.getRefundAmount().setScale(2, RoundingMode.DOWN).multiply(new BigDecimal(100)).longValue(),
|
||||
groupCallBack,
|
||||
null,
|
||||
thirdApply.getAppToken());
|
||||
|
||||
if (ObjectUtil.isNotNull(publicResp) && ObjectUtil.isNotEmpty(publicResp)) {
|
||||
if ("000000".equals(publicResp.getCode())) {
|
||||
//TRADE_REFUND
|
||||
if (!"TRADE_SUCCESS".equals(publicResp.getObjData().getState()) && !publicResp.getObjData().getState().equals("ING")) {
|
||||
throw new BadRequestException("退款渠道调用失败");
|
||||
}
|
||||
} else {
|
||||
throw new BadRequestException("退款渠道调用失败:" + publicResp.getMsg());
|
||||
}
|
||||
}
|
||||
groupOrderInfo.setRefundNumber(groupOrderInfo.getRefundNumber() + param.getNum());
|
||||
groupOrderInfo.setRefundAmount(groupOrderInfo.getRefundAmount().add(param.getRefundAmount()));
|
||||
if (groupOrderInfo.getRefundAmount() == null) {
|
||||
groupOrderInfo.setRefundAmount(param.getRefundAmount());
|
||||
}else {
|
||||
groupOrderInfo.setRefundAmount(groupOrderInfo.getRefundAmount().add(param.getRefundAmount()));
|
||||
}
|
||||
if (groupOrderInfo.getNumber().equals(groupOrderInfo.getRefundNumber())) {
|
||||
groupOrderInfo.setRefundAble(0);
|
||||
groupOrderInfo.setStatus("refund");
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
package cn.ysk.cashier.service.impl.shopimpl;
|
||||
|
||||
import cn.ysk.cashier.dto.shop.TbShopStorageGoodDto;
|
||||
import cn.ysk.cashier.dto.shop.TbShopStorageGoodQueryCriteria;
|
||||
import cn.ysk.cashier.mapper.shop.TbShopStorageGoodMapper;
|
||||
import cn.ysk.cashier.pojo.shop.TbShopStorageGood;
|
||||
import cn.ysk.cashier.repository.shop.TbShopStorageGoodRepository;
|
||||
import cn.ysk.cashier.service.shop.TbShopStorageGoodService;
|
||||
import cn.ysk.cashier.utils.FileUtil;
|
||||
import cn.ysk.cashier.utils.PageUtil;
|
||||
import cn.ysk.cashier.utils.QueryHelp;
|
||||
import cn.ysk.cashier.utils.ValidationUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.io.IOException;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
/**
|
||||
* @website https://eladmin.vip
|
||||
* @description 服务实现
|
||||
* @author ww
|
||||
* @date 2024-05-21
|
||||
**/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class TbShopStorageGoodServiceImpl implements TbShopStorageGoodService {
|
||||
|
||||
private final TbShopStorageGoodRepository tbShopStorageGoodRepository;
|
||||
private final TbShopStorageGoodMapper tbShopStorageGoodMapper;
|
||||
|
||||
@Override
|
||||
public Map<String,Object> queryAll(TbShopStorageGoodQueryCriteria criteria, Pageable pageable){
|
||||
Page<TbShopStorageGood> page = tbShopStorageGoodRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
|
||||
return PageUtil.toPage(page.map(tbShopStorageGoodMapper::toDto));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TbShopStorageGoodDto> queryAll(TbShopStorageGoodQueryCriteria criteria){
|
||||
return tbShopStorageGoodMapper.toDto(tbShopStorageGoodRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public TbShopStorageGoodDto findById(Integer id) {
|
||||
TbShopStorageGood tbShopStorageGood = tbShopStorageGoodRepository.findById(id).orElseGet(TbShopStorageGood::new);
|
||||
ValidationUtil.isNull(tbShopStorageGood.getId(),"TbShopStorageGood","id",id);
|
||||
return tbShopStorageGoodMapper.toDto(tbShopStorageGood);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public TbShopStorageGoodDto create(TbShopStorageGood resources) {
|
||||
resources.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
||||
return tbShopStorageGoodMapper.toDto(tbShopStorageGoodRepository.save(resources));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void update(TbShopStorageGood resources) {
|
||||
TbShopStorageGood tbShopStorageGood = tbShopStorageGoodRepository.findById(resources.getId()).orElseGet(TbShopStorageGood::new);
|
||||
ValidationUtil.isNull( tbShopStorageGood.getId(),"TbShopStorageGood","id",resources.getId());
|
||||
tbShopStorageGood.copy(resources);
|
||||
tbShopStorageGoodRepository.save(tbShopStorageGood);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteAll(Integer[] ids) {
|
||||
for (Integer id : ids) {
|
||||
tbShopStorageGoodRepository.deleteById(id);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void download(List<TbShopStorageGoodDto> all, HttpServletResponse response) throws IOException {
|
||||
List<Map<String, Object>> list = new ArrayList<>();
|
||||
for (TbShopStorageGoodDto tbShopStorageGood : all) {
|
||||
Map<String,Object> map = new LinkedHashMap<>();
|
||||
map.put("酒品名", tbShopStorageGood.getName());
|
||||
map.put("图片地址", tbShopStorageGood.getImgUrl());
|
||||
map.put("单位", tbShopStorageGood.getUnit());
|
||||
map.put("有效期(天)", tbShopStorageGood.getPeriod());
|
||||
map.put("0:未删除;1:已删除", tbShopStorageGood.getIsDel());
|
||||
map.put(" createTime", tbShopStorageGood.getCreateTime());
|
||||
map.put("0:手动;1:商品;", tbShopStorageGood.getSource());
|
||||
map.put("商户Id", tbShopStorageGood.getShopId());
|
||||
list.add(map);
|
||||
}
|
||||
FileUtil.downloadExcel(list, response);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
package cn.ysk.cashier.service.impl.shopimpl;
|
||||
|
||||
import cn.ysk.cashier.dto.shop.TbShopStorageRecordDto;
|
||||
import cn.ysk.cashier.dto.shop.TbShopStorageRecordQueryCriteria;
|
||||
import cn.ysk.cashier.mapper.shop.TbShopStorageRecordMapper;
|
||||
import cn.ysk.cashier.pojo.shop.TbShopStorageRecord;
|
||||
import cn.ysk.cashier.repository.shop.TbShopStorageRecordRepository;
|
||||
import cn.ysk.cashier.service.shop.TbShopStorageRecordService;
|
||||
import cn.ysk.cashier.utils.FileUtil;
|
||||
import cn.ysk.cashier.utils.PageUtil;
|
||||
import cn.ysk.cashier.utils.QueryHelp;
|
||||
import cn.ysk.cashier.utils.ValidationUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.io.IOException;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
/**
|
||||
* @website https://eladmin.vip
|
||||
* @description 服务实现
|
||||
* @author ww
|
||||
* @date 2024-05-21
|
||||
**/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class TbShopStorageRecordServiceImpl implements TbShopStorageRecordService {
|
||||
|
||||
private final TbShopStorageRecordRepository tbShopStorageRecordRepository;
|
||||
private final TbShopStorageRecordMapper tbShopStorageRecordMapper;
|
||||
|
||||
@Override
|
||||
public Map<String,Object> queryAll(TbShopStorageRecordQueryCriteria criteria, Pageable pageable){
|
||||
Page<TbShopStorageRecord> page = tbShopStorageRecordRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
|
||||
return PageUtil.toPage(page.map(tbShopStorageRecordMapper::toDto));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TbShopStorageRecordDto> queryAll(TbShopStorageRecordQueryCriteria criteria){
|
||||
return tbShopStorageRecordMapper.toDto(tbShopStorageRecordRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public TbShopStorageRecordDto findById(Integer id) {
|
||||
TbShopStorageRecord tbShopStorageRecord = tbShopStorageRecordRepository.findById(id).orElseGet(TbShopStorageRecord::new);
|
||||
ValidationUtil.isNull(tbShopStorageRecord.getId(),"TbShopStorageRecord","id",id);
|
||||
return tbShopStorageRecordMapper.toDto(tbShopStorageRecord);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public TbShopStorageRecordDto create(TbShopStorageRecord resources) {
|
||||
resources.setTime(new Timestamp(System.currentTimeMillis()));
|
||||
return tbShopStorageRecordMapper.toDto(tbShopStorageRecordRepository.save(resources));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void update(TbShopStorageRecord resources) {
|
||||
TbShopStorageRecord tbShopStorageRecord = tbShopStorageRecordRepository.findById(resources.getId()).orElseGet(TbShopStorageRecord::new);
|
||||
ValidationUtil.isNull( tbShopStorageRecord.getId(),"TbShopStorageRecord","id",resources.getId());
|
||||
tbShopStorageRecord.copy(resources);
|
||||
tbShopStorageRecordRepository.save(tbShopStorageRecord);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteAll(Integer[] ids) {
|
||||
for (Integer id : ids) {
|
||||
tbShopStorageRecordRepository.deleteById(id);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void download(List<TbShopStorageRecordDto> all, HttpServletResponse response) throws IOException {
|
||||
List<Map<String, Object>> list = new ArrayList<>();
|
||||
for (TbShopStorageRecordDto tbShopStorageRecord : all) {
|
||||
Map<String,Object> map = new LinkedHashMap<>();
|
||||
map.put("存酒信息id", tbShopStorageRecord.getStorageId());
|
||||
map.put("记录", tbShopStorageRecord.getContent());
|
||||
map.put("操作时间", tbShopStorageRecord.getTime());
|
||||
list.add(map);
|
||||
}
|
||||
FileUtil.downloadExcel(list, response);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
package cn.ysk.cashier.service.impl.shopimpl;
|
||||
|
||||
import cn.ysk.cashier.dto.shop.TbShopStorageDto;
|
||||
import cn.ysk.cashier.dto.shop.TbShopStorageNumDto;
|
||||
import cn.ysk.cashier.dto.shop.TbShopStorageQueryCriteria;
|
||||
import cn.ysk.cashier.exception.BadRequestException;
|
||||
import cn.ysk.cashier.mapper.shop.TbShopStorageMapper;
|
||||
import cn.ysk.cashier.pojo.shop.TbShopStorage;
|
||||
import cn.ysk.cashier.pojo.shop.TbShopStorageRecord;
|
||||
import cn.ysk.cashier.repository.shop.TbShopStorageRepository;
|
||||
import cn.ysk.cashier.service.shop.TbShopStorageRecordService;
|
||||
import cn.ysk.cashier.service.shop.TbShopStorageService;
|
||||
import cn.ysk.cashier.utils.FileUtil;
|
||||
import cn.ysk.cashier.utils.PageUtil;
|
||||
import cn.ysk.cashier.utils.QueryHelp;
|
||||
import cn.ysk.cashier.utils.ValidationUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.io.IOException;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
/**
|
||||
* @author ww
|
||||
* @website https://eladmin.vip
|
||||
* @description 服务实现
|
||||
* @date 2024-05-21
|
||||
**/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class TbShopStorageServiceImpl implements TbShopStorageService {
|
||||
|
||||
private final TbShopStorageRepository tbShopStorageRepository;
|
||||
private final TbShopStorageMapper tbShopStorageMapper;
|
||||
private final TbShopStorageRecordService storageRecordService;
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryAll(TbShopStorageQueryCriteria criteria, Pageable pageable) {
|
||||
Page<TbShopStorage> page = tbShopStorageRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable);
|
||||
return PageUtil.toPage(page.map(tbShopStorageMapper::toDto));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TbShopStorageDto> queryAll(TbShopStorageQueryCriteria criteria) {
|
||||
return tbShopStorageMapper.toDto(tbShopStorageRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder)));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public TbShopStorageDto findById(Integer id) {
|
||||
TbShopStorage tbShopStorage = tbShopStorageRepository.findById(id).orElseGet(TbShopStorage::new);
|
||||
ValidationUtil.isNull(tbShopStorage.getId(), "TbShopStorage", "id", id);
|
||||
return tbShopStorageMapper.toDto(tbShopStorage);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public TbShopStorageDto create(TbShopStorage resources) {
|
||||
resources.setSavTime(new Timestamp(System.currentTimeMillis()));
|
||||
resources.setExpTime(new Timestamp(System.currentTimeMillis() + 86400000 * resources.getExpDay()));
|
||||
return tbShopStorageMapper.toDto(tbShopStorageRepository.save(resources));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateNum(TbShopStorageNumDto resources) {
|
||||
TbShopStorage tbShopStorage = tbShopStorageRepository.findById(resources.getId()).orElseGet(TbShopStorage::new);
|
||||
ValidationUtil.isNull(tbShopStorage.getId(), "TbShopStorage", "id", resources.getId());
|
||||
if (resources.getType() == 1) {
|
||||
tbShopStorage.setNum(tbShopStorage.getNum() + resources.getNum());
|
||||
if (tbShopStorage.getStatus() == 0) {
|
||||
tbShopStorage.setStatus(1);
|
||||
}
|
||||
} else if (resources.getType() == 0) {
|
||||
int sum = tbShopStorage.getNum() - resources.getNum();
|
||||
if (sum < 0) {
|
||||
throw new BadRequestException("取酒失败,该酒余量不足");
|
||||
}
|
||||
if (sum == 0) {
|
||||
tbShopStorage.setStatus(0);
|
||||
}
|
||||
tbShopStorage.setNum(sum);
|
||||
} else {
|
||||
throw new BadRequestException("存取酒失败");
|
||||
}
|
||||
tbShopStorageRepository.save(tbShopStorage);
|
||||
TbShopStorageRecord record = new TbShopStorageRecord();
|
||||
record.setStorageId(resources.getId());
|
||||
record.setTime(new Timestamp(System.currentTimeMillis()));
|
||||
record.setContent((resources.getType() == 1 ? "存入" : "取出") + resources.getNum() + tbShopStorage.getUnit() + tbShopStorage.getName());
|
||||
storageRecordService.create(record);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void update(TbShopStorage resources) {
|
||||
TbShopStorage tbShopStorage = tbShopStorageRepository.findById(resources.getId()).orElseGet(TbShopStorage::new);
|
||||
ValidationUtil.isNull(tbShopStorage.getId(), "TbShopStorage", "id", resources.getId());
|
||||
tbShopStorage.copy(resources);
|
||||
tbShopStorageRepository.save(tbShopStorage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteAll(Integer[] ids) {
|
||||
for (Integer id : ids) {
|
||||
tbShopStorageRepository.deleteById(id);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void download(List<TbShopStorageDto> all, HttpServletResponse response) throws IOException {
|
||||
List<Map<String, Object>> list = new ArrayList<>();
|
||||
for (TbShopStorageDto tbShopStorage : all) {
|
||||
Map<String, Object> map = new LinkedHashMap<>();
|
||||
map.put("酒品名", tbShopStorage.getName());
|
||||
map.put("酒品图", tbShopStorage.getImgUrl());
|
||||
map.put("单位", tbShopStorage.getUnit());
|
||||
map.put("数量", tbShopStorage.getNum());
|
||||
map.put("0:已取完;1:未取完", tbShopStorage.getStatus());
|
||||
map.put("到期时间", tbShopStorage.getExpTime());
|
||||
map.put("存酒时间", tbShopStorage.getSavTime());
|
||||
map.put("用户Id", tbShopStorage.getUserid());
|
||||
map.put("用户昵称", tbShopStorage.getNickname());
|
||||
map.put("用户电话", tbShopStorage.getTelphone());
|
||||
map.put("店铺id", tbShopStorage.getShopId());
|
||||
list.add(map);
|
||||
}
|
||||
FileUtil.downloadExcel(list, response);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package cn.ysk.cashier.service.shop;
|
||||
|
||||
import cn.ysk.cashier.dto.shop.TbShopStorageGoodDto;
|
||||
import cn.ysk.cashier.dto.shop.TbShopStorageGoodQueryCriteria;
|
||||
import cn.ysk.cashier.pojo.shop.TbShopStorageGood;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import java.util.Map;
|
||||
import java.util.List;
|
||||
import java.io.IOException;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* @author ww
|
||||
* @date 2024-05-21
|
||||
**/
|
||||
public interface TbShopStorageGoodService {
|
||||
|
||||
/**
|
||||
* 查询数据分页
|
||||
* @param criteria 条件
|
||||
* @param pageable 分页参数
|
||||
* @return Map<String,Object>
|
||||
*/
|
||||
Map<String,Object> queryAll(TbShopStorageGoodQueryCriteria criteria, Pageable pageable);
|
||||
|
||||
/**
|
||||
* 查询所有数据不分页
|
||||
* @param criteria 条件参数
|
||||
* @return List<TbShopStorageGoodDto>
|
||||
*/
|
||||
List<TbShopStorageGoodDto> queryAll(TbShopStorageGoodQueryCriteria criteria);
|
||||
|
||||
/**
|
||||
* 根据ID查询
|
||||
* @param id ID
|
||||
* @return TbShopStorageGoodDto
|
||||
*/
|
||||
TbShopStorageGoodDto findById(Integer id);
|
||||
|
||||
/**
|
||||
* 创建
|
||||
* @param resources /
|
||||
* @return TbShopStorageGoodDto
|
||||
*/
|
||||
TbShopStorageGoodDto create(TbShopStorageGood resources);
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
* @param resources /
|
||||
*/
|
||||
void update(TbShopStorageGood resources);
|
||||
|
||||
/**
|
||||
* 多选删除
|
||||
* @param ids /
|
||||
*/
|
||||
void deleteAll(Integer[] ids);
|
||||
|
||||
/**
|
||||
* 导出数据
|
||||
* @param all 待导出的数据
|
||||
* @param response /
|
||||
* @throws IOException /
|
||||
*/
|
||||
void download(List<TbShopStorageGoodDto> all, HttpServletResponse response) throws IOException;
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package cn.ysk.cashier.service.shop;
|
||||
|
||||
import cn.ysk.cashier.dto.shop.TbShopStorageRecordDto;
|
||||
import cn.ysk.cashier.dto.shop.TbShopStorageRecordQueryCriteria;
|
||||
import cn.ysk.cashier.pojo.shop.TbShopStorageRecord;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import java.util.Map;
|
||||
import java.util.List;
|
||||
import java.io.IOException;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* @author ww
|
||||
* @date 2024-05-21
|
||||
**/
|
||||
public interface TbShopStorageRecordService {
|
||||
|
||||
/**
|
||||
* 查询数据分页
|
||||
* @param criteria 条件
|
||||
* @param pageable 分页参数
|
||||
* @return Map<String,Object>
|
||||
*/
|
||||
Map<String,Object> queryAll(TbShopStorageRecordQueryCriteria criteria, Pageable pageable);
|
||||
|
||||
/**
|
||||
* 查询所有数据不分页
|
||||
* @param criteria 条件参数
|
||||
* @return List<TbShopStorageRecordDto>
|
||||
*/
|
||||
List<TbShopStorageRecordDto> queryAll(TbShopStorageRecordQueryCriteria criteria);
|
||||
|
||||
/**
|
||||
* 根据ID查询
|
||||
* @param id ID
|
||||
* @return TbShopStorageRecordDto
|
||||
*/
|
||||
TbShopStorageRecordDto findById(Integer id);
|
||||
|
||||
/**
|
||||
* 创建
|
||||
* @param resources /
|
||||
* @return TbShopStorageRecordDto
|
||||
*/
|
||||
TbShopStorageRecordDto create(TbShopStorageRecord resources);
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
* @param resources /
|
||||
*/
|
||||
void update(TbShopStorageRecord resources);
|
||||
|
||||
/**
|
||||
* 多选删除
|
||||
* @param ids /
|
||||
*/
|
||||
void deleteAll(Integer[] ids);
|
||||
|
||||
/**
|
||||
* 导出数据
|
||||
* @param all 待导出的数据
|
||||
* @param response /
|
||||
* @throws IOException /
|
||||
*/
|
||||
void download(List<TbShopStorageRecordDto> all, HttpServletResponse response) throws IOException;
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
package cn.ysk.cashier.service.shop;
|
||||
|
||||
import cn.ysk.cashier.dto.shop.TbShopStorageDto;
|
||||
import cn.ysk.cashier.dto.shop.TbShopStorageNumDto;
|
||||
import cn.ysk.cashier.dto.shop.TbShopStorageQueryCriteria;
|
||||
import cn.ysk.cashier.pojo.shop.TbShopStorage;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import java.util.Map;
|
||||
import java.util.List;
|
||||
import java.io.IOException;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* @author ww
|
||||
* @date 2024-05-21
|
||||
**/
|
||||
public interface TbShopStorageService {
|
||||
|
||||
/**
|
||||
* 查询数据分页
|
||||
* @param criteria 条件
|
||||
* @param pageable 分页参数
|
||||
* @return Map<String,Object>
|
||||
*/
|
||||
Map<String,Object> queryAll(TbShopStorageQueryCriteria criteria, Pageable pageable);
|
||||
|
||||
/**
|
||||
* 查询所有数据不分页
|
||||
* @param criteria 条件参数
|
||||
* @return List<TbShopStorageDto>
|
||||
*/
|
||||
List<TbShopStorageDto> queryAll(TbShopStorageQueryCriteria criteria);
|
||||
|
||||
/**
|
||||
* 根据ID查询
|
||||
* @param id ID
|
||||
* @return TbShopStorageDto
|
||||
*/
|
||||
TbShopStorageDto findById(Integer id);
|
||||
|
||||
/**
|
||||
* 创建
|
||||
* @param resources /
|
||||
* @return TbShopStorageDto
|
||||
*/
|
||||
TbShopStorageDto create(TbShopStorage resources);
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
* @param resources /
|
||||
*/
|
||||
void update(TbShopStorage resources);
|
||||
|
||||
void updateNum(TbShopStorageNumDto resources);
|
||||
|
||||
/**
|
||||
* 多选删除
|
||||
* @param ids /
|
||||
*/
|
||||
void deleteAll(Integer[] ids);
|
||||
|
||||
/**
|
||||
* 导出数据
|
||||
* @param all 待导出的数据
|
||||
* @param response /
|
||||
* @throws IOException /
|
||||
*/
|
||||
void download(List<TbShopStorageDto> all, HttpServletResponse response) throws IOException;
|
||||
}
|
||||
Reference in New Issue
Block a user