diff --git a/src/main/java/com/gxwebsoft/common/core/enums/ShopDealerCapitalUpdateEnum.java b/src/main/java/com/gxwebsoft/common/core/enums/ShopDealerCapitalUpdateEnum.java index 94c2734..7729632 100644 --- a/src/main/java/com/gxwebsoft/common/core/enums/ShopDealerCapitalUpdateEnum.java +++ b/src/main/java/com/gxwebsoft/common/core/enums/ShopDealerCapitalUpdateEnum.java @@ -22,6 +22,7 @@ public enum ShopDealerCapitalUpdateEnum { FREEZE_MONEY_THAW(50, "佣金解冻", true), DELIVERY_REWARD(60, "配送奖励", true), DELIVERY_INCOME(61, "配送提成", true), + DELIVERY_FLOOR_FEE(62, "配送步梯费", true), ORDER_REFUND(70, "佣金退回(退单)", false), ; diff --git a/src/main/java/com/gxwebsoft/glt/controller/GltTicketOrderController.java b/src/main/java/com/gxwebsoft/glt/controller/GltTicketOrderController.java index e2b1e54..0f7c031 100644 --- a/src/main/java/com/gxwebsoft/glt/controller/GltTicketOrderController.java +++ b/src/main/java/com/gxwebsoft/glt/controller/GltTicketOrderController.java @@ -10,6 +10,7 @@ import com.gxwebsoft.common.core.web.PageResult; import com.gxwebsoft.common.system.entity.User; import com.gxwebsoft.common.system.mapper.UserMapper; import com.gxwebsoft.glt.dto.GltTransferOrderDto; +import com.gxwebsoft.glt.dto.NoticeRiderNewOrderDto; import com.gxwebsoft.glt.entity.GltTicketOrder; import com.gxwebsoft.glt.param.GltTicketOrderDeliveredParam; import com.gxwebsoft.glt.param.GltTicketOrderParam; @@ -178,14 +179,6 @@ public class GltTicketOrderController extends BaseController { } gltTicketOrderService.createWithWriteOff(gltTicketOrder, loginUser.getUserId(), loginUser.getTenantId()); - - // 订单创建成功后,异步通知所有在线配送员有新订单 - try { - notifyRidersOfNewOrder(gltTicketOrder, loginUser.getTenantId()); - } catch (Exception e) { - log.warn("通知配送员失败(不影响下单): {}", e.getMessage()); - } - return success("下单成功"); } @@ -244,8 +237,14 @@ public class GltTicketOrderController extends BaseController { } } } + } - log.info("已向 {} 位配送员发送新订单通知", riders.size()); + @PreAuthorize("isAuthenticated()") + @Operation(summary = "配送员调度单通知") + @PostMapping("/sendRiderNewOrderNotice") + public ApiResult sendRiderNewOrderNotice(@RequestBody NoticeRiderNewOrderDto noticeRiderNewOrderDto) { + gltSubscribeMessageService.sendRiderNewOrderNotice(noticeRiderNewOrderDto); + return success("发送消息成功!"); } @PreAuthorize("isAuthenticated()") diff --git a/src/main/java/com/gxwebsoft/glt/dto/NoticeRiderNewOrderDto.java b/src/main/java/com/gxwebsoft/glt/dto/NoticeRiderNewOrderDto.java new file mode 100644 index 0000000..49d5c31 --- /dev/null +++ b/src/main/java/com/gxwebsoft/glt/dto/NoticeRiderNewOrderDto.java @@ -0,0 +1,35 @@ +package com.gxwebsoft.glt.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 配送员新订单配送通知 + * + */ +@Data +@Schema(name = "ShopOrderMyVerifyDto", description = "配送员新订单配送通知") +public class NoticeRiderNewOrderDto { + + @Schema(description = "订单号") + private String orderNo; + + @Schema(description = "商品名称") + private String goodsName; + + @Schema(description = "配送数量") + private Integer productCount; + + @Schema(description = "期望送达时间") + private LocalDateTime createTime; + + @Schema(description = "租户ID") + private Integer tenantId; + + @Schema(description = "openID") + private String openId; + +} + diff --git a/src/main/java/com/gxwebsoft/glt/service/GltSubscribeMessageService.java b/src/main/java/com/gxwebsoft/glt/service/GltSubscribeMessageService.java index 1183754..7ff3ec5 100644 --- a/src/main/java/com/gxwebsoft/glt/service/GltSubscribeMessageService.java +++ b/src/main/java/com/gxwebsoft/glt/service/GltSubscribeMessageService.java @@ -1,5 +1,6 @@ package com.gxwebsoft.glt.service; +import com.gxwebsoft.glt.dto.NoticeRiderNewOrderDto; import com.gxwebsoft.glt.entity.GltTicketOrder; /** @@ -25,4 +26,10 @@ public interface GltSubscribeMessageService { * @return 是否发送成功 */ boolean sendOrderStatusNotice(GltTicketOrder order, String riderOpenId, String statusText, Integer tenantId); + + /** + * 推送配送师傅接单提醒 + * @param noticeRiderNewOrderDto + */ + void sendRiderNewOrderNotice(NoticeRiderNewOrderDto noticeRiderNewOrderDto); } diff --git a/src/main/java/com/gxwebsoft/glt/service/impl/GltSubscribeMessageServiceImpl.java b/src/main/java/com/gxwebsoft/glt/service/impl/GltSubscribeMessageServiceImpl.java index 563cf72..5fce7ff 100644 --- a/src/main/java/com/gxwebsoft/glt/service/impl/GltSubscribeMessageServiceImpl.java +++ b/src/main/java/com/gxwebsoft/glt/service/impl/GltSubscribeMessageServiceImpl.java @@ -1,14 +1,11 @@ package com.gxwebsoft.glt.service.impl; -import cn.binarywang.wx.miniapp.api.WxMaService; -import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl; -import cn.binarywang.wx.miniapp.config.WxMaConfig; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.gxwebsoft.common.core.exception.BusinessException; -import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.glt.dto.NoticeRiderNewOrderDto; import com.gxwebsoft.glt.entity.GltTicketOrder; import com.gxwebsoft.glt.service.GltSubscribeMessageService; import lombok.extern.slf4j.Slf4j; @@ -19,7 +16,8 @@ import javax.annotation.Resource; import java.util.HashMap; import java.util.Map; -import static com.gxwebsoft.common.core.constants.RedisConstants.*; +import static com.gxwebsoft.common.core.constants.RedisConstants.ACCESS_TOKEN_KEY; +import static com.gxwebsoft.common.core.constants.RedisConstants.MP_WX_KEY; /** * 微信订阅消息服务实现 @@ -43,7 +41,34 @@ public class GltSubscribeMessageServiceImpl implements GltSubscribeMessageServic * 模板名称:订单配送通知 * 关键词:订单编号、订单内容、配送地址、订单金额 */ - private static final String ORDER_DELIVERY_ID = "vSMSqGVy3aG1RuzQUZlk2y5sWiTFY_hewF5-R-uYwMk"; + private static final String ORDER_DELIVERY_ID = "vSMSqGVy3aG1RuzQUZlk282p5hCvuMBcHvix1AFhN90"; + + + public void sendRiderNewOrderNotice(NoticeRiderNewOrderDto entity){ + //1.获取微信accessToken + String accessToken = getAccessToken(entity.getTenantId()); + if(accessToken == null){ + log.error("配送发单消息发生失败:获取accessToken失败!"); + return; + } + + //2.品名字段最大能发送20个长度字符,大于15的长度需做处理 + String goodsName = entity.getGoodsName(); + int keepLength = 15; + if (goodsName.length() > keepLength) { + entity.setGoodsName(goodsName.substring(0, keepLength) + "..."); + } + + //3.组装入参 + Map data = new HashMap<>(); + data.put("character_string1", Map.of("value", String.valueOf(entity.getOrderNo()))); + data.put("thing22", Map.of("value", String.valueOf(entity.getGoodsName()))); + data.put("number20", Map.of("value", String.valueOf(entity.getProductCount()))); + data.put("time24", Map.of("value", String.valueOf(entity.getCreateTime()))); + + //推送订阅消息 + sendSubscribeMessage(accessToken, entity.getOpenId(), data); + } /** * 发送新订单通知给配送员 @@ -65,7 +90,7 @@ public class GltSubscribeMessageServiceImpl implements GltSubscribeMessageServic // 构建消息内容 Map data = new HashMap<>(); data.put("phrase1", Map.of("value", "待配送")); // 订单状态 - data.put("character_string2", Map.of("value", String.valueOf(order.getId()))); // 订单编号 + data.put("character_string2", Map.of("value", String.valueOf(order.getOrderNo()))); // 订单编号 data.put("thing3", Map.of("value", truncateStr(order.getAddress(), 20))); // 配送地址 data.put("number4", Map.of("value", String.valueOf(order.getTotalNum()))); // 商品数量 data.put("time5", Map.of("value", formatTime(order.getSendTime()))); // 期望送达时间 @@ -208,14 +233,14 @@ public class GltSubscribeMessageServiceImpl implements GltSubscribeMessageServic .body(); JSONObject result = JSON.parseObject(response); - int errcode = result.getIntValue("errcode"); + int errCode = result.getIntValue("errcode"); - if (errcode == 0) { + if (errCode == 0) { log.info("订阅消息发送成功 - openId={}", openId); return true; } else { log.warn("订阅消息发送失败 - openId={}, errcode={}, errmsg={}", - openId, errcode, result.getString("errmsg")); + openId, errCode, result.getString("errmsg")); return false; } } diff --git a/src/main/java/com/gxwebsoft/glt/service/impl/GltTicketOrderServiceImpl.java b/src/main/java/com/gxwebsoft/glt/service/impl/GltTicketOrderServiceImpl.java index 99ff31f..5fb733e 100644 --- a/src/main/java/com/gxwebsoft/glt/service/impl/GltTicketOrderServiceImpl.java +++ b/src/main/java/com/gxwebsoft/glt/service/impl/GltTicketOrderServiceImpl.java @@ -16,12 +16,14 @@ import com.gxwebsoft.common.system.entity.User; import com.gxwebsoft.common.system.mapper.UserMapper; import com.gxwebsoft.common.system.redis.OrderNoUtils; import com.gxwebsoft.glt.dto.GltTransferOrderDto; +import com.gxwebsoft.glt.dto.NoticeRiderNewOrderDto; import com.gxwebsoft.glt.entity.GltTicketOrder; import com.gxwebsoft.glt.entity.GltUserTicket; import com.gxwebsoft.glt.entity.GltUserTicketLog; import com.gxwebsoft.glt.mapper.GltTicketOrderMapper; import com.gxwebsoft.glt.mapper.GltUserTicketMapper; import com.gxwebsoft.glt.param.GltTicketOrderParam; +import com.gxwebsoft.glt.service.GltSubscribeMessageService; import com.gxwebsoft.glt.service.GltTicketOrderService; import com.gxwebsoft.glt.service.GltUserTicketLogService; import com.gxwebsoft.glt.service.GltUserTicketService; @@ -107,6 +109,9 @@ public class GltTicketOrderServiceImpl extends ServiceImpl 0) { //配送提成(每桶0.1) @@ -872,7 +924,11 @@ public class GltTicketOrderServiceImpl extends ServiceImpl 0){ + ShopDealerUserReduceDto reduceDto = new ShopDealerUserReduceDto(); + reduceDto.setTypeEnum(ShopDealerTypeEnum.WITHDRAW_ACCOUNT); + reduceDto.setUserId(ticketOrder.getRiderId()); + reduceDto.setOrderUserId(ticketOrder.getUserId()); + reduceDto.setOrderNo(order.getOrderNo()); + reduceDto.setPrice(order.getDeliveryFee()); + reduceDto.setUpdateEnum(ShopDealerCapitalUpdateEnum.DELIVERY_FLOOR_FEE); + shopDealerUserService.reduceBalance(reduceDto); + } + //查询未完成订单,完成资金解冻 if(order != null && order.getOrderStatus() == 0){ ShopDealerUserReduceDto reduceDto = new ShopDealerUserReduceDto(); diff --git a/src/main/java/com/gxwebsoft/glt/task/GltTicketOrderAutoDispatch10584Task.java b/src/main/java/com/gxwebsoft/glt/task/GltTicketOrderAutoDispatch10584Task.java index 3a1ef96..c619100 100644 --- a/src/main/java/com/gxwebsoft/glt/task/GltTicketOrderAutoDispatch10584Task.java +++ b/src/main/java/com/gxwebsoft/glt/task/GltTicketOrderAutoDispatch10584Task.java @@ -35,7 +35,7 @@ public class GltTicketOrderAutoDispatch10584Task { @Value("${glt.ticket.dispatch10584.batchSize:50}") private int batchSize; - @Scheduled(cron = "${glt.ticket.dispatch10584.cron:0/20 * * * * ?}") +// @Scheduled(cron = "${glt.ticket.dispatch10584.cron:0/20 * * * * ?}") @IgnoreTenant("定时任务无登录态,需忽略租户隔离;内部使用 tenantId=10584 精确过滤") public void run() { if (!running.compareAndSet(false, true)) { diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopDealerCapitalController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopDealerCapitalController.java index c23cfd9..f61a483 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/ShopDealerCapitalController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopDealerCapitalController.java @@ -6,9 +6,11 @@ import com.gxwebsoft.common.core.web.BaseController; import com.gxwebsoft.common.core.web.BatchParam; import com.gxwebsoft.common.core.web.PageResult; import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.dto.ShopDealerCapitalWaterDto; import com.gxwebsoft.shop.entity.ShopDealerCapital; import com.gxwebsoft.shop.param.ShopDealerCapitalParam; import com.gxwebsoft.shop.service.ShopDealerCapitalService; +import com.gxwebsoft.shop.vo.ShopDealerCapitalWaterVO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springdoc.api.annotations.ParameterObject; @@ -39,6 +41,14 @@ public class ShopDealerCapitalController extends BaseController { return success(shopDealerCapitalService.pageRel(param)); } + @PreAuthorize("hasAuthority('shop:shopDealerCapital:list')") + @Operation(summary = "分页查询分销商个人流水") + @GetMapping("/myCapitalWater") + public ApiResult> myCapitalWater(ShopDealerCapitalWaterDto waterDto) { + // 使用关联查询 + return success(shopDealerCapitalService.myCapitalWater(waterDto)); + } + @PreAuthorize("hasAuthority('shop:shopDealerCapital:list')") @Operation(summary = "查询全部分销商资金明细表") @GetMapping() diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopVerifyUserController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopVerifyUserController.java index b157adf..f915df5 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/ShopVerifyUserController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopVerifyUserController.java @@ -51,6 +51,13 @@ public class ShopVerifyUserController extends BaseController { return success(shopVerifyUserService.getByIdRel(id)); } +// @PreAuthorize("hasAuthority('shop:shopVerifyUser:list')") + @Operation(summary = "根据用户ID查询订单核销人管理") + @GetMapping("/getByUserId") + public ApiResult getByUserId(@RequestParam("userId") Integer userId) { + return success(shopVerifyUserService.getInfo(userId)); + } + // @PreAuthorize("hasAuthority('shop:shopVerifyUser:save')") @OperationLog @Operation(summary = "添加订单核销人管理") diff --git a/src/main/java/com/gxwebsoft/shop/dto/ShopDealerCapitalWaterDto.java b/src/main/java/com/gxwebsoft/shop/dto/ShopDealerCapitalWaterDto.java new file mode 100644 index 0000000..88a8c32 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/dto/ShopDealerCapitalWaterDto.java @@ -0,0 +1,28 @@ +package com.gxwebsoft.shop.dto; + +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +/** + * 查询个人流水 + * + */ +@Data +@Schema(name = "ShopDealerCapitalWaterDto", description = "查询个人流水") +public class ShopDealerCapitalWaterDto extends BaseParam { + + @Schema(description = "用户ID") + @NotEmpty(message = "用户ID不能为空!") + private Integer userId; + + @Schema(description = "起始时间", example = "2026-05-01") + private String dateStart; + + @Schema(description = "结束时间", example = "2026-05-31") + private String dateEnd; + +} + diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopActiveImage.java b/src/main/java/com/gxwebsoft/shop/entity/ShopActiveImage.java index 4a36503..a2d3de0 100644 --- a/src/main/java/com/gxwebsoft/shop/entity/ShopActiveImage.java +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopActiveImage.java @@ -51,6 +51,13 @@ public class ShopActiveImage implements Serializable { @Schema(description = "排序") private Integer sortNumber; + @Schema(description = "跳转商品ID") + private Integer goodsId; + + @Schema(description = "跳转商品名称") + @TableField(exist = false) + private String goodsName; + @Schema(description = "租户ID") @NotNull(message = "租户ID不能为空!") private Integer tenantId; diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopDealerCapital.java b/src/main/java/com/gxwebsoft/shop/entity/ShopDealerCapital.java index 3832a48..1d44e4d 100644 --- a/src/main/java/com/gxwebsoft/shop/entity/ShopDealerCapital.java +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopDealerCapital.java @@ -49,7 +49,7 @@ public class ShopDealerCapital implements Serializable { @TableField(exist = false) private Integer orderStatus; - @Schema(description = "资金流动类型 (10分销收入 11团队管理津贴收入 12分红收入 13现场推广收入 20提现支出 30转账支出 40转账收入 50佣金解冻 60配送奖励 70佣金退回【退单】)") + @Schema(description = "资金流动类型 (10分销收入 11团队管理津贴收入 12分红收入 13现场推广收入 14现场推广分佣 20提现支出 30转账支出 40转账收入 50佣金解冻 60配送奖励 61配送提成 62配送步梯费 70佣金退回【退单】)") private Integer flowType; @Schema(description = "变更金额") diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopGoods.java b/src/main/java/com/gxwebsoft/shop/entity/ShopGoods.java index 7c4c11d..0b60932 100644 --- a/src/main/java/com/gxwebsoft/shop/entity/ShopGoods.java +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopGoods.java @@ -194,6 +194,9 @@ public class ShopGoods implements Serializable { @Schema(description = "水票ID") private Integer waterTickerId; + @Schema(description = "0-按每桶楼层计算 1-固定金额") + private Integer deliveryFeeType; + @Schema(description = "配送楼层步梯费(元)") private BigDecimal deliveryFee; diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopVerifyUser.java b/src/main/java/com/gxwebsoft/shop/entity/ShopVerifyUser.java index 2440f00..a16f037 100644 --- a/src/main/java/com/gxwebsoft/shop/entity/ShopVerifyUser.java +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopVerifyUser.java @@ -34,10 +34,13 @@ public class ShopVerifyUser implements Serializable { private String userName; @Schema(description = "核销权限是否开启 0-未开启 1-已开启") - private Boolean verifyFlag; + private Integer verifyFlag; @Schema(description = "是否开启 0-未开始 1-已开启") - private Boolean status; + private Integer status; + + @Schema(description = "排序号") + private Integer sortNumber; @Schema(description = "创建人") private Integer creator; diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerCapitalMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerCapitalMapper.java index d996c07..fd02d59 100644 --- a/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerCapitalMapper.java +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerCapitalMapper.java @@ -2,8 +2,11 @@ package com.gxwebsoft.shop.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gxwebsoft.shop.dto.ShopDealerCapitalWaterDto; import com.gxwebsoft.shop.entity.ShopDealerCapital; import com.gxwebsoft.shop.param.ShopDealerCapitalParam; +import com.gxwebsoft.shop.vo.ShopDealerCapitalWaterVO; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -34,4 +37,12 @@ public interface ShopDealerCapitalMapper extends BaseMapper { */ List selectListRel(@Param("param") ShopDealerCapitalParam param); + /** + * 查询个人资金流水 + * @param page + * @param entity + * @return + */ + IPage getPageInfo(@Param("page") Page page, @Param("entity") ShopDealerCapitalWaterDto entity); + } diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerCapitalMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerCapitalMapper.xml index f94b40f..688e3b9 100644 --- a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerCapitalMapper.xml +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerCapitalMapper.xml @@ -55,5 +55,23 @@ + diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopGoodsParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsParam.java index fd38ccc..69beb5f 100644 --- a/src/main/java/com/gxwebsoft/shop/param/ShopGoodsParam.java +++ b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsParam.java @@ -169,8 +169,8 @@ public class ShopGoodsParam extends BaseParam { @Schema(description = "水票ID") private Integer waterTickerId; - @Schema(description = "商品大类 1-水 2-茶叶 3-酒 4-香水") - private Integer categoryType; + @Schema(description = "0-按每桶楼层计算 1-固定金额") + private Integer deliveryFeeType; @Schema(description = "租户id") private Integer tenantId; diff --git a/src/main/java/com/gxwebsoft/shop/service/OrderBusinessService.java b/src/main/java/com/gxwebsoft/shop/service/OrderBusinessService.java index 82bcc03..9c9548d 100644 --- a/src/main/java/com/gxwebsoft/shop/service/OrderBusinessService.java +++ b/src/main/java/com/gxwebsoft/shop/service/OrderBusinessService.java @@ -352,7 +352,12 @@ public class OrderBusinessService { //自配送才计算步梯费用业务【选择步梯配送方式、配送楼层大于1楼、商品已设置配送费】 if(Arrays.asList(1, 3).contains(shopOrder.getOrderType()) && shopOrder.getDeliveryMethod() == 1 && shopOrder.getDeliveryFloor() > 1 && shopGoods.getDeliveryFee().compareTo(BigDecimal.ZERO) > 0){ - BigDecimal deliveryFee = BigDecimal.valueOf(shopOrder.getDeliveryFloor() - 1).multiply(shopGoods.getDeliveryFee()).multiply(BigDecimal.valueOf(goodsItem.getQuantity())); + BigDecimal deliveryFee = BigDecimal.ZERO; + if(shopGoods.getDeliveryFeeType() == 0 ){ + deliveryFee = BigDecimal.valueOf(shopOrder.getDeliveryFloor() - 1).multiply(shopGoods.getDeliveryFee()).multiply(BigDecimal.valueOf(goodsItem.getQuantity())); + }else if(shopOrder.getDeliveryFloor() > 1){ + deliveryFee = shopGoods.getDeliveryFee(); + } if(deliveryFee.compareTo(BigDecimal.ZERO) > 0){ shopOrder.setDeliveryFee(deliveryFee); shopOrder.setTotalPrice(shopOrder.getTotalPrice().add(deliveryFee)); diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopDealerCapitalService.java b/src/main/java/com/gxwebsoft/shop/service/ShopDealerCapitalService.java index 67fb29c..371fd23 100644 --- a/src/main/java/com/gxwebsoft/shop/service/ShopDealerCapitalService.java +++ b/src/main/java/com/gxwebsoft/shop/service/ShopDealerCapitalService.java @@ -2,8 +2,10 @@ package com.gxwebsoft.shop.service; import com.baomidou.mybatisplus.extension.service.IService; import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.dto.ShopDealerCapitalWaterDto; import com.gxwebsoft.shop.entity.ShopDealerCapital; import com.gxwebsoft.shop.param.ShopDealerCapitalParam; +import com.gxwebsoft.shop.vo.ShopDealerCapitalWaterVO; import java.util.List; @@ -23,6 +25,13 @@ public interface ShopDealerCapitalService extends IService { */ PageResult pageRel(ShopDealerCapitalParam param); + /** + * 分页查询分销商个人流水 + * @param waterDto + * @return + */ + PageResult myCapitalWater(ShopDealerCapitalWaterDto waterDto); + /** * 关联查询全部 * diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopVerifyUserService.java b/src/main/java/com/gxwebsoft/shop/service/ShopVerifyUserService.java index 433cbd6..225676a 100644 --- a/src/main/java/com/gxwebsoft/shop/service/ShopVerifyUserService.java +++ b/src/main/java/com/gxwebsoft/shop/service/ShopVerifyUserService.java @@ -39,6 +39,13 @@ public interface ShopVerifyUserService extends IService { */ ShopVerifyUser getByIdRel(Integer id); + /** + * 通过用户ID查询 + * @param userId + * @return + */ + ShopVerifyUser getInfo(Integer userId); + /** * 修改订单核销人开启状态 * @param id 主键ID diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopActiveImageServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopActiveImageServiceImpl.java index af687e4..ba147b8 100644 --- a/src/main/java/com/gxwebsoft/shop/service/impl/ShopActiveImageServiceImpl.java +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopActiveImageServiceImpl.java @@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gxwebsoft.common.core.web.PageParam; import com.gxwebsoft.common.core.web.PageResult; import com.gxwebsoft.shop.entity.ShopActiveImage; +import com.gxwebsoft.shop.entity.ShopGoods; import com.gxwebsoft.shop.mapper.ShopActiveImageMapper; +import com.gxwebsoft.shop.mapper.ShopGoodsMapper; import com.gxwebsoft.shop.param.ShopActiveImageParam; import com.gxwebsoft.shop.service.ShopActiveImageService; import lombok.AllArgsConstructor; @@ -14,6 +16,7 @@ import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; /** * 推广码底图Service实现 @@ -25,16 +28,30 @@ import java.util.List; @AllArgsConstructor public class ShopActiveImageServiceImpl extends ServiceImpl implements ShopActiveImageService { + private ShopGoodsMapper shopGoodsMapper; + @Override public PageResult pageRel(ShopActiveImageParam param) { PageParam page = new PageParam<>(param); page.setDefaultOrder("sort_number asc, create_time desc"); List list = baseMapper.selectPageRel(page, param); if(CollectionUtils.isNotEmpty(list)){ + List goodsIdList = list.stream().filter(shopActiveImage -> shopActiveImage.getGoodsId() != null).map(ShopActiveImage::getGoodsId) + .distinct().collect(Collectors.toList()); + List shopGoodsList = shopGoodsMapper.selectBatchIds(goodsIdList); + list.forEach(shopActiveImage -> { if(!StringUtils.isEmpty(shopActiveImage.getImgUrl())){ shopActiveImage.setImgUrlList(Arrays.asList(shopActiveImage.getImgUrl().split(","))); } + + //回显商品名称 + if(shopActiveImage.getGoodsId() != null){ + ShopGoods shopGoods = shopGoodsList.stream().filter(goods -> shopActiveImage.getGoodsId().equals(goods.getGoodsId())).findFirst().orElse(null); + if(shopGoods != null){ + shopActiveImage.setGoodsName(shopGoods.getName()); + } + } }); } return new PageResult<>(list, page.getTotal()); diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerCapitalServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerCapitalServiceImpl.java index 897fbed..f8365db 100644 --- a/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerCapitalServiceImpl.java +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerCapitalServiceImpl.java @@ -1,14 +1,24 @@ package com.gxwebsoft.shop.service.impl; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.exception.enums.GlobalErrorCodeConstants; +import com.gxwebsoft.common.core.utils.LoginUserUtil; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.dto.ShopDealerCapitalWaterDto; import com.gxwebsoft.shop.mapper.ShopDealerCapitalMapper; import com.gxwebsoft.shop.service.ShopDealerCapitalService; import com.gxwebsoft.shop.entity.ShopDealerCapital; import com.gxwebsoft.shop.param.ShopDealerCapitalParam; import com.gxwebsoft.common.core.web.PageParam; import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.vo.ShopDealerCapitalWaterVO; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -28,6 +38,27 @@ public class ShopDealerCapitalServiceImpl extends ServiceImpl(list, page.getTotal()); } + @Override + public PageResult myCapitalWater(ShopDealerCapitalWaterDto entity) { + PageResult pageResult = new PageResult<>(); + User loginUser = LoginUserUtil.getLoginUser(); + if(loginUser == null){ + throw new BusinessException(GlobalErrorCodeConstants.UNAUTHORIZED.getMsg()); + } + entity.setUserId(loginUser.getUserId()); + + IPage pageInfo = baseMapper.getPageInfo(new Page<>(entity.getPage(), entity.getLimit()), entity); + if(CollectionUtils.isNotEmpty(pageInfo.getRecords())){ + List records = pageInfo.getRecords(); + pageResult.setList(records); + pageResult.setCount(pageInfo.getTotal()); + }else { + pageResult.setCount(0l); + pageResult.setList(new ArrayList<>()); + } + return pageResult; + } + @Override public List listRel(ShopDealerCapitalParam param) { List list = baseMapper.selectListRel(param); diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerUserServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerUserServiceImpl.java index 6ccdcc0..af12963 100644 --- a/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerUserServiceImpl.java +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerUserServiceImpl.java @@ -120,6 +120,7 @@ public class ShopDealerUserServiceImpl extends ServiceImpl listRel(ShopOrderGoodsParam param) { List list = baseMapper.selectListRel(param); - //根据订单ID查询活动并回显对应名称、订单核销码 Integer orderId = param.getOrderId(); if(orderId != null){ @@ -55,6 +54,7 @@ public class ShopOrderGoodsServiceImpl extends ServiceImpl().eq(ShopVerifyUser::getUserId, loginUser.getUserId())); - if(!(verifyUser != null && verifyUser.getVerifyFlag() && verifyUser.getStatus())){ - throw new RuntimeException("暂无核销权限!"); + if(!(verifyUser != null && verifyUser.getVerifyFlag() == 1 && verifyUser.getStatus() == 1)){ + throw new BusinessException("暂无核销权限!"); } } //3.查询订单信息 ShopOrder shopOrder = baseMapper.selectOne(new LambdaQueryWrapper().eq(ShopOrder::getVerifyCode, verifyDto.getVerifyCode())); if(shopOrder == null){ - throw new RuntimeException(GlobalErrorCodeConstants.NOT_FOUND.getMsg()); + throw new BusinessException(GlobalErrorCodeConstants.NOT_FOUND.getMsg()); } //4.判断当前订单状态是否允许核销 if(Arrays.asList(2,3,4,6,7).contains(shopOrder.getOrderStatus())){ - throw new RuntimeException("订单当前状态不可核销!"); + throw new BusinessException("订单当前状态不可核销!"); } //5.判断订单是否已支付 if(!shopOrder.getPayStatus()){ - throw new RuntimeException("订单未支付,不可核销!"); + throw new BusinessException("订单未支付,不可核销!"); } //6.判断是否已核销 if(shopOrder.getVerifyStatus() != null && shopOrder.getVerifyStatus() == 1){ - throw new RuntimeException("此订单已核销,无需重复核销!"); + throw new BusinessException("此订单已核销,无需重复核销!"); } shopOrder.setVerifyStatus(1); @@ -624,7 +625,7 @@ public class ShopOrderServiceImpl extends ServiceImpl 0; }catch (Exception e){ - throw new RuntimeException("核销失败:" + e.getMessage()); + throw new BusinessException("核销失败:" + e.getMessage()); } } diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopVerifyUserServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopVerifyUserServiceImpl.java index 9c6f41b..f32f481 100644 --- a/src/main/java/com/gxwebsoft/shop/service/impl/ShopVerifyUserServiceImpl.java +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopVerifyUserServiceImpl.java @@ -36,7 +36,7 @@ public class ShopVerifyUserServiceImpl extends ServiceImpl pageRel(ShopVerifyUserParam param) { PageParam page = new PageParam<>(param); - page.setDefaultOrder("create_time desc"); + page.setDefaultOrder("sort_number asc, create_time desc"); List list = baseMapper.selectPageRel(page, param); if(CollectionUtils.isNotEmpty(list)){ List userIdList = list.stream().map(ShopVerifyUser::getUserId).distinct().collect(Collectors.toList()); @@ -90,15 +90,24 @@ public class ShopVerifyUserServiceImpl extends ServiceImpl list = lambdaQuery().eq(ShopVerifyUser::getUserId, userId).list(); + if(CollectionUtils.isNotEmpty(list)){ + return list.get(0); + } + return null; + } + @Override public Boolean updateStatus(Integer id) { ShopVerifyUser verifyUser = baseMapper.selectById(id); if(verifyUser != null){ - Boolean status = verifyUser.getStatus(); - if(status){ - verifyUser.setStatus(false); + Integer status = verifyUser.getStatus(); + if(status == 0){ + verifyUser.setStatus(1); }else { - verifyUser.setStatus(true); + verifyUser.setStatus(0); } verifyUser.setUpdateTime(LocalDateTime.now()); User loginUser = LoginUserUtil.getLoginUser(); @@ -114,11 +123,11 @@ public class ShopVerifyUserServiceImpl extends ServiceImpl