From 34924ad35142d7debe6aeb7a6a1730ec227e1263 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 26 Feb 2025 16:07:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A8=E5=AE=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ycwl/basic/biz/BrokerBiz.java | 120 ++++++++++++++++++ .../basic/controller/pc/BrokerController.java | 81 ++++++++++++ .../com/ycwl/basic/mapper/BrokerMapper.java | 6 +- .../ycwl/basic/mapper/BrokerRecordMapper.java | 31 +++++ .../ycwl/basic/mapper/StatisticsMapper.java | 4 + .../model/pc/broker/entity/BrokerEntity.java | 11 +- .../model/pc/broker/entity/BrokerRecord.java | 27 ++++ .../pc/broker/req/BrokerRecordReqQuery.java | 24 ++++ .../model/pc/broker/req/BrokerReqQuery.java | 5 +- .../pc/broker/resp/BrokerRecordRespVO.java | 25 ++++ .../model/pc/broker/resp/BrokerRespVO.java | 17 ++- .../pc/broker/resp/DailySummaryRespVO.java | 17 +++ .../profitsharing/biz/ProfitSharingBiz.java | 2 +- .../impl/pc/BrokerRecordServiceImpl.java | 64 ++++++++++ .../service/impl/pc/BrokerServiceImpl.java | 17 ++- .../basic/service/pc/BrokerRecordService.java | 30 +++++ .../ycwl/basic/service/pc/BrokerService.java | 7 +- src/main/resources/mapper/BrokerMapper.xml | 55 ++++---- .../resources/mapper/BrokerRecordMapper.xml | 86 +++++++++++++ .../resources/mapper/StatisticsMapper.xml | 16 +++ 20 files changed, 601 insertions(+), 44 deletions(-) create mode 100644 src/main/java/com/ycwl/basic/biz/BrokerBiz.java create mode 100644 src/main/java/com/ycwl/basic/mapper/BrokerRecordMapper.java create mode 100644 src/main/java/com/ycwl/basic/model/pc/broker/entity/BrokerRecord.java create mode 100644 src/main/java/com/ycwl/basic/model/pc/broker/req/BrokerRecordReqQuery.java create mode 100644 src/main/java/com/ycwl/basic/model/pc/broker/resp/BrokerRecordRespVO.java create mode 100644 src/main/java/com/ycwl/basic/model/pc/broker/resp/DailySummaryRespVO.java create mode 100644 src/main/java/com/ycwl/basic/service/impl/pc/BrokerRecordServiceImpl.java create mode 100644 src/main/java/com/ycwl/basic/service/pc/BrokerRecordService.java create mode 100644 src/main/resources/mapper/BrokerRecordMapper.xml diff --git a/src/main/java/com/ycwl/basic/biz/BrokerBiz.java b/src/main/java/com/ycwl/basic/biz/BrokerBiz.java new file mode 100644 index 0000000..15ed83a --- /dev/null +++ b/src/main/java/com/ycwl/basic/biz/BrokerBiz.java @@ -0,0 +1,120 @@ +package com.ycwl.basic.biz; + +import cn.hutool.core.date.DateUtil; +import com.ycwl.basic.mapper.BrokerMapper; +import com.ycwl.basic.mapper.BrokerRecordMapper; +import com.ycwl.basic.mapper.StatisticsMapper; +import com.ycwl.basic.model.pc.broker.entity.BrokerRecord; +import com.ycwl.basic.model.pc.broker.resp.BrokerRespVO; +import com.ycwl.basic.model.pc.order.entity.OrderEntity; +import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; +import com.ycwl.basic.repository.OrderRepository; +import com.ycwl.basic.repository.ScenicRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +@Component +public class BrokerBiz { + @Autowired + private BrokerMapper brokerMapper; + @Autowired + private BrokerRecordMapper brokerRecordMapper; + @Autowired + private OrderRepository orderRepository; + @Autowired + private ScenicRepository scenicRepository; + @Autowired + private StatisticsMapper statisticsMapper; + + public void processOrder(Long orderId) { + OrderEntity order = orderRepository.getOrder(orderId); + if (order == null) { + return; + } + ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(order.getScenicId()); + if (scenicConfig == null) { + return; + } + int expireDay = 3; + if (scenicConfig.getSampleStoreDay() != null) { + expireDay = scenicConfig.getSampleStoreDay(); + } + List brokerIdList = statisticsMapper.getBrokerIdListForUser(order.getMemberId(), DateUtil.offsetDay(DateUtil.beginOfDay(order.getCreateAt()), -expireDay), order.getCreateAt()); + List brokerInfoList = brokerIdList.stream().map(brokerId -> { + BrokerRespVO broker = brokerMapper.getById(brokerId); + if (broker == null) { + return null; + } + if (Integer.valueOf(0).equals(broker.getStatus())) { + return null; + } + if (Integer.valueOf(0).equals(broker.getBrokerEnable())) { + return null; + } + return broker; + }).filter(Objects::nonNull).collect(Collectors.toList()); + if (brokerInfoList.isEmpty()) { + return; + } + List brokerRecordList = new ArrayList<>(); + if (brokerInfoList.size() == 1) { + // 直接算佣金 + String reason = "单人提成:"; + BrokerRespVO broker = brokerInfoList.get(0); + BrokerRecord brokerRecord = new BrokerRecord(); + brokerRecord.setBrokerId(broker.getId()); + brokerRecord.setOrderId(orderId); + if (broker.getBrokerRate() == null) { + reason += "提成比例为空!"; + brokerRecord.setBrokerRate(BigDecimal.ZERO); + } + brokerRecord.setOrderPrice(order.getPayPrice()); + brokerRecord.setBrokerRate(broker.getBrokerRate()); + BigDecimal brokerRate = brokerRecord.getBrokerRate(); + BigDecimal brokerPrice = order.getPayPrice().multiply(brokerRate).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_DOWN); + brokerRecord.setBrokerPrice(brokerPrice); + reason += "金额:" + order.getPayPrice() + "元,提成比例:" + brokerRate + ",提成金额:" + brokerPrice + "元"; + brokerRecord.setReason(reason); + brokerRecordList.add(brokerRecord); + } else { + BigDecimal totalRate = brokerInfoList.stream().map(BrokerRespVO::getBrokerRate).reduce(BigDecimal.ZERO, BigDecimal::add); + BrokerRespVO broker = brokerInfoList.get(0); + BigDecimal firstRate = broker.getBrokerRate(); + BigDecimal brokerPrice = order.getPayPrice().multiply(firstRate).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_DOWN); + brokerInfoList.forEach(item -> { + String reason = "多人提成:支付金额:" + order.getPayPrice() + "元,可提成比例:" + firstRate + ",可提成金额:" + brokerPrice + ":"; + BrokerRecord brokerRecord = new BrokerRecord(); + brokerRecord.setBrokerId(item.getId()); + brokerRecord.setOrderId(orderId); + if (item.getBrokerRate() == null) { + reason += "提成比例为空!"; + brokerRecord.setBrokerRate(BigDecimal.ZERO); + } + brokerRecord.setOrderPrice(order.getPayPrice()); + BigDecimal interBrokerRate = item.getBrokerRate().divide(totalRate, 2, RoundingMode.HALF_DOWN); + brokerRecord.setBrokerRate(interBrokerRate); + BigDecimal interBrokerPrice = order.getPayPrice().multiply(interBrokerRate).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_DOWN); + brokerRecord.setBrokerPrice(interBrokerPrice); + reason += "提成比例:" + item.getBrokerRate() + ",实际提成比例:" + interBrokerRate + ",提成金额:" + interBrokerPrice + "元"; + brokerRecord.setReason(reason); + brokerRecordList.add(brokerRecord); + }); + } + revokeOrder(orderId); + brokerRecordList.forEach(brokerRecord -> { + brokerRecordMapper.add(brokerRecord); + }); + } + + public void revokeOrder(Long orderId) { + brokerRecordMapper.deleteByOrderId(orderId); + } +} diff --git a/src/main/java/com/ycwl/basic/controller/pc/BrokerController.java b/src/main/java/com/ycwl/basic/controller/pc/BrokerController.java index 110aed8..6644d67 100644 --- a/src/main/java/com/ycwl/basic/controller/pc/BrokerController.java +++ b/src/main/java/com/ycwl/basic/controller/pc/BrokerController.java @@ -1,14 +1,29 @@ package com.ycwl.basic.controller.pc; import com.ycwl.basic.model.pc.broker.entity.BrokerEntity; +import com.ycwl.basic.model.pc.broker.req.BrokerRecordReqQuery; import com.ycwl.basic.model.pc.broker.req.BrokerReqQuery; +import com.ycwl.basic.model.pc.broker.resp.BrokerRecordRespVO; +import com.ycwl.basic.model.pc.broker.resp.BrokerRespVO; +import com.ycwl.basic.model.pc.broker.resp.DailySummaryRespVO; +import com.ycwl.basic.service.pc.BrokerRecordService; import com.ycwl.basic.service.pc.BrokerService; import com.ycwl.basic.utils.ApiResponse; +import com.ycwl.basic.utils.WxMpUtil; +import com.ycwl.basic.repository.ScenicRepository; +import com.ycwl.basic.storage.StorageFactory; +import com.ycwl.basic.storage.adapters.IStorageAdapter; +import com.ycwl.basic.model.pc.mp.MpConfigEntity; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.*; +import java.io.File; +import java.util.Date; +import java.util.List; + /** * @Author:longbinbin * @Date:2024/12/2 15:50 @@ -20,6 +35,12 @@ public class BrokerController { @Autowired private BrokerService brokerService; + @Autowired + private BrokerRecordService brokerRecordService; + + @Autowired + private ScenicRepository scenicRepository; + @ApiOperation("分页查询") @PostMapping("/page") public ApiResponse page(@RequestBody BrokerReqQuery brokerReqQuery){ @@ -53,4 +74,64 @@ public class BrokerController { return ApiResponse.success(brokerService.updateStatus(id)); } + @ApiOperation("修改状态") + @PutMapping("/updateBrokerEnable/{id}") + public ApiResponse updateBrokerEnable(@PathVariable("id") Long id){ + return ApiResponse.success(brokerService.updateBrokerEnable(id)); + } + + @ApiOperation("推客记录分页查询") + @PostMapping("/record/page") + public ApiResponse pageRecord(@RequestBody BrokerRecordReqQuery brokerRecordReqQuery) { + return ApiResponse.success(brokerRecordService.pageQuery(brokerRecordReqQuery)); + } + + @ApiOperation("推客记录列表查询") + @PostMapping("/record/list") + public ApiResponse listRecord(@RequestBody BrokerRecordReqQuery brokerRecordReqQuery) { + return ApiResponse.success(brokerRecordService.list(brokerRecordReqQuery)); + } + + @ApiOperation("推客记录详情查询") + @GetMapping("/record/getDetails/{id}") + public ApiResponse getRecordDetails(@PathVariable("id") Long id) { + return ApiResponse.success(brokerRecordService.getById(id)); + } + + @ApiOperation("根据brokerId和时间范围查询每天的记录数量和orderPrice汇总") + @GetMapping("/record/dailySummary") + public ApiResponse> getDailySummaryByBrokerId( + @RequestParam Long brokerId, + @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime, + @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime) { + return ApiResponse.success(brokerRecordService.getDailySummaryByBrokerId(brokerId, startTime, endTime)); + } + + @ApiOperation("根据景区ID下载小程序二维码") + @GetMapping("/{id}/QRCode") + public ApiResponse downloadQrCode(@PathVariable Long id) { + BrokerRespVO broker = brokerService.getById(id); + if (broker == null) { + return ApiResponse.fail("推客不存在"); + } + MpConfigEntity mpConfig = scenicRepository.getScenicMpConfig(broker.getScenicId()); + if (mpConfig == null) { + return ApiResponse.fail("小程序配置不存在"); + } + String appId = mpConfig.getAppId(); + String appSecret = mpConfig.getAppSecret(); + String appState = mpConfig.getState(); + String path = "pages/home/index?scenicId=" + broker.getScenicId() + "&morphId=" + id; + String filePath = "qr_code_tk_" + id + ".jpg"; + try { + WxMpUtil.generateWXAQRCode(appId, appSecret, appState, path, filePath); + IStorageAdapter adapter = StorageFactory.use(); + File file = new File(filePath); + String s = adapter.uploadFile(file, filePath); + file.delete(); + return ApiResponse.success(s); + } catch (Exception e) { + return ApiResponse.fail("生成二维码失败"); + } + } } diff --git a/src/main/java/com/ycwl/basic/mapper/BrokerMapper.java b/src/main/java/com/ycwl/basic/mapper/BrokerMapper.java index c3c9f1f..c47aaa9 100644 --- a/src/main/java/com/ycwl/basic/mapper/BrokerMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/BrokerMapper.java @@ -2,6 +2,7 @@ package com.ycwl.basic.mapper; import com.ycwl.basic.model.pc.broker.entity.BrokerEntity; import com.ycwl.basic.model.pc.broker.req.BrokerReqQuery; +import com.ycwl.basic.model.pc.broker.resp.BrokerRespVO; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -13,10 +14,11 @@ import java.util.List; */ @Mapper public interface BrokerMapper { - List list(BrokerReqQuery brokerReqQuery); - BrokerEntity getById(Long id); + List list(BrokerReqQuery brokerReqQuery); + BrokerRespVO getById(Long id); int add(BrokerEntity broker); int deleteById(Long id); int update(BrokerEntity broker); int updateStatus(Long id); + int updateBrokerEnable(Long id); } diff --git a/src/main/java/com/ycwl/basic/mapper/BrokerRecordMapper.java b/src/main/java/com/ycwl/basic/mapper/BrokerRecordMapper.java new file mode 100644 index 0000000..e523bc2 --- /dev/null +++ b/src/main/java/com/ycwl/basic/mapper/BrokerRecordMapper.java @@ -0,0 +1,31 @@ +package com.ycwl.basic.mapper; + +import com.ycwl.basic.model.pc.broker.entity.BrokerRecord; +import com.ycwl.basic.model.pc.broker.req.BrokerRecordReqQuery; +import com.ycwl.basic.model.pc.broker.resp.BrokerRecordRespVO; +import com.ycwl.basic.model.pc.broker.resp.DailySummaryRespVO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.Date; +import java.util.List; + +/** + * @Author:longbinbin + * @Date:2024/12/12 10:00 + */ +@Mapper +public interface BrokerRecordMapper { + List list(BrokerRecordReqQuery brokerRecordReqQuery); + + BrokerRecordRespVO getById(Long id); + + int add(BrokerRecord brokerRecord); + + int deleteById(Long id); + + int deleteByOrderId(Long orderId); + + int update(BrokerRecord brokerRecord); + + List getDailySummaryByBrokerId(Long brokerId, Date startTime, Date endTime); +} \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/mapper/StatisticsMapper.java b/src/main/java/com/ycwl/basic/mapper/StatisticsMapper.java index 9bb571c..276194b 100644 --- a/src/main/java/com/ycwl/basic/mapper/StatisticsMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/StatisticsMapper.java @@ -5,6 +5,8 @@ import com.ycwl.basic.model.mobile.statistic.req.StatisticsRecordAddReq; import org.apache.ibatis.annotations.Mapper; import java.math.BigDecimal; +import java.util.Date; +import java.util.List; /** * @Author:longbinbin @@ -87,4 +89,6 @@ public interface StatisticsMapper { BigDecimal countRefundAmount(CommonQueryReq query); int addStatisticsRecord(StatisticsRecordAddReq req); + + List getBrokerIdListForUser(Long memberId, Date startTime, Date endTime); } diff --git a/src/main/java/com/ycwl/basic/model/pc/broker/entity/BrokerEntity.java b/src/main/java/com/ycwl/basic/model/pc/broker/entity/BrokerEntity.java index 04418c7..b138b4b 100644 --- a/src/main/java/com/ycwl/basic/model/pc/broker/entity/BrokerEntity.java +++ b/src/main/java/com/ycwl/basic/model/pc/broker/entity/BrokerEntity.java @@ -1,9 +1,11 @@ package com.ycwl.basic.model.pc.broker.entity; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import java.math.BigDecimal; import java.util.Date; /** @@ -14,8 +16,9 @@ import java.util.Date; @Data @TableName("broker") public class BrokerEntity { - @TableId + @TableId(type = IdType.AUTO) private Long id; + private Long scenicId; /** * 推客名称 */ @@ -29,10 +32,8 @@ public class BrokerEntity { * 状态,0禁用,1启用 */ private Integer status; + private Integer brokerEnable; + private BigDecimal brokerRate; private Date createAt; private Date updateAt; - private Integer brokerOrderCount; - private Integer brokerOrderAmount; - private Date firstBrokerDate; - private Date lastBrokerDate; } diff --git a/src/main/java/com/ycwl/basic/model/pc/broker/entity/BrokerRecord.java b/src/main/java/com/ycwl/basic/model/pc/broker/entity/BrokerRecord.java new file mode 100644 index 0000000..265150f --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/pc/broker/entity/BrokerRecord.java @@ -0,0 +1,27 @@ +package com.ycwl.basic.model.pc.broker.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Author:longbinbin + * @Date:2024/12/12 10:00 + * 推客记录 + */ +@Data +@TableName("broker_record") +public class BrokerRecord { + @TableId + private Long id; + private Long brokerId; + private Long orderId; + private BigDecimal orderPrice; + private BigDecimal brokerRate; + private BigDecimal brokerPrice; + private String reason; + private Date createTime; +} \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/model/pc/broker/req/BrokerRecordReqQuery.java b/src/main/java/com/ycwl/basic/model/pc/broker/req/BrokerRecordReqQuery.java new file mode 100644 index 0000000..d1dee00 --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/pc/broker/req/BrokerRecordReqQuery.java @@ -0,0 +1,24 @@ +package com.ycwl.basic.model.pc.broker.req; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.ycwl.basic.model.common.BaseQueryParameterReq; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @Author:longbinbin + * @Date:2024/12/12 10:00 + */ +@Data +@ApiModel("查询推客记录请求参数") +public class BrokerRecordReqQuery extends BaseQueryParameterReq { + private Long brokerId; + private Long orderId; + @ApiModelProperty("开始时间") + private Date startTime; + @ApiModelProperty("结束时间") + private Date endTime; +} \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/model/pc/broker/req/BrokerReqQuery.java b/src/main/java/com/ycwl/basic/model/pc/broker/req/BrokerReqQuery.java index 9775b67..6478845 100644 --- a/src/main/java/com/ycwl/basic/model/pc/broker/req/BrokerReqQuery.java +++ b/src/main/java/com/ycwl/basic/model/pc/broker/req/BrokerReqQuery.java @@ -16,14 +16,15 @@ import java.util.Date; @ApiModel("查询推客列表请求参数") public class BrokerReqQuery extends BaseQueryParameterReq { private Long id; + private Long scenicId; @ApiModelProperty("推客名称") private String name; @ApiModelProperty("手机号") private String phone; - @ApiModelProperty("专属优惠码") - private String promoCode; @ApiModelProperty("状态,0禁用,1启用") private Integer status; + @ApiModelProperty("提成状态,0禁用,1启用") + private Integer brokerEnable; private Date startTime; private Date endTime; } diff --git a/src/main/java/com/ycwl/basic/model/pc/broker/resp/BrokerRecordRespVO.java b/src/main/java/com/ycwl/basic/model/pc/broker/resp/BrokerRecordRespVO.java new file mode 100644 index 0000000..c60f23c --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/pc/broker/resp/BrokerRecordRespVO.java @@ -0,0 +1,25 @@ +package com.ycwl.basic.model.pc.broker.resp; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Author:longbinbin + * @Date:2024/12/12 10:00 + */ +@Data +public class BrokerRecordRespVO { + private Long id; + private Long brokerId; + private Long orderId; + private BigDecimal orderPrice; + private BigDecimal brokerRate; + private BigDecimal brokerPrice; + private String reason; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; +} \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/model/pc/broker/resp/BrokerRespVO.java b/src/main/java/com/ycwl/basic/model/pc/broker/resp/BrokerRespVO.java index 1ae70b1..4b2d591 100644 --- a/src/main/java/com/ycwl/basic/model/pc/broker/resp/BrokerRespVO.java +++ b/src/main/java/com/ycwl/basic/model/pc/broker/resp/BrokerRespVO.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.math.BigDecimal; import java.util.Date; /** @@ -13,16 +14,26 @@ import java.util.Date; */ @Data public class BrokerRespVO { - @TableId private Long id; + private Long scenicId; + private String scenicName; @ApiModelProperty("推客名称") private String name; - @ApiModelProperty("专属优惠码") - private String promoCode; + private String phone; @ApiModelProperty("状态,0禁用,1启用") + private Integer brokerEnable; + private BigDecimal brokerRate; private Integer status; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createAt; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date updateAt; + + private Long brokerScanCount; + private Long brokerOrderCount; + private BigDecimal brokerOrderAmount; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date firstBrokerDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date lastBrokerDate; } diff --git a/src/main/java/com/ycwl/basic/model/pc/broker/resp/DailySummaryRespVO.java b/src/main/java/com/ycwl/basic/model/pc/broker/resp/DailySummaryRespVO.java new file mode 100644 index 0000000..0127abb --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/pc/broker/resp/DailySummaryRespVO.java @@ -0,0 +1,17 @@ +package com.ycwl.basic.model.pc.broker.resp; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Author:longbinbin + * @Date:2024/12/12 10:00 + */ +@Data +public class DailySummaryRespVO { + private Date date; + private Long recordCount; + private BigDecimal totalOrderPrice; +} \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/profitsharing/biz/ProfitSharingBiz.java b/src/main/java/com/ycwl/basic/profitsharing/biz/ProfitSharingBiz.java index 68e8a2a..9e71c84 100644 --- a/src/main/java/com/ycwl/basic/profitsharing/biz/ProfitSharingBiz.java +++ b/src/main/java/com/ycwl/basic/profitsharing/biz/ProfitSharingBiz.java @@ -203,7 +203,7 @@ public class ProfitSharingBiz { record.setCreateTime(new Date()); records.add(record); } - + revokeProfitSharing(scenicId, orderId, "重新分账"); recordMapper.batchInsert(records); } diff --git a/src/main/java/com/ycwl/basic/service/impl/pc/BrokerRecordServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/pc/BrokerRecordServiceImpl.java new file mode 100644 index 0000000..05fb901 --- /dev/null +++ b/src/main/java/com/ycwl/basic/service/impl/pc/BrokerRecordServiceImpl.java @@ -0,0 +1,64 @@ +package com.ycwl.basic.service.impl.pc; + +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.ycwl.basic.mapper.BrokerRecordMapper; +import com.ycwl.basic.model.pc.broker.entity.BrokerRecord; +import com.ycwl.basic.model.pc.broker.req.BrokerRecordReqQuery; +import com.ycwl.basic.model.pc.broker.resp.BrokerRecordRespVO; +import com.ycwl.basic.model.pc.broker.resp.DailySummaryRespVO; +import com.ycwl.basic.service.pc.BrokerRecordService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * @Author:longbinbin + * @Date:2024/12/12 10:00 + */ +@Service +public class BrokerRecordServiceImpl implements BrokerRecordService { + @Autowired + private BrokerRecordMapper brokerRecordMapper; + + @Override + public PageInfo pageQuery(BrokerRecordReqQuery brokerRecordReqQuery) { + PageHelper.startPage(brokerRecordReqQuery.getPageNum(), brokerRecordReqQuery.getPageSize()); + List list = brokerRecordMapper.list(brokerRecordReqQuery); + PageInfo pageInfo = new PageInfo<>(list); + return pageInfo; + } + + @Override + public List list(BrokerRecordReqQuery brokerRecordReqQuery) { + return brokerRecordMapper.list(brokerRecordReqQuery); + } + + @Override + public BrokerRecordRespVO getById(Long id) { + return brokerRecordMapper.getById(id); + } + + @Override + public int add(BrokerRecord brokerRecord) { + return brokerRecordMapper.add(brokerRecord); + } + + @Override + public int delete(Long id) { + return brokerRecordMapper.deleteById(id); + } + + @Override + public int update(BrokerRecord brokerRecord) { + return brokerRecordMapper.update(brokerRecord); + } + + @Override + public List getDailySummaryByBrokerId(Long brokerId, Date startTime, Date endTime) { + return brokerRecordMapper.getDailySummaryByBrokerId(brokerId, startTime, endTime); + } + +} \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/service/impl/pc/BrokerServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/pc/BrokerServiceImpl.java index 265398f..75afc35 100644 --- a/src/main/java/com/ycwl/basic/service/impl/pc/BrokerServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/pc/BrokerServiceImpl.java @@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo; import com.ycwl.basic.mapper.BrokerMapper; import com.ycwl.basic.model.pc.broker.entity.BrokerEntity; import com.ycwl.basic.model.pc.broker.req.BrokerReqQuery; +import com.ycwl.basic.model.pc.broker.resp.BrokerRespVO; import com.ycwl.basic.service.pc.BrokerService; import com.ycwl.basic.utils.SnowFlakeUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -23,20 +24,20 @@ public class BrokerServiceImpl implements BrokerService { private BrokerMapper brokerMapper; @Override - public PageInfo pageQuery(BrokerReqQuery brokerReqQuery) { + public PageInfo pageQuery(BrokerReqQuery brokerReqQuery) { PageHelper.startPage(brokerReqQuery.getPageNum(),brokerReqQuery.getPageSize()); - List list = brokerMapper.list(brokerReqQuery); - PageInfo pageInfo = new PageInfo(list); + List list = brokerMapper.list(brokerReqQuery); + PageInfo pageInfo = new PageInfo(list); return pageInfo; } @Override - public List list(BrokerReqQuery brokerReqQuery) { + public List list(BrokerReqQuery brokerReqQuery) { return brokerMapper.list(brokerReqQuery); } @Override - public BrokerEntity getById(Long id) { + public BrokerRespVO getById(Long id) { return brokerMapper.getById(id); } @@ -44,7 +45,6 @@ public class BrokerServiceImpl implements BrokerService { public int addOrUpdate(BrokerEntity broker) { Long id = broker.getId(); if(id==null){ - broker.setId(SnowFlakeUtil.getLongId()); return brokerMapper.add(broker); }else { return brokerMapper.update(broker); @@ -60,4 +60,9 @@ public class BrokerServiceImpl implements BrokerService { public int updateStatus(Long id) { return brokerMapper.updateStatus(id); } + + @Override + public int updateBrokerEnable(Long id) { + return brokerMapper.updateBrokerEnable(id); + } } diff --git a/src/main/java/com/ycwl/basic/service/pc/BrokerRecordService.java b/src/main/java/com/ycwl/basic/service/pc/BrokerRecordService.java new file mode 100644 index 0000000..efde446 --- /dev/null +++ b/src/main/java/com/ycwl/basic/service/pc/BrokerRecordService.java @@ -0,0 +1,30 @@ +package com.ycwl.basic.service.pc; + +import com.github.pagehelper.PageInfo; +import com.ycwl.basic.model.pc.broker.entity.BrokerRecord; +import com.ycwl.basic.model.pc.broker.req.BrokerRecordReqQuery; +import com.ycwl.basic.model.pc.broker.resp.BrokerRecordRespVO; +import com.ycwl.basic.model.pc.broker.resp.DailySummaryRespVO; + +import java.util.Date; +import java.util.List; + +/** + * @Author:longbinbin + * @Date:2024/12/12 10:00 + */ +public interface BrokerRecordService { + PageInfo pageQuery(BrokerRecordReqQuery brokerRecordReqQuery); + + List list(BrokerRecordReqQuery brokerRecordReqQuery); + + BrokerRecordRespVO getById(Long id); + + int add(BrokerRecord brokerRecord); + + int delete(Long id); + + int update(BrokerRecord brokerRecord); + + List getDailySummaryByBrokerId(Long brokerId, Date startTime, Date endTime); +} \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/service/pc/BrokerService.java b/src/main/java/com/ycwl/basic/service/pc/BrokerService.java index b4d0725..07ac69f 100644 --- a/src/main/java/com/ycwl/basic/service/pc/BrokerService.java +++ b/src/main/java/com/ycwl/basic/service/pc/BrokerService.java @@ -12,10 +12,11 @@ import java.util.List; * @Date:2024/12/2 15:54 */ public interface BrokerService { - PageInfo pageQuery(BrokerReqQuery brokerReqQuery); - List list(BrokerReqQuery brokerReqQuery); - BrokerEntity getById(Long id); + PageInfo pageQuery(BrokerReqQuery brokerReqQuery); + List list(BrokerReqQuery brokerReqQuery); + BrokerRespVO getById(Long id); int addOrUpdate(BrokerEntity broker); int delete(Long id); int updateStatus(Long id); + int updateBrokerEnable(Long id); } diff --git a/src/main/resources/mapper/BrokerMapper.xml b/src/main/resources/mapper/BrokerMapper.xml index 3df4c6d..bbc0b92 100644 --- a/src/main/resources/mapper/BrokerMapper.xml +++ b/src/main/resources/mapper/BrokerMapper.xml @@ -2,10 +2,10 @@ - insert into broker(id, `name`, promo_code) values (#{id}, #{name}, #{promoCode}) + insert into broker(scenic_id, `name`, phone, status, broker_enable, broker_rate, create_at, update_at) values (#{scenicId}, #{name}, #{phone}, 0, #{brokerEnable}, #{brokerRate}, now(), now()) - update broker set `name` = #{name}, promo_code = #{promoCode} where id = #{id} + update broker set `name` = #{name}, phone = #{phone}, broker_enable = #{brokerEnable}, broker_rate = #{brokerRate}, update_at = now() where id = #{id} update broker @@ -15,45 +15,56 @@ 0 WHEN 0 THEN 1 - ELSE null + ELSE 1 + END) + where id = #{id} + + + update broker + set broker_enable = (CASE + broker_enable + WHEN 1 THEN + 0 + WHEN 0 THEN + 1 + ELSE 1 END) where id = #{id} delete from broker where id = #{id} - + select b.id, scenic_id, s.name as scenicName, b.`name`, b.phone, b.broker_enable, b.broker_rate, b.status, b.create_at, b.update_at, + (select count(1) from statistics s where s.type = 20 and s.morph_id = b.id) as broker_scan_count, + (select count(1) from broker_record r where r.broker_id = b.id) as broker_order_count, + (select sum(order_price) from broker_record r where r.broker_id = b.id) as broker_order_amount, create_at, update_at - from broker + from broker b left join scenic s on b.scenic_id = s.id + + and b.scenic_id = #{scenicId} + - and `name` like concat('%', #{name}, '%') + and b.`name` like concat('%', #{name}, '%') - and `phone` like concat('%', #{phone}, '%') - - - and promo_code like concat('%', #{promoCode}, '%') + and b.`phone` like concat('%', #{phone}, '%') - and `status` = #{status} + and b.`status` = #{status} - and d.create_at >= #{startTime} + and b.create_at >= #{startTime} - and d.create_at <= #{endTime} + and b.create_at <= #{endTime} - + select b.id, scenic_id, s.name as scenicName, b.`name`, b.phone, b.broker_enable, b.broker_rate, b.status, b.create_at, b.update_at + from broker b left join scenic s on b.scenic_id = s.id + where b.id = #{id} \ No newline at end of file diff --git a/src/main/resources/mapper/BrokerRecordMapper.xml b/src/main/resources/mapper/BrokerRecordMapper.xml new file mode 100644 index 0000000..4d4d972 --- /dev/null +++ b/src/main/resources/mapper/BrokerRecordMapper.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + insert into broker_record(broker_id, order_id, order_price, broker_rate, broker_price, reason, create_time) + values (#{brokerId}, #{orderId}, #{orderPrice}, #{brokerRate}, #{brokerPrice}, #{reason}, now()) + + + + delete from broker_record + where id = #{id} + + + delete from broker_record + where order_id = #{orderId} + + + + update broker_record + + + broker_id = #{brokerId}, + + + order_id = #{orderId}, + + + order_price = #{orderPrice}, + + + broker_rate = #{brokerRate}, + + + broker_price = #{brokerPrice}, + + + reason = #{reason}, + + + where id = #{id} + + \ No newline at end of file diff --git a/src/main/resources/mapper/StatisticsMapper.xml b/src/main/resources/mapper/StatisticsMapper.xml index 9bd46f8..d4cb6d7 100644 --- a/src/main/resources/mapper/StatisticsMapper.xml +++ b/src/main/resources/mapper/StatisticsMapper.xml @@ -247,4 +247,20 @@ and create_at <= #{endTime} + \ No newline at end of file