diff --git a/hiver-admin/src/main/resources/application.yml b/hiver-admin/src/main/resources/application.yml index 3cc06acc..653b7dfb 100644 --- a/hiver-admin/src/main/resources/application.yml +++ b/hiver-admin/src/main/resources/application.yml @@ -26,7 +26,7 @@ spring: # 数据源 datasource: url: jdbc:mysql://154.8.162.157:3306/hiver_shop?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true&allowMultiQueries=true - # url: jdbc:mysql://8.140.198.243:3306/hiver_shop?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true&allowMultiQueries=true +# url: jdbc:mysql://8.140.198.243:3306/hiver_shop?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true&allowMultiQueries=true username: reddoor # Jasypt加密 可到common-utils中找到JasyptUtil加解密工具类生成加密结果 格式为ENC(加密结果) 以下解密结果为123456 password: ENC(Zla4U4+yRLPhicvuX2TmiEgxEpzP4dk8BHzFDEtiEhwLQIIaftZrrEUJZce6efoe) diff --git a/hiver-admin/test-output/test-report.html b/hiver-admin/test-output/test-report.html index da8e3d31..7721184e 100644 --- a/hiver-admin/test-output/test-report.html +++ b/hiver-admin/test-output/test-report.html @@ -35,7 +35,7 @@ Hiver
  • - 09, 2024 10:22:46 + 12, 2024 11:22:46
  • @@ -84,7 +84,7 @@

    passTest

    -

    10:22:47 / 0.018 secs

    +

    11:22:47 / 0.045 secs

    @@ -92,9 +92,9 @@
    #test-id=1
    passTest
    -07.09.2024 10:22:47 -07.09.2024 10:22:47 -0.018 secs +07.12.2024 11:22:47 +07.12.2024 11:22:47 +0.045 secs
    @@ -104,7 +104,7 @@ Pass - 10:22:47 + 11:22:47 Test passed @@ -128,13 +128,13 @@

    Started

    -

    09, 2024 10:22:46

    +

    12, 2024 11:22:46

    Ended

    -

    09, 2024 10:22:47

    +

    12, 2024 11:22:47

    diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/bill/service/impl/BillServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/bill/service/impl/BillServiceImpl.java index 4f9d4659..19caa411 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/bill/service/impl/BillServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/bill/service/impl/BillServiceImpl.java @@ -3,6 +3,8 @@ package cc.hiver.mall.bill.service.impl; import cc.hiver.core.common.utils.StringUtils; import cc.hiver.mall.bill.service.BillService; import cc.hiver.mall.bill.vo.*; +import cc.hiver.mall.debt.entity.Debt; +import cc.hiver.mall.debt.service.DebtService; import cc.hiver.mall.entity.Customer; import cc.hiver.mall.entity.ReturnDetail; import cc.hiver.mall.entity.SaleDetail; @@ -13,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.text.ParseException; import java.util.*; @Service @@ -36,6 +39,9 @@ public class BillServiceImpl implements BillService { @Autowired private DealingsRecordService dealingsRecordService; + @Autowired + private DebtService debtService; + /** * 获取客户对账单 * @@ -64,34 +70,66 @@ public class BillServiceImpl implements BillService { if (saleArrearsVo != null) { customerBillDataVo.setArrears(saleArrearsVo.getArrears()); customerBillDataVo.setTotalSale(saleArrearsVo.getTotalSale()); + }else{ + customerBillDataVo.setArrears(BigDecimal.ZERO); + customerBillDataVo.setTotalSale(BigDecimal.ZERO); } // 获取退货总金额 final ArrearsVo returnSaleArrearsVo = returnSaleService.getTotalReturn(customerBillQueryVo); if (returnSaleArrearsVo != null) { customerBillDataVo.setTotalReturn(returnSaleArrearsVo.getTotalReturn()); + }else{ + customerBillDataVo.setTotalReturn(BigDecimal.ZERO); } // 根据客户id及日期范围对账单明细 final Page dealingRecordPage = dealingsRecordService.getDealingsRecordPageByUserId(customerBillQueryVo); final List records = dealingRecordPage.getRecords(); - // 获取saleId,去查询销售单的商品明细,及退货单的商品明细 final List saleIdList = new ArrayList<>(); - for (int i = 0; i < records.size(); i++) { - if(StringUtils.isNotEmpty(records.get(i).getSaleId())){ - saleIdList.add(records.get(i).getSaleId()); - } - // 根据时间升序查询的,这里获取第一个的初期欠款当做本次查询的初期欠款 - if (i == 0) { - final BigDecimal lastDebtAmount = records.get(0).getLastDebtAmount(); - customerBillDataVo.setInitialArrears(lastDebtAmount); + if(records.isEmpty()){ + //未开单,查询客户欠款,作为初期欠款和期末欠款 + final Debt debt = debtService.selectByUserId(customerBillQueryVo.getShopId(),customerBillQueryVo.getCustomerId()); + // 要查新客户的创建时间,根据用户的创建时间来判断; + // 如果查询时间小于创建时间,那么初期欠款和期末欠款应该为0 + // 如果查询的时间大于创建时间,那么初期欠款和期末欠款应该为客户欠款 + if(debt != null){ + final Date createTime = debt.getCreateTime(); + final String endDate = customerBillQueryVo.getEndDate(); + final Date enddate; + try { + enddate = DateUtil.COMMON.getTextDate(endDate); + } catch (ParseException e) { + throw new RuntimeException(e); + } + // 以为现在创建客户就创建了欠款信息,那么就按照欠款信息的创建时间作为标识 + if(createTime.after(enddate)){ + customerBillDataVo.setInitialArrears(BigDecimal.ZERO); + customerBillDataVo.setEndArrears(BigDecimal.ZERO); + }else{ + customerBillDataVo.setInitialArrears(debt.getAmountOwed()); + customerBillDataVo.setEndArrears(debt.getAmountOwed()); + } + } - // 获取最后一个的剩余欠款当做本次查询的剩余欠款 - if (i == records.size() - 1) { - customerBillDataVo.setEndArrears(records.get(i).getBalanceDue()); + }else{ + for (int i = 0; i < records.size(); i++) { + if(StringUtils.isNotEmpty(records.get(i).getSaleId())){ + saleIdList.add(records.get(i).getSaleId()); + } + // 根据时间升序查询的,这里获取第一个的初期欠款当做本次查询的初期欠款 + if (i == 0) { + final BigDecimal lastDebtAmount = records.get(0).getLastDebtAmount(); + customerBillDataVo.setInitialArrears(lastDebtAmount); + } + // 获取最后一个的剩余欠款当做本次查询的剩余欠款 + if (i == records.size() - 1) { + customerBillDataVo.setEndArrears(records.get(i).getBalanceDue()); + } } } + if (!saleIdList.isEmpty()) { // 获取销售单明细 final List saleDetailList = saleDetailService.getSaleDetails(saleIdList); diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java index e71add35..81a14efc 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java @@ -147,7 +147,7 @@ public class SaleController { saleQueryDTO.getSale().setShopName(shop.getShopName()); // 根据该客户的欠款信息 String userId = saleQueryDTO.getSale().getUserId(); - Debt debt = debtService.selectByUserId(userId); + Debt debt = debtService.selectByUserId(shopId,userId); BigDecimal amountOwed = debt.getAmountOwed(); // 20240616 开单可能值包含退货单 Sale sale = saleQueryDTO.getSale(); @@ -433,17 +433,13 @@ public class SaleController { @RequestMapping(value = "/listPages", method = RequestMethod.POST) @ApiOperation("根据条件获得分页") public Result queryPage(@RequestBody SaleVO saleVO) { - /*String shopId = ""; - try { - // 获取请求token - shopId = securityUtil.getShopId(); - } catch (Exception e) { - return ResultUtil.error(500, e.getMessage()); - }*/ if (ObjectUtils.isEmpty(saleVO)) { return new ResultUtil().setErrorMsg("请输入查询条件后再查询!"); } - // saleVO.setShopId(shopId); + if (StringUtils.isNotEmpty(saleVO.getEndTime())) { + final String newEnTime = DateUtil.addDay(saleVO.getEndTime(), 1); + saleVO.setEndTime(newEnTime); + } final Page saleList = saleService.queryPage(saleVO); return new ResultUtil>().setData(saleList); } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/DebtService.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/DebtService.java index 00954e76..4c4c28cd 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/DebtService.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/DebtService.java @@ -60,7 +60,7 @@ public interface DebtService extends IService { * @param userId * @return Debt */ - Debt selectByUserId(String userId); + Debt selectByUserId(String shopId,String userId); Debt recharge(Debt debt); } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/impl/DebtServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/impl/DebtServiceImpl.java index 76a5681b..1eac465a 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/impl/DebtServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/impl/DebtServiceImpl.java @@ -228,8 +228,8 @@ public class DebtServiceImpl extends ServiceImpl implements De return debtMapper.getDebtByUserIds(userIds); } - public Debt selectByUserId(String userId) { - return debtMapper.selectByUserId(securityUtil.getShopId(), userId); + public Debt selectByUserId(String shopId, String userId) { + return debtMapper.selectByUserId(shopId, userId); } @Override diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/query/SalesRankingQueryCriteria.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/query/SalesRankingQueryCriteria.java index 2435e7a5..fc15f8ef 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/query/SalesRankingQueryCriteria.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/query/SalesRankingQueryCriteria.java @@ -1,16 +1,12 @@ package cc.hiver.mall.pojo.query; -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; -import java.text.SimpleDateFormat; -import java.util.Date; -@ApiModel(value = "业绩管理返回实体") +@ApiModel(value = "业绩管理查询实体") @Data public class SalesRankingQueryCriteria implements Serializable { @@ -18,47 +14,9 @@ public class SalesRankingQueryCriteria implements Serializable { private String shopId; @ApiModelProperty(value = "开始时间") - private Date startTime; + private String startTime; @ApiModelProperty(value = "结束时间") - private Date endTime; - - public Date getStartTime() { - return startTime; - } - - public void setStartTime(String startTime) { - if (!StrUtil.isNotEmpty(startTime)) { - this.startTime = null; - return; - } - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); - try { - this.startTime = formatter.parse(startTime + " 00:00:00"); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public Date getEndTime() { - return endTime; - } - - public void setEndTime(String endTime) { - if (!StrUtil.isNotEmpty(endTime)) { - this.endTime = null; - return; - } - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); - try { - this.endTime = formatter.parse(endTime + "23:59:59"); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public boolean isAnyFieldEmpty() { - return ObjectUtils.isEmpty(this.startTime) && ObjectUtils.isEmpty(this.endTime); - } + private String endTime; } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/CustomerSaleDetailVo.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/CustomerSaleDetailVo.java index 4352f850..4ce4c75f 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/CustomerSaleDetailVo.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/CustomerSaleDetailVo.java @@ -18,7 +18,7 @@ public class CustomerSaleDetailVo { private String productCount; @ApiModelProperty(value = " 拿货总金额") - private String realAmount; + private String totalAmount; @ApiModelProperty(value = " 成本") private String totalCost; diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ProductAttributeValueVo.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ProductAttributeValueVo.java index a0d11ec5..c2e58a8a 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ProductAttributeValueVo.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ProductAttributeValueVo.java @@ -11,6 +11,9 @@ public class ProductAttributeValueVo extends HiverBaseEntity { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "属性值id") + private String id; + @ApiModelProperty(value = "商品属性ID") private String attributeId; diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java index 8fdb84b7..68c328ae 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java @@ -259,7 +259,7 @@ public class SalesAndDetailsServiceImpl implements SalesAndDetailsService { } } // 获取销售员的手机号 - User user = userService.get(sale.getCreateBy()); + final User user = securityUtil.getCurrUser(); sale.setCreateByPhone(user.getMobile()); sale.setCreateTime(new Date()); sale.setDelFlag(CommonConstant.DEL_FLAG_FALSE); diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/DealingsRecordServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/DealingsRecordServiceImpl.java index 97f88221..6ed65235 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/DealingsRecordServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/DealingsRecordServiceImpl.java @@ -1,13 +1,11 @@ package cc.hiver.mall.serviceimpl.mybatis; import cc.hiver.core.common.utils.SecurityUtil; -import cc.hiver.core.common.utils.StringUtils; import cc.hiver.mall.bill.vo.CustomerBillQueryVo; import cc.hiver.mall.bill.vo.CustomerBillSaleVo; import cc.hiver.mall.dao.mapper.DealingsRecordMapper; import cc.hiver.mall.entity.DealingsRecord; import cc.hiver.mall.service.mybatis.DealingsRecordService; -import cc.hiver.mall.utils.DateUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; @@ -32,9 +30,6 @@ public class DealingsRecordServiceImpl extends ServiceImpl i @Override public BigDecimal getPurchasingCost(String shopId, String startTime, String endTime) { - if (StringUtils.isNotEmpty(endTime)) { - endTime = DateUtil.addDay(endTime, 1); - } return purchaseMapper.getPurchasingCost(shopId, startTime, endTime); } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java index de066d74..87ebde65 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java @@ -13,6 +13,7 @@ import cc.hiver.core.service.LogiticsCompanyService; import cc.hiver.mall.bill.vo.ArrearsVo; import cc.hiver.mall.bill.vo.CustomerBillQueryVo; import cc.hiver.mall.bill.vo.CustomerBillSaleVo; +import cc.hiver.mall.common.constant.OrderConstant; import cc.hiver.mall.common.constant.StockConstant; import cc.hiver.mall.common.constant.StockLogConstant; import cc.hiver.mall.config.thread.AiSaleThread; @@ -30,6 +31,7 @@ import cc.hiver.mall.saleaimsg.constant.SaleAiMsgConstant; import cc.hiver.mall.saleaimsg.entity.SaleAiMsg; import cc.hiver.mall.saleaimsg.service.SaleAiMsgService; import cc.hiver.mall.service.OrderService; +import cc.hiver.mall.service.SendMessageService; import cc.hiver.mall.service.mybatis.*; import cc.hiver.mall.utils.AliOcrUtil; import cc.hiver.mall.utils.DateUtil; @@ -106,6 +108,9 @@ public class SaleServiceImpl extends ServiceImpl implements Sa @Autowired private DebtService debtService; + @Autowired + private SendMessageService sendMessageService; + @Override public void editPayPrice(String id, BigDecimal price, String dealingsWay) { // 修改采购单、实付、未付金额 @@ -157,11 +162,6 @@ public class SaleServiceImpl extends ServiceImpl implements Sa if (!ObjectUtils.isEmpty(saleVO.getPageVo())) { page = new Page<>(saleVO.getPageVo().getPageNumber(), saleVO.getPageVo().getPageSize()); } - if (StringUtils.isNotEmpty(saleVO.getEndTime())) { - final String newEnTime = DateUtil.addDay(saleVO.getEndTime(), 1); - saleVO.setEndTime(newEnTime); - } - final Page saleList = saleMapper.queryPage(page, saleVO); // 获取订单详情信息 for (Sale sale : saleList.getRecords()) { @@ -351,6 +351,9 @@ public class SaleServiceImpl extends ServiceImpl implements Sa */ @Override public List getSalesRankingByShopId(SalesRankingQueryCriteria salesRankingQueryCriteria) { + if(StringUtils.isNotEmpty(salesRankingQueryCriteria.getEndTime())){ + salesRankingQueryCriteria.setEndTime(DateUtil.addDay(salesRankingQueryCriteria.getEndTime(), 1)); + } return saleMapper.getSalesRankingByShopId(salesRankingQueryCriteria); } @@ -915,7 +918,7 @@ public class SaleServiceImpl extends ServiceImpl implements Sa // 4. 订单款项记录作废 // 根据订单获取交易记录 final String userId = sale.getUserId(); - final Debt oldDebt = debtService.selectByUserId(userId); + final Debt oldDebt = debtService.selectByUserId(sale.getShopId(),userId); if (oldDebt != null) { final BigDecimal newDebtAmount; final BigDecimal lastDebtAmount = oldDebt.getAmountOwed(); @@ -954,6 +957,20 @@ public class SaleServiceImpl extends ServiceImpl implements Sa } // 作废当前订单的欠款记录 dealingsRecordService.cancelRecord(id); + // 如果有配送单,那么就取消配送,并给快递员发送消息 + final OrderXd orderXd = orderService.findByOrderId(id); + if(orderXd != null && (orderXd.getOrderStatus().equals(OrderConstant.ORDER_STATUS[0]) || orderXd.getOrderStatus().equals(OrderConstant.ORDER_STATUS[1]))){ + if (StringUtils.isNotEmpty(orderXd.getOrderByWorker())) { + // 如果订单被抢单了,那么需要给配送员发送消息 + sendMessageService.handleSendAppMessageOfQuxiao(orderXd.getOrderByWorker()); + } + orderXd.setOrderByWorker(null); + orderXd.setOrderByWorkertime(null); + orderXd.setWorker(null); + // 修改为作废 + orderXd.setOrderStatus(OrderConstant.ORDER_STATUS[2]); + orderService.update(orderXd); + } } @Override diff --git a/hiver-modules/hiver-mall/src/main/resources/mapper/ProductAttributeValueMapper.xml b/hiver-modules/hiver-mall/src/main/resources/mapper/ProductAttributeValueMapper.xml index abc90ea2..86ba560b 100644 --- a/hiver-modules/hiver-mall/src/main/resources/mapper/ProductAttributeValueMapper.xml +++ b/hiver-modules/hiver-mall/src/main/resources/mapper/ProductAttributeValueMapper.xml @@ -259,7 +259,7 @@