瀏覽代碼

修复部分bug;违规、投诉基本完成;等级管理基本完成

Huanyi 3 周之前
父節點
當前提交
14c112875a
共有 30 個文件被更改,包括 379 次插入33 次删除
  1. 2 0
      ruoyi-api/yingpaipay-api-order/src/main/java/org/dromara/order/api/RemoteSubOrderService.java
  2. 1 1
      ruoyi-auth/src/main/java/org/dromara/auth/service/impl/PasswordAuthStrategy.java
  3. 3 2
      ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/OrderCodeTranslationImpl.java
  4. 42 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/controller/FlfComplaintController.java
  5. 3 3
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/controller/FlfLevelConfigController.java
  6. 9 2
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/controller/FlfLevelRigthtsController.java
  7. 1 1
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/FlfFulfiller.java
  8. 27 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/FlfLevelConfigRights.java
  9. 14 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/bo/FlfComplaintBo.java
  10. 0 1
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/bo/FlfComplaintLogBo.java
  11. 1 1
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/bo/FlfFulfillerBo.java
  12. 12 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/bo/FlfLevelRightsChangeStatusBo.java
  13. 1 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/bo/FlfViolationLogBo.java
  14. 9 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/vo/FlfComplaintLogVo.java
  15. 1 1
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/vo/FlfFulfillerVo.java
  16. 2 1
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/vo/FlfLevelConfigVo.java
  17. 2 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/enums/FlfPointsBizTypeEnum.java
  18. 7 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/mapper/FlfLevelConfigRightsMapper.java
  19. 12 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/IFlfComplaintLogService.java
  20. 7 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/IFlfLevelConfigService.java
  21. 5 2
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/IFlfLevelRightsService.java
  22. 42 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfComplaintLogServiceImpl.java
  23. 16 4
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfFlfLevelRightsServiceImpl.java
  24. 1 1
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfFulfillerServiceImpl.java
  25. 103 1
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfLevelConfigServiceImpl.java
  26. 37 1
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfViolationLogServiceImpl.java
  27. 6 6
      ruoyi-modules/yingpaipay-fulfiller/src/main/resources/banner.txt
  28. 0 1
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/SysSubOrder.java
  29. 0 4
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/dubbo/RemoteOrderServiceImpl.java
  30. 13 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/dubbo/RemoteSubOrderServiceImpl.java

+ 2 - 0
ruoyi-api/yingpaipay-api-order/src/main/java/org/dromara/order/api/RemoteSubOrderService.java

@@ -24,4 +24,6 @@ public interface RemoteSubOrderService {
     long balanceOnPending(Long userId);
 
     List<RemoteSubOrderVo> selectByCustomerIds(List<Long> customerIds);
+
+    String getCodeById(Long id);
 }

+ 1 - 1
ruoyi-auth/src/main/java/org/dromara/auth/service/impl/PasswordAuthStrategy.java

@@ -100,7 +100,7 @@ public class PasswordAuthStrategy implements IAuthStrategy {
     private LoginUser convertFulfillerToLoginUser(FulfillerLoginUser fulfiller) {
         LoginUser user = new LoginUser();
         user.setTenantId(fulfiller.getTenantId());
-        user.setUserId(fulfiller.getId()); // 使用 flf_fulfiller.id
+        user.setUserId(fulfiller.getId());
         user.setUsername(fulfiller.getPhone());
         user.setNickname(fulfiller.getName());
         user.setPassword(fulfiller.getPassword());

+ 3 - 2
ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/OrderCodeTranslationImpl.java

@@ -7,16 +7,17 @@ import org.dromara.common.translation.annotation.TranslationType;
 import org.dromara.common.translation.constant.TransConstant;
 import org.dromara.common.translation.core.TranslationInterface;
 import org.dromara.order.api.RemoteOrderService;
+import org.dromara.order.api.RemoteSubOrderService;
 
 @AllArgsConstructor
 @TranslationType(type = TransConstant.ORDER_ID_TO_CODE)
 public class OrderCodeTranslationImpl implements TranslationInterface<String> {
 
     @DubboReference
-    private final RemoteOrderService remoteOrderService;
+    private final RemoteSubOrderService remoteSubOrderService;
 
     @Override
     public String translation(Object key, String other) {
-        return remoteOrderService.getCodeById(Convert.toLong(key));
+        return remoteSubOrderService.getCodeById(Convert.toLong(key));
     }
 }

+ 42 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/controller/FlfComplaintController.java

@@ -0,0 +1,42 @@
+package org.dromara.fulfiller.controller;
+
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.fulfiller.domain.bo.FlfComplaintLogBo;
+import org.dromara.fulfiller.domain.vo.FlfComplaintLogVo;
+import org.dromara.fulfiller.service.IFlfComplaintLogService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/complaint")
+public class FlfComplaintController extends BaseController {
+
+    private final IFlfComplaintLogService flfComplaintLogService;
+
+    @RepeatSubmit()
+    @PostMapping("/add")
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody FlfComplaintLogBo bo) {
+        return toAjax(flfComplaintLogService.insertByBo(bo));
+    }
+
+    @GetMapping("/listByOrder")
+    public R<List<FlfComplaintLogVo>> listByOrder(@RequestParam Long orderId) {
+        return R.ok(flfComplaintLogService.listByOrder(orderId));
+    }
+
+    @GetMapping("/pageByFulfiller")
+    public TableDataInfo<FlfComplaintLogVo> pageByFulfiller(@RequestParam Long fulfiller, PageQuery pageQuery) {
+        return flfComplaintLogService.pageByFulfiller(fulfiller, pageQuery);
+    }
+
+}

+ 3 - 3
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/controller/FlfLevelConfigController.java

@@ -30,18 +30,18 @@ public class FlfLevelConfigController extends BaseController {
     @RepeatSubmit()
     @PostMapping("/add")
     public R<Void> add(@Validated(AddGroup.class) @RequestBody FlfLevelConfigBo bo) {
-        return R.ok();
+        return toAjax(flfLevelConfigService.insertByBo(bo));
     }
 
     @RepeatSubmit()
     @PutMapping("/edit")
     public R<Void> edit(@Validated(EditGroup.class) @RequestBody FlfLevelConfigBo bo) {
-        return R.ok();
+        return toAjax(flfLevelConfigService.updateByBo(bo));
     }
 
     @DeleteMapping("/remove")
     public R<Void> remove(@RequestParam Long id) {
-        return R.ok();
+        return toAjax(flfLevelConfigService.deleteById(id));
     }
 
 }

+ 9 - 2
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/controller/FlfLevelRigthtsController.java

@@ -7,6 +7,7 @@ import org.dromara.common.core.validate.EditGroup;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
 import org.dromara.common.web.core.BaseController;
 import org.dromara.fulfiller.domain.bo.FlfLevelRightsBo;
+import org.dromara.fulfiller.domain.bo.FlfLevelRightsChangeStatusBo;
 import org.dromara.fulfiller.domain.vo.FlfLevelRightsVo;
 import org.dromara.fulfiller.service.IFlfLevelRightsService;
 import org.springframework.validation.annotation.Validated;
@@ -31,13 +32,13 @@ public class FlfLevelRigthtsController extends BaseController {
     @RepeatSubmit()
     @PostMapping("/add")
     public R<Void> add(@Validated(AddGroup.class) @RequestBody FlfLevelRightsBo bo) {
-        return toAjax(levelRightsService.insertByBo(bo) != null);
+        return toAjax(levelRightsService.insertByBo(bo));
     }
 
     @RepeatSubmit()
     @PutMapping("/edit")
     public R<Void> edit(@Validated(EditGroup.class) @RequestBody FlfLevelRightsBo bo) {
-        return toAjax(levelRightsService.updateByBo(bo) != null);
+        return toAjax(levelRightsService.updateByBo(bo));
     }
 
     @DeleteMapping("/remove")
@@ -45,4 +46,10 @@ public class FlfLevelRigthtsController extends BaseController {
         return toAjax(levelRightsService.deleteById(id));
     }
 
+    @RepeatSubmit()
+    @PutMapping("/changeStatus")
+    public R<Void> changeStatus(@RequestBody FlfLevelRightsChangeStatusBo bo) {
+        return toAjax(levelRightsService.updateStatus(bo));
+    }
+
 }

+ 1 - 1
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/FlfFulfiller.java

@@ -117,7 +117,7 @@ public class FlfFulfiller extends BaseEntity {
     /**
      * 等级ID
      */
-    private Long levelId;
+    private Integer level;
 
     /**
      * 当前积分

+ 27 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/FlfLevelConfigRights.java

@@ -0,0 +1,27 @@
+package org.dromara.fulfiller.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+/**
+ * 等级配置权益关联对象 flf_level_config_rights
+ *
+ * @author Huanyi
+ * @date 2026-03-18
+ */
+@Data
+@TableName("flf_level_config_rights")
+public class FlfLevelConfigRights {
+
+    /**
+     * 配置ID
+     */
+    @TableId(value = "config_id", type = IdType.INPUT)
+    private Long configId;
+
+    /**
+     * 权益ID
+     */
+    private Long rightsId;
+
+}

+ 14 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/bo/FlfComplaintBo.java

@@ -0,0 +1,14 @@
+package org.dromara.fulfiller.domain.bo;
+
+import lombok.Data;
+
+@Data
+public class FlfComplaintBo {
+
+    private Long orderId;
+
+    private Long fulfiller;
+
+    private String reason;
+
+}

+ 0 - 1
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/bo/FlfComplaintLogBo.java

@@ -43,5 +43,4 @@ public class FlfComplaintLogBo extends BaseEntity {
      */
     private String reason;
 
-
 }

+ 1 - 1
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/bo/FlfFulfillerBo.java

@@ -100,7 +100,7 @@ public class FlfFulfillerBo extends BaseEntity {
     /**
      * 等级ID
      */
-    private Long levelId;
+    private Integer level;
 
     /**
      * 状态

+ 12 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/bo/FlfLevelRightsChangeStatusBo.java

@@ -0,0 +1,12 @@
+package org.dromara.fulfiller.domain.bo;
+
+import lombok.Data;
+
+@Data
+public class FlfLevelRightsChangeStatusBo {
+
+    private Long id;
+
+    private Boolean status;
+
+}

+ 1 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/bo/FlfViolationLogBo.java

@@ -51,5 +51,6 @@ public class FlfViolationLogBo extends BaseEntity {
      */
     private String reason;
 
+    private Integer points;
 
 }

+ 9 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/vo/FlfComplaintLogVo.java

@@ -1,5 +1,7 @@
 package org.dromara.fulfiller.domain.vo;
 
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
 import org.dromara.fulfiller.domain.FlfComplaintLog;
 import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
 import cn.idev.excel.annotation.ExcelProperty;
@@ -38,12 +40,15 @@ public class FlfComplaintLogVo implements Serializable {
      * 履约者
      */
     @ExcelProperty(value = "履约者")
+    @Translation(type = TransConstant.FULFILLER_ID_TO_NAME, mapper = "fulfiller")
     private Long fulfiller;
 
     /**
      * 关联订单
      */
     @ExcelProperty(value = "关联订单")
+    @Translation(type = TransConstant.ORDER_ID_TO_CODE, mapper = "orderId")
+    private String orderCode;
     private Long orderId;
 
     /**
@@ -52,5 +57,9 @@ public class FlfComplaintLogVo implements Serializable {
     @ExcelProperty(value = "投诉原因")
     private String reason;
 
+    private Date createTime;
+
+    @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "createBy")
+    private Long createBy;
 
 }

+ 1 - 1
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/vo/FlfFulfillerVo.java

@@ -51,7 +51,7 @@ public class FlfFulfillerVo implements Serializable {
     private Long stationId;
     private String stationName;
     private String workType;
-    private Long levelId;
+    private Integer level;
     private String levelName;
     private Integer points;
     private Long balance;

+ 2 - 1
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/vo/FlfLevelConfigVo.java

@@ -13,7 +13,7 @@ import lombok.Data;
 import java.io.Serial;
 import java.io.Serializable;
 import java.util.Date;
-
+import java.util.List;
 
 
 /**
@@ -154,5 +154,6 @@ public class FlfLevelConfigVo implements Serializable {
     @ExcelProperty(value = "自然月内投诉率达到a%,自动扣罚积分")
     private Integer degradeComplaintCountScore;
 
+    private List<Long> rights;
 
 }

+ 2 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/enums/FlfPointsBizTypeEnum.java

@@ -15,6 +15,8 @@ public enum FlfPointsBizTypeEnum {
     ORDER_REWARD("admin_reward", "订单奖励"),
     ORDER_PUNISH("admin_punish", "订单惩罚"),
     ORDER_FINISH("order_finish", "订单完成"),
+
+    VIOLATION_PUNISH("violation_punish", "违规惩罚"),
     ;
     private final String value;
     private final String label;

+ 7 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/mapper/FlfLevelConfigRightsMapper.java

@@ -0,0 +1,7 @@
+package org.dromara.fulfiller.mapper;
+
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.fulfiller.domain.FlfLevelConfigRights;
+
+public interface FlfLevelConfigRightsMapper extends BaseMapperPlus<FlfLevelConfigRights, FlfLevelConfigRights> {
+}

+ 12 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/IFlfComplaintLogService.java

@@ -1,5 +1,12 @@
 package org.dromara.fulfiller.service;
 
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.fulfiller.domain.bo.FlfComplaintLogBo;
+import org.dromara.fulfiller.domain.vo.FlfComplaintLogVo;
+
+import java.util.List;
+
 /**
  * 投诉信息Service接口
  *
@@ -7,4 +14,9 @@ package org.dromara.fulfiller.service;
  * @date 2026-03-18
  */
 public interface IFlfComplaintLogService {
+    boolean insertByBo(FlfComplaintLogBo bo);
+
+    List<FlfComplaintLogVo> listByOrder(Long orderId);
+
+    TableDataInfo<FlfComplaintLogVo> pageByFulfiller(Long fulfiller, PageQuery pageQuery);
 }

+ 7 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/IFlfLevelConfigService.java

@@ -1,9 +1,16 @@
 package org.dromara.fulfiller.service;
 
+import org.dromara.fulfiller.domain.bo.FlfLevelConfigBo;
 import org.dromara.fulfiller.domain.vo.FlfLevelConfigVo;
 
 import java.util.List;
 
 public interface IFlfLevelConfigService {
     List<FlfLevelConfigVo> listAll();
+
+    boolean insertByBo(FlfLevelConfigBo bo);
+
+    boolean updateByBo(FlfLevelConfigBo bo);
+
+    boolean deleteById(Long id);
 }

+ 5 - 2
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/IFlfLevelRightsService.java

@@ -1,6 +1,7 @@
 package org.dromara.fulfiller.service;
 
 import org.dromara.fulfiller.domain.bo.FlfLevelRightsBo;
+import org.dromara.fulfiller.domain.bo.FlfLevelRightsChangeStatusBo;
 import org.dromara.fulfiller.domain.vo.FlfLevelRightsVo;
 
 import java.util.List;
@@ -8,9 +9,11 @@ import java.util.List;
 public interface IFlfLevelRightsService {
     List<FlfLevelRightsVo> listAll();
 
-    FlfLevelRightsVo insertByBo(FlfLevelRightsBo bo);
+    boolean insertByBo(FlfLevelRightsBo bo);
 
-    FlfLevelRightsVo updateByBo(FlfLevelRightsBo bo);
+    boolean updateByBo(FlfLevelRightsBo bo);
 
     boolean deleteById(Long id);
+
+    boolean updateStatus(FlfLevelRightsChangeStatusBo bo);
 }

+ 42 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfComplaintLogServiceImpl.java

@@ -1,11 +1,24 @@
 package org.dromara.fulfiller.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.fulfiller.domain.FlfComplaintLog;
+import org.dromara.fulfiller.domain.bo.FlfComplaintLogBo;
+import org.dromara.fulfiller.domain.vo.FlfComplaintLogVo;
+import org.dromara.order.api.RemoteSubOrderService;
+import org.dromara.order.api.domain.vo.RemoteSubOrderVo;
 import org.springframework.stereotype.Service;
 import org.dromara.fulfiller.mapper.FlfComplaintLogMapper;
 import org.dromara.fulfiller.service.IFlfComplaintLogService;
 
+import java.util.List;
+
 /**
  * 投诉信息Service业务层处理
  *
@@ -18,5 +31,34 @@ import org.dromara.fulfiller.service.IFlfComplaintLogService;
 public class FlfComplaintLogServiceImpl implements IFlfComplaintLogService {
 
     private final FlfComplaintLogMapper baseMapper;
+    @DubboReference
+    private final RemoteSubOrderService remoteSubOrderService;
+
+    @Override
+    public boolean insertByBo(FlfComplaintLogBo bo) {
+        FlfComplaintLog entity = MapstructUtils.convert(bo, FlfComplaintLog.class);
+        RemoteSubOrderVo order = remoteSubOrderService.getById(bo.getOrderId());
+        entity.setTenantId(order.getTenantId());
+        return baseMapper.insert(entity) > 0;
+    }
+
+    @Override
+    public List<FlfComplaintLogVo> listByOrder(Long orderId) {
+        return baseMapper.selectVoList(
+            Wrappers.lambdaQuery(FlfComplaintLog.class)
+                .eq(FlfComplaintLog::getOrderId, orderId)
+                .orderByDesc(FlfComplaintLog::getId)
+        );
+    }
 
+    @Override
+    public TableDataInfo<FlfComplaintLogVo> pageByFulfiller(Long fulfiller, PageQuery pageQuery) {
+        IPage<FlfComplaintLogVo> page = baseMapper.selectVoPage(
+            pageQuery.build(),
+            Wrappers.lambdaQuery(FlfComplaintLog.class)
+                .eq(FlfComplaintLog::getFulfiller, fulfiller)
+                .orderByDesc(FlfComplaintLog::getId)
+        );
+        return TableDataInfo.build(page);
+    }
 }

+ 16 - 4
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfFlfLevelRightsServiceImpl.java

@@ -1,10 +1,12 @@
 package org.dromara.fulfiller.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.constant.CacheNames;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.fulfiller.domain.FlfLevelRights;
 import org.dromara.fulfiller.domain.bo.FlfLevelRightsBo;
+import org.dromara.fulfiller.domain.bo.FlfLevelRightsChangeStatusBo;
 import org.dromara.fulfiller.domain.vo.FlfLevelRightsVo;
 import org.dromara.fulfiller.mapper.FlfLevelRightsMapper;
 import org.dromara.fulfiller.service.IFlfLevelRightsService;
@@ -28,24 +30,24 @@ public class FlfFlfLevelRightsServiceImpl implements IFlfLevelRightsService {
 
     @CacheEvict(cacheNames = CacheNames.FLF_CONFIG, key = "'level_right'")
     @Override
-    public FlfLevelRightsVo insertByBo(FlfLevelRightsBo bo) {
+    public boolean insertByBo(FlfLevelRightsBo bo) {
         FlfLevelRights entity = MapstructUtils.convert(bo, FlfLevelRights.class);
         boolean flag = baseMapper.insert(entity) == 0;
         if (flag) {
             throw new RuntimeException("新增失败");
         }
-        return baseMapper.selectVoById(entity.getId());
+        return true;
     }
 
     @CacheEvict(cacheNames = CacheNames.FLF_CONFIG, key = "'level_right'")
     @Override
-    public FlfLevelRightsVo updateByBo(FlfLevelRightsBo bo) {
+    public boolean updateByBo(FlfLevelRightsBo bo) {
         FlfLevelRights entity = MapstructUtils.convert(bo, FlfLevelRights.class);
         boolean flag = baseMapper.updateById(entity) == 0;
         if (flag) {
             throw new RuntimeException("修改失败");
         }
-        return baseMapper.selectVoById(entity.getId());
+        return true;
     }
 
     @CacheEvict(cacheNames = CacheNames.FLF_CONFIG, key = "'level_right'")
@@ -53,4 +55,14 @@ public class FlfFlfLevelRightsServiceImpl implements IFlfLevelRightsService {
     public boolean deleteById(Long id) {
         return baseMapper.deleteById(id) > 0;
     }
+
+    @CacheEvict(cacheNames = CacheNames.FLF_CONFIG, key = "'level_right'")
+    @Override
+    public boolean updateStatus(FlfLevelRightsChangeStatusBo bo) {
+        return baseMapper.update(
+            Wrappers.lambdaUpdate(FlfLevelRights.class)
+                .eq(FlfLevelRights::getId, bo.getId())
+                .set(FlfLevelRights::getStatus, bo.getStatus())
+        ) > 0;
+    }
 }

+ 1 - 1
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfFulfillerServiceImpl.java

@@ -133,7 +133,7 @@ public class FlfFulfillerServiceImpl implements IFlfFulfillerService {
         lqw.eq(StringUtils.isNotBlank(bo.getWorkType()), FlfFulfiller::getWorkType, bo.getWorkType());
         lqw.eq(StringUtils.isNotBlank(bo.getCityCode()), FlfFulfiller::getCityCode, bo.getCityCode());
         lqw.eq(bo.getStationId() != null, FlfFulfiller::getStationId, bo.getStationId());
-        lqw.eq(bo.getLevelId() != null, FlfFulfiller::getLevelId, bo.getLevelId());
+        lqw.eq(bo.getLevel() != null, FlfFulfiller::getLevel, bo.getLevel());
         lqw.eq(bo.getAuthId() != null, FlfFulfiller::getAuthId, bo.getAuthId());
         lqw.eq(bo.getAuthQual() != null, FlfFulfiller::getAuthQual, bo.getAuthQual());
         lqw.orderByDesc(FlfFulfiller::getCreateTime);

+ 103 - 1
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfLevelConfigServiceImpl.java

@@ -1,21 +1,123 @@
 package org.dromara.fulfiller.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.constant.CacheNames;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.fulfiller.domain.FlfLevelConfig;
+import org.dromara.fulfiller.domain.FlfLevelConfigRights;
+import org.dromara.fulfiller.domain.bo.FlfLevelConfigBo;
 import org.dromara.fulfiller.domain.vo.FlfLevelConfigVo;
 import org.dromara.fulfiller.mapper.FlfLevelConfigMapper;
+import org.dromara.fulfiller.mapper.FlfLevelConfigRightsMapper;
 import org.dromara.fulfiller.service.IFlfLevelConfigService;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @Service
 @RequiredArgsConstructor
 public class FlfLevelConfigServiceImpl implements IFlfLevelConfigService {
 
     private final FlfLevelConfigMapper baseMapper;
+    private final FlfLevelConfigRightsMapper levelConfigRightsMapper;
 
+    @Cacheable(cacheNames = CacheNames.FLF_CONFIG, key = "'level_config'")
     @Override
     public List<FlfLevelConfigVo> listAll() {
-        return List.of();
+
+        List<FlfLevelConfigVo> vos = baseMapper.selectVoList(Wrappers.lambdaQuery(FlfLevelConfig.class).orderByAsc(FlfLevelConfig::getLvNo));
+
+        List<Long> configIds = new ArrayList<>();
+        vos.forEach(e -> configIds.add(e.getId()));
+        if (!configIds.isEmpty()) {
+            Map<Long, List<Long>> map = new HashMap<>();
+            levelConfigRightsMapper.selectList(
+                Wrappers.lambdaQuery(FlfLevelConfigRights.class).in(FlfLevelConfigRights::getConfigId, configIds)
+            ).forEach(e -> map.computeIfAbsent(e.getConfigId(), k -> new ArrayList<>()).add(e.getRightsId()));
+            vos.forEach(e -> e.setRights(map.get(e.getId())));
+        }
+
+        return vos;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @CacheEvict(cacheNames = CacheNames.FLF_CONFIG, key = "'level_config'")
+    @Override
+    public boolean insertByBo(FlfLevelConfigBo bo) {
+
+        FlfLevelConfig config = MapstructUtils.convert(bo, FlfLevelConfig.class);
+        boolean configFlag = baseMapper.insert(config) == 0;
+        if (configFlag) {
+            throw new RuntimeException("新增配置信息");
+        }
+
+        List<FlfLevelConfigRights> relations = new ArrayList<>();
+        bo.getRights().forEach(e -> {
+            FlfLevelConfigRights right = new FlfLevelConfigRights();
+            right.setConfigId(config.getId());
+            right.setRightsId(e);
+            relations.add(right);
+        });
+        boolean relationFlag = levelConfigRightsMapper.insertBatch(relations);
+        if (!relationFlag) {
+            throw new RuntimeException("新增关系失败");
+        }
+
+        return true;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @CacheEvict(cacheNames = CacheNames.FLF_CONFIG, key = "'level_config'")
+    @Override
+    public boolean updateByBo(FlfLevelConfigBo bo) {
+        FlfLevelConfig config = MapstructUtils.convert(bo, FlfLevelConfig.class);
+        boolean configFlag = baseMapper.updateById(config) == 0;
+        if (configFlag) {
+            throw new RuntimeException("修改配置信息");
+        }
+
+        boolean deleteFlag = levelConfigRightsMapper.delete(Wrappers.lambdaQuery(FlfLevelConfigRights.class).eq(FlfLevelConfigRights::getConfigId, bo.getId())) == 0;
+        if (deleteFlag) {
+            throw new RuntimeException("删除关系失败");
+        }
+
+        List<FlfLevelConfigRights> relations = new ArrayList<>();
+        bo.getRights().forEach(e -> {
+            FlfLevelConfigRights right = new FlfLevelConfigRights();
+            right.setConfigId(config.getId());
+            right.setRightsId(e);
+            relations.add(right);
+        });
+        boolean relationFlag = levelConfigRightsMapper.insertBatch(relations);
+        if (!relationFlag) {
+            throw new RuntimeException("新增关系失败");
+        }
+
+        return true;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @CacheEvict(cacheNames = CacheNames.FLF_CONFIG, key = "'level_config'")
+    @Override
+    public boolean deleteById(Long id) {
+
+        boolean configFlag = baseMapper.deleteById(id) == 0;
+        if (configFlag) {
+            throw new RuntimeException("删除配置信息");
+        }
+
+        boolean deleteFlag = levelConfigRightsMapper.delete(Wrappers.lambdaQuery(FlfLevelConfigRights.class).eq(FlfLevelConfigRights::getConfigId, id)) == 0;
+        if (deleteFlag) {
+            throw new RuntimeException("删除关系失败");
+        }
+
+        return true;
     }
 }

+ 37 - 1
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfViolationLogServiceImpl.java

@@ -7,12 +7,20 @@ import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.fulfiller.constants.FlfActionTypeConstant;
+import org.dromara.fulfiller.domain.FlfFulfiller;
+import org.dromara.fulfiller.domain.FlfPointsLog;
 import org.dromara.fulfiller.domain.FlfViolationLog;
 import org.dromara.fulfiller.domain.bo.FlfViolationLogBo;
 import org.dromara.fulfiller.domain.vo.FlfViolationLogVo;
+import org.dromara.fulfiller.enums.FlfPointsBizTypeEnum;
+import org.dromara.fulfiller.mapper.FlfFulfillerMapper;
+import org.dromara.fulfiller.mapper.FlfPointsLogMapper;
 import org.springframework.stereotype.Service;
 import org.dromara.fulfiller.mapper.FlfViolationLogMapper;
 import org.dromara.fulfiller.service.IFlfViolationLogService;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 违规信息Service业务层处理
@@ -26,11 +34,39 @@ import org.dromara.fulfiller.service.IFlfViolationLogService;
 public class FlfViolationLogServiceImpl implements IFlfViolationLogService {
 
     private final FlfViolationLogMapper baseMapper;
+    private final FlfPointsLogMapper pointsLogMapper;
+    private final FlfFulfillerMapper fulfillerMapper;
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public boolean insertByBo(FlfViolationLogBo bo) {
         FlfViolationLog entity = MapstructUtils.convert(bo, FlfViolationLog.class);
-        return baseMapper.insert(entity) > 0;
+        boolean violationLogFlag = baseMapper.insert(entity) == 0;
+        if (violationLogFlag) {
+            throw new RuntimeException("违规日志新增失败");
+        }
+
+        FlfFulfiller fulfiller = fulfillerMapper.selectById(bo.getFulfiller());
+        fulfiller.setPoints(fulfiller.getPoints() + bo.getPoints());
+        boolean fulfillerFlag = fulfillerMapper.updateById(fulfiller) == 0;
+        if (fulfillerFlag) {
+            throw new RuntimeException("修改履约者失败");
+        }
+
+        FlfPointsLog log = new FlfPointsLog();
+        log.setFulfillerId(bo.getFulfiller());
+        log.setType(FlfActionTypeConstant.REDUCE);
+        log.setBizType(FlfPointsBizTypeEnum.VIOLATION_PUNISH.getValue());
+        log.setAmount(bo.getPoints());
+        log.setPointsAfter(fulfiller.getPoints());
+        log.setReason(bo.getReason());
+        log.setOperatorId(LoginHelper.getUserId());
+        boolean pointsLogFlag = pointsLogMapper.insert(log) == 0;
+        if (pointsLogFlag) {
+            throw new RuntimeException("积分变化日志记录失败");
+        }
+
+        return true;
     }
 
     @Override

+ 6 - 6
ruoyi-modules/yingpaipay-fulfiller/src/main/resources/banner.txt

@@ -1,8 +1,8 @@
 Spring Boot Version: ${spring-boot.version}
 Spring Application Name: ${spring.application.name}
-        .__                            .__                                                       .__
- ___.__.|__| ____    ____ ___________  |__|__________  ___.__.           ______ ______________  _|__| ____  ____
-<   |  ||  |/    \  / ___\\____ \__  \ |  \____ \__  \<   |  |  ______  /  ___// __ \_  __ \  \/ /  |/ ___\/ __ \
- \___  ||  |   |  \/ /_/  >  |_> > __ \|  |  |_> > __ \\___  | /_____/  \___ \\  ___/|  | \/\   /|  \  \__\  ___/
- / ____||__|___|  /\___  /|   __(____  /__|   __(____  / ____|         /____  >\___  >__|    \_/ |__|\___  >___  >
- \/             \//_____/ |__|       \/   |__|       \/\/                   \/     \/                    \/    \/
+        .__                            .__                               _____     .__   _____.__.__  .__
+ ___.__.|__| ____    ____ ___________  |__|__________  ___.__.         _/ ____\_ __|  |_/ ____\__|  | |  |   ___________
+<   |  ||  |/    \  / ___\\____ \__  \ |  \____ \__  \<   |  |  ______ \   __\  |  \  |\   __\|  |  | |  | _/ __ \_  __ \
+ \___  ||  |   |  \/ /_/  >  |_> > __ \|  |  |_> > __ \\___  | /_____/  |  | |  |  /  |_|  |  |  |  |_|  |_\  ___/|  | \/
+ / ____||__|___|  /\___  /|   __(____  /__|   __(____  / ____|          |__| |____/|____/__|  |__|____/____/\___  >__|
+ \/             \//_____/ |__|       \/   |__|       \/\/                                                       \/

+ 0 - 1
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/SysSubOrder.java

@@ -140,7 +140,6 @@ public class SysSubOrder extends TenantEntity {
     @TableLogic
     private String delFlag;
 
-
     private String remark;
 
     private Integer platformId;

+ 0 - 4
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/dubbo/RemoteOrderServiceImpl.java

@@ -3,14 +3,11 @@ package org.dromara.order.dubbo;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import org.apache.dubbo.config.annotation.DubboService;
-import org.dromara.common.core.constant.CacheNames;
 import org.dromara.order.api.RemoteOrderService;
 import org.dromara.order.domain.SysOrder;
 import org.dromara.order.mapper.SysOrderMapper;
-import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
 
 @Service
 @DubboService
@@ -19,7 +16,6 @@ public class RemoteOrderServiceImpl implements RemoteOrderService {
 
     private final SysOrderMapper baseMapper;
 
-    @Cacheable(cacheNames = CacheNames.SYS_ORDER_CODE, key = "#id")
     @Override
     public String getCodeById(Long id) {
         return baseMapper.selectOne(

+ 13 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/dubbo/RemoteSubOrderServiceImpl.java

@@ -3,11 +3,14 @@ package org.dromara.order.dubbo;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.common.core.constant.CacheNames;
 import org.dromara.order.api.RemoteSubOrderService;
 import org.dromara.order.api.domain.vo.RemoteSubOrderVo;
+import org.dromara.order.domain.SysOrder;
 import org.dromara.order.domain.SysSubOrder;
 import org.dromara.order.enums.OrderStatusEnum;
 import org.dromara.order.mapper.SysSubOrderMapper;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -209,4 +212,14 @@ public class RemoteSubOrderServiceImpl implements RemoteSubOrderService {
 
         return vos;
     }
+
+    @Cacheable(cacheNames = CacheNames.SYS_ORDER_CODE, key = "#id")
+    @Override
+    public String getCodeById(Long id) {
+        return baseMapper.selectOne(
+            Wrappers.lambdaQuery(SysSubOrder.class)
+                .select(SysSubOrder::getCode)
+                .eq(SysSubOrder::getId, id)
+        ).getCode();
+    }
 }