Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop

This commit is contained in:
Chopper 2021-08-13 18:18:18 +08:00
commit f3e0fd7bf5
10 changed files with 263 additions and 6 deletions

View File

@ -1,6 +1,7 @@
package cn.lili.event.impl; package cn.lili.event.impl;
import cn.hutool.core.convert.Convert;
import cn.lili.common.utils.CurrencyUtil; import cn.lili.common.utils.CurrencyUtil;
import cn.lili.common.utils.StringUtils; import cn.lili.common.utils.StringUtils;
import cn.lili.event.AfterSaleStatusChangeEvent; import cn.lili.event.AfterSaleStatusChangeEvent;
@ -98,6 +99,12 @@ public class MemberPointExecute implements MemberRegisterEvent, GoodsCommentComp
//赠送会员积分 //赠送会员积分
memberService.updateMemberPoint(point.longValue(), PointTypeEnum.INCREASE.name(), order.getMemberId(), "会员下单,赠送积分" + point + ""); memberService.updateMemberPoint(point.longValue(), PointTypeEnum.INCREASE.name(), order.getMemberId(), "会员下单,赠送积分" + point + "");
//取消订单恢复积分 //取消订单恢复积分
} else if (orderMessage.getNewStatus().equals(OrderStatusEnum.CANCELLED)) {
//根据订单编号获取订单数据,如果为积分订单则跳回
Order order = orderService.getBySn(orderMessage.getOrderSn());
if (order.getOrderPromotionType().equals(OrderPromotionTypeEnum.POINTS.name()) && order.getPriceDetailDTO().getPayPoint() != null) {
memberService.updateMemberPoint(Convert.toLong(order.getPriceDetailDTO().getPayPoint()), PointTypeEnum.INCREASE.name(), order.getMemberId(), "订单取消,恢复积分:" + order.getPriceDetailDTO().getPayPoint() + "");
}
} }
} }

View File

@ -52,10 +52,10 @@ public class StoreFlow {
@ApiModelProperty(value = "售后SN") @ApiModelProperty(value = "售后SN")
private String refundSn; private String refundSn;
@ApiModelProperty(value = "商家id") @ApiModelProperty(value = "店铺id")
private String storeId; private String storeId;
@ApiModelProperty(value = "商家名称 ") @ApiModelProperty(value = "店铺名称 ")
private String storeName; private String storeName;
@ApiModelProperty(value = "会员id") @ApiModelProperty(value = "会员id")

View File

@ -1,7 +1,15 @@
package cn.lili.modules.order.order.mapper; package cn.lili.modules.order.order.mapper;
import cn.lili.modules.order.order.entity.dos.StoreFlow; import cn.lili.modules.order.order.entity.dos.StoreFlow;
import cn.lili.modules.store.entity.vos.StoreFlowPayDownloadVO;
import cn.lili.modules.store.entity.vos.StoreFlowRefundDownloadVO;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/** /**
* 商家订单流水数据处理层 * 商家订单流水数据处理层
@ -10,4 +18,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @since 2020/11/17 7:35 下午 * @since 2020/11/17 7:35 下午
*/ */
public interface StoreFlowMapper extends BaseMapper<StoreFlow> { public interface StoreFlowMapper extends BaseMapper<StoreFlow> {
@Select("SELECT * FROM li_store_flow ${ew.customSqlSegment}")
List<StoreFlowPayDownloadVO> getStoreFlowPayDownloadVO(@Param(Constants.WRAPPER) Wrapper<StoreFlow> queryWrapper);
@Select("SELECT * FROM li_store_flow ${ew.customSqlSegment}")
List<StoreFlowRefundDownloadVO> getStoreFlowRefundDownloadVO(@Param(Constants.WRAPPER) Wrapper<StoreFlow> queryWrapper);
} }

View File

@ -0,0 +1,61 @@
package cn.lili.modules.store.entity.vos;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 店铺流水下载
* @author Bulbasaur
* @date: 2021/8/13 4:14 下午
*
*/
@Data
public class StoreFlowPayDownloadVO {
@CreatedDate
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT)
@ApiModelProperty(value = "创建时间", hidden = true)
private Date createTime;
@ApiModelProperty(value = "订单sn")
private String orderSn;
@ApiModelProperty(value = "店铺名称 ")
private String storeName;
@ApiModelProperty(value = "商品名称")
private String goodsName;
@ApiModelProperty(value = "销售量")
private Integer num;
@ApiModelProperty(value = "流水金额")
private Double finalPrice;
@ApiModelProperty(value = "平台收取交易佣金")
private Double commissionPrice;
@ApiModelProperty(value = "平台优惠券 使用金额")
private Double siteCouponPrice;
@ApiModelProperty(value = "单品分销返现支出")
private Double distributionRebate;
@ApiModelProperty(value = "积分活动商品结算价格")
private Double pointSettlementPrice;
@ApiModelProperty(value = "砍价活动商品结算价格")
private Double kanjiaSettlementPrice;
@ApiModelProperty(value = "最终结算金额")
private Double billPrice;
}

View File

@ -0,0 +1,64 @@
package cn.lili.modules.store.entity.vos;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 店铺流水下载
* @author Bulbasaur
* @date: 2021/8/13 4:14 下午
*
*/
@Data
public class StoreFlowRefundDownloadVO {
@CreatedDate
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT)
@ApiModelProperty(value = "创建时间", hidden = true)
private Date createTime;
@ApiModelProperty(value = "订单sn")
private String orderSn;
@ApiModelProperty(value = "售后SN")
private String refundSn;
@ApiModelProperty(value = "店铺名称 ")
private String storeName;
@ApiModelProperty(value = "商品名称")
private String goodsName;
@ApiModelProperty(value = "销售量")
private Integer num;
@ApiModelProperty(value = "流水金额")
private Double finalPrice;
@ApiModelProperty(value = "平台收取交易佣金")
private Double commissionPrice;
@ApiModelProperty(value = "平台优惠券 使用金额")
private Double siteCouponPrice;
@ApiModelProperty(value = "单品分销返现支出")
private Double distributionRebate;
@ApiModelProperty(value = "积分活动商品结算价格")
private Double pointSettlementPrice;
@ApiModelProperty(value = "砍价活动商品结算价格")
private Double kanjiaSettlementPrice;
@ApiModelProperty(value = "最终结算金额")
private Double billPrice;
}

View File

@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheConfig;
import javax.servlet.http.HttpServletResponse;
import java.util.Date; import java.util.Date;
/** /**
@ -92,4 +93,9 @@ public interface BillService extends IService<Bill> {
*/ */
Integer billNum(BillStatusEnum billStatusEnum); Integer billNum(BillStatusEnum billStatusEnum);
/**
* 下载结算单
* @param id 结算单ID
*/
void download(HttpServletResponse response, String id);
} }

View File

@ -2,26 +2,32 @@ package cn.lili.modules.store.serviceimpl;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException; import cn.lili.common.exception.ServiceException;
import cn.lili.common.security.context.UserContext; import cn.lili.common.security.context.UserContext;
import cn.lili.common.security.enums.UserEnums; import cn.lili.common.security.enums.UserEnums;
import cn.lili.common.utils.CurrencyUtil; import cn.lili.common.utils.CurrencyUtil;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.common.utils.SnowFlake; import cn.lili.common.utils.SnowFlake;
import cn.lili.common.utils.StringUtils; import cn.lili.common.utils.StringUtils;
import cn.lili.common.vo.PageVO; import cn.lili.common.vo.PageVO;
import cn.lili.modules.order.order.entity.dos.StoreFlow; import cn.lili.modules.order.order.entity.dos.StoreFlow;
import cn.lili.modules.order.order.entity.enums.FlowTypeEnum; import cn.lili.modules.order.order.entity.enums.FlowTypeEnum;
import cn.lili.modules.order.order.mapper.StoreFlowMapper;
import cn.lili.modules.order.order.service.StoreFlowService; import cn.lili.modules.order.order.service.StoreFlowService;
import cn.lili.modules.store.entity.dos.Bill; import cn.lili.modules.store.entity.dos.Bill;
import cn.lili.modules.store.entity.dto.BillSearchParams; import cn.lili.modules.store.entity.dto.BillSearchParams;
import cn.lili.modules.store.entity.enums.BillStatusEnum; import cn.lili.modules.store.entity.enums.BillStatusEnum;
import cn.lili.modules.store.entity.vos.BillListVO; import cn.lili.modules.store.entity.vos.BillListVO;
import cn.lili.modules.store.entity.vos.StoreDetailVO; import cn.lili.modules.store.entity.vos.StoreDetailVO;
import cn.lili.modules.store.entity.vos.StoreFlowPayDownloadVO;
import cn.lili.modules.store.mapper.BillMapper; import cn.lili.modules.store.mapper.BillMapper;
import cn.lili.modules.store.service.BillService; import cn.lili.modules.store.service.BillService;
import cn.lili.modules.store.service.StoreDetailService; import cn.lili.modules.store.service.StoreDetailService;
import cn.lili.mybatis.util.PageUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -32,7 +38,12 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* 结算单业务层实现 * 结算单业务层实现
@ -54,6 +65,8 @@ public class BillServiceImpl extends ServiceImpl<BillMapper, Bill> implements Bi
*/ */
@Autowired @Autowired
private StoreFlowService storeFlowService; private StoreFlowService storeFlowService;
@Resource
private StoreFlowMapper storeFlowMapper;
@Override @Override
public void createBill(String storeId, Date startTime, DateTime endTime) { public void createBill(String storeId, Date startTime, DateTime endTime) {
@ -210,4 +223,85 @@ public class BillServiceImpl extends ServiceImpl<BillMapper, Bill> implements Bi
return this.count(lambdaUpdateWrapper); return this.count(lambdaUpdateWrapper);
} }
public void download(HttpServletResponse response, String id) {
Bill bill = this.getById(id);
ExcelWriter writer = ExcelUtil.getWriterWithSheet("入账订单");
writer.setSheet("入账订单");
writer.addHeaderAlias("createTime", "入账时间");
writer.setColumnWidth(0, 20);
writer.addHeaderAlias("orderSn", "订单编号");
writer.setColumnWidth(1, 35);
writer.addHeaderAlias("storeName", "店铺名称");
writer.setColumnWidth(2, 20);
writer.addHeaderAlias("goodsName", "商品名称");
writer.setColumnWidth(3, 70);
writer.addHeaderAlias("num", "销售量");
writer.addHeaderAlias("finalPrice", "订单金额");
writer.addHeaderAlias("commissionPrice", "平台分佣");
writer.addHeaderAlias("siteCouponPrice", "平台优惠券");
writer.setColumnWidth(7, 12);
writer.addHeaderAlias("distributionRebate", "分销金额");
writer.addHeaderAlias("pointSettlementPrice", "积分结算金额");
writer.setColumnWidth(9, 12);
writer.addHeaderAlias("kanjiaSettlementPrice", "砍价结算金额");
writer.setColumnWidth(10, 12);
writer.addHeaderAlias("billPrice", "应结金额");
writer.setColumnWidth(11, 20);
//存放入账列表
LambdaQueryWrapper<StoreFlow> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(StoreFlow::getStoreId, bill.getStoreId());
lambdaQueryWrapper.between(StoreFlow::getCreateTime, bill.getStartTime(), bill.getCreateTime());
lambdaQueryWrapper.eq(StoreFlow::getFlowType, FlowTypeEnum.PAY.name());
List<StoreFlowPayDownloadVO> storeFlowList = storeFlowMapper.getStoreFlowPayDownloadVO(lambdaQueryWrapper);
writer.write(storeFlowList, true);
writer.setSheet("退款订单");
writer.addHeaderAlias("createTime", "入账时间");
writer.setColumnWidth(0, 20);
writer.addHeaderAlias("orderSn", "订单编号");
writer.setColumnWidth(1, 35);
writer.addHeaderAlias("refundSn", "售后单号");
writer.setColumnWidth(2, 35);
writer.addHeaderAlias("storeName", "店铺名称");
writer.setColumnWidth(3, 20);
writer.addHeaderAlias("goodsName", "商品名称");
writer.setColumnWidth(4, 70);
writer.addHeaderAlias("num", "销售量");
writer.addHeaderAlias("finalPrice", "退款金额");
writer.addHeaderAlias("commissionPrice", "平台分佣");
writer.addHeaderAlias("siteCouponPrice", "平台优惠券");
writer.setColumnWidth(8, 12);
writer.addHeaderAlias("distributionRebate", "分销金额");
writer.addHeaderAlias("pointSettlementPrice", "积分结算金额");
writer.setColumnWidth(10, 12);
writer.addHeaderAlias("kanjiaSettlementPrice", "砍价结算金额");
writer.setColumnWidth(11, 12);
writer.addHeaderAlias("billPrice", "结算金额");
writer.setColumnWidth(12, 20);
//存放入账列表
LambdaQueryWrapper<StoreFlow> storeFlowlambdaQueryWrapper = Wrappers.lambdaQuery();
storeFlowlambdaQueryWrapper.eq(StoreFlow::getStoreId, bill.getStoreId());
storeFlowlambdaQueryWrapper.between(StoreFlow::getCreateTime, bill.getStartTime(), bill.getCreateTime());
storeFlowlambdaQueryWrapper.eq(StoreFlow::getFlowType, FlowTypeEnum.PAY.name());
storeFlowList = storeFlowMapper.getStoreFlowPayDownloadVO(storeFlowlambdaQueryWrapper);
writer.write(storeFlowList, true);
ServletOutputStream out = null;
try {
//设置公共属性列表名称
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(bill.getStoreName() + "-" + bill.getSn(), "UTF8") + ".xls");
out = response.getOutputStream();
writer.flush(out, true);
} catch (Exception e) {
log.error("下载结算单错误", e);
} finally {
writer.close();
IoUtil.close(out);
}
}
} }

View File

@ -81,7 +81,7 @@ public class AfterSaleManagerController {
@ApiImplicitParam(name = "remark", value = "备注", paramType = "query"), @ApiImplicitParam(name = "remark", value = "备注", paramType = "query"),
@ApiImplicitParam(name = "actualRefundPrice", value = "实际退款金额", paramType = "query") @ApiImplicitParam(name = "actualRefundPrice", value = "实际退款金额", paramType = "query")
}) })
@PutMapping(value = "/confirm/{afterSaleSn}") @PutMapping(value = "/review/{afterSaleSn}")
public ResultMessage<AfterSale> review(@NotNull(message = "请选择售后单") @PathVariable String afterSaleSn, public ResultMessage<AfterSale> review(@NotNull(message = "请选择售后单") @PathVariable String afterSaleSn,
@NotNull(message = "请审核") String serviceStatus, @NotNull(message = "请审核") String serviceStatus,
String remark, String remark,

View File

@ -1,5 +1,6 @@
package cn.lili.controller.trade; package cn.lili.controller.trade;
import cn.lili.common.context.ThreadContextHolder;
import cn.lili.common.enums.ResultUtil; import cn.lili.common.enums.ResultUtil;
import cn.lili.common.vo.PageVO; import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.ResultMessage; import cn.lili.common.vo.ResultMessage;
@ -16,6 +17,8 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
/** /**
* 店铺端,结算单接口 * 店铺端,结算单接口
* *
@ -69,4 +72,14 @@ public class BillStoreController {
billService.check(id); billService.check(id);
return ResultUtil.success(); return ResultUtil.success();
} }
@ApiOperation(value = "下载结算单",produces="application/octet-stream")
@ApiImplicitParam(name = "id", value = "结算单ID", required = true, paramType = "path", dataType = "String")
@GetMapping(value = "/downLoad/{id}")
public void downLoadDeliverExcel(@PathVariable String id) {
HttpServletResponse response = ThreadContextHolder.getHttpResponse();
billService.download(response,id);
}
} }

View File

@ -150,8 +150,6 @@ public class OrderStoreController {
//下载订单批量发货Excel //下载订单批量发货Excel
this.orderService.getBatchDeliverList(response,logisticsName); this.orderService.getBatchDeliverList(response,logisticsName);
//return ResultUtil.success(ResultCode.SUCCESS);
} }
@PostMapping(value = "/batchDeliver", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @PostMapping(value = "/batchDeliver", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)