Browse Source

分佣比例配置

igl 1 năm trước cách đây
mục cha
commit
bff402dfce

+ 57 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/ProfitRatioConfigDTO.java

@@ -0,0 +1,57 @@
+package com.chelvc.cloud.vehicle.api.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class ProfitRatioConfigDTO implements Serializable {
+
+    private static final long serialVersionUID = -9007530650121576786L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 抽佣比例0-100
+     */
+    private int ratio;
+
+    /**
+     * 类型:1-平台;2-邀请用户;3-邀请商家
+     */
+    private Integer type;
+
+    /**
+     * 抽成要求数
+     */
+    private int num;
+
+    /**
+     * 状态:0-正常;1-停用
+     */
+    private Integer status;
+
+    /**
+     * 创建用户
+     */
+    private Long creator;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新用户
+     */
+    private Long updater;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+}

+ 29 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/AddProfitRatioConfigParams.java

@@ -0,0 +1,29 @@
+package com.chelvc.cloud.vehicle.api.param;
+
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+@Data
+public class AddProfitRatioConfigParams implements Serializable {
+
+    private static final long serialVersionUID = -3003327769503676313L;
+
+    @Min(value = 0, message = "比例不能小于0")
+    @Max(value = 100, message = "比例不能大于100")
+    private int ratio;
+
+    @NotNull(message = "类型不能为空")
+    private Integer type;
+
+    @Min(value = 0, message = "数量不能小于0")
+    private int num;
+
+    /**
+     * 前端不传
+     */
+    private Long userId;
+}

+ 32 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/EditProfitRatioConfigParams.java

@@ -0,0 +1,32 @@
+package com.chelvc.cloud.vehicle.api.param;
+
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+@Data
+public class EditProfitRatioConfigParams implements Serializable {
+
+    private static final long serialVersionUID = 1560070976943307796L;
+
+    @NotNull(message = "主键不能为空")
+    private Long id;
+
+    @Min(value = 0, message = "比例不能小于0")
+    @Max(value = 100, message = "比例不能大于100")
+    private int ratio;
+
+    @Min(value = 0, message = "数量不能小于0")
+    private int num;
+
+    @NotNull(message = "状态不能为空")
+    private Integer status;
+
+    /**
+     * 前端不传
+     */
+    private Long userId;
+}

+ 14 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/QueryProfitRatioConfigParam.java

@@ -0,0 +1,14 @@
+package com.chelvc.cloud.vehicle.api.param;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class QueryProfitRatioConfigParam implements Serializable {
+
+    private static final long serialVersionUID = -4915533571039390572L;
+
+    private Integer type;
+    private Integer status;
+}

+ 19 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/ProfitRatioConfigService.java

@@ -0,0 +1,19 @@
+package com.chelvc.cloud.vehicle.api.service;
+
+import com.chelvc.cloud.vehicle.api.dto.ProfitRatioConfigDTO;
+import com.chelvc.cloud.vehicle.api.param.AddProfitRatioConfigParams;
+import com.chelvc.cloud.vehicle.api.param.EditProfitRatioConfigParams;
+import com.chelvc.cloud.vehicle.api.param.QueryProfitRatioConfigParam;
+import com.chelvc.framework.common.model.Pagination;
+
+public interface ProfitRatioConfigService {
+
+    void add(AddProfitRatioConfigParams params);
+
+    void edit(EditProfitRatioConfigParams params);
+
+    void delete(Long id);
+
+    Pagination<ProfitRatioConfigDTO> queryPageList(QueryProfitRatioConfigParam param, Integer pageNum,
+                                                   Integer pageSize);
+}

+ 7 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/ProfitRatioConfigMapper.java

@@ -1,9 +1,16 @@
 package com.chelvc.cloud.vehicle.server.dao;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.chelvc.cloud.vehicle.api.dto.ProfitRatioConfigDTO;
 import com.chelvc.cloud.vehicle.server.entity.ProfitRatioConfig;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 @Mapper
 public interface ProfitRatioConfigMapper extends BaseMapper<ProfitRatioConfig> {
+    IPage<ProfitRatioConfigDTO> queryPageList(@Param("page") Page<ProfitRatioConfigDTO> page, @Param(Constants.WRAPPER) QueryWrapper<ProfitRatioConfig> wrapper);
 }

+ 81 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/ProfitRatioConfigServiceImpl.java

@@ -0,0 +1,81 @@
+package com.chelvc.cloud.vehicle.server.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.chelvc.cloud.vehicle.api.dto.ProfitRatioConfigDTO;
+import com.chelvc.cloud.vehicle.api.param.AddProfitRatioConfigParams;
+import com.chelvc.cloud.vehicle.api.param.EditProfitRatioConfigParams;
+import com.chelvc.cloud.vehicle.api.param.QueryProfitRatioConfigParam;
+import com.chelvc.cloud.vehicle.api.service.ProfitRatioConfigService;
+import com.chelvc.cloud.vehicle.server.dao.ProfitRatioConfigMapper;
+import com.chelvc.cloud.vehicle.server.entity.ProfitRatioConfig;
+import com.chelvc.framework.base.exception.ResourceUnavailableException;
+import com.chelvc.framework.common.model.Pagination;
+import lombok.RequiredArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.Date;
+
+@RequiredArgsConstructor(onConstructor = @__(@Autowired))
+@DubboService(interfaceClass = com.chelvc.cloud.vehicle.api.service.ProfitRatioConfigService.class)
+public class ProfitRatioConfigServiceImpl extends ServiceImpl<ProfitRatioConfigMapper, ProfitRatioConfig> implements ProfitRatioConfigService {
+
+    private final ProfitRatioConfigMapper baseMapper;
+
+    @Override
+    public void add(AddProfitRatioConfigParams params) {
+        ProfitRatioConfig config = new ProfitRatioConfig();
+        config.setRatio(params.getRatio());
+        config.setType(params.getType());
+        config.setNum(params.getNum());
+        config.setStatus(0);
+        config.setCreator(params.getUserId());
+        config.setCreateTime(new Date());
+        config.setUpdateTime(new Date());
+        config.setUpdater(params.getUserId());
+        baseMapper.insert(config);
+    }
+
+    @Override
+    public void edit(EditProfitRatioConfigParams params) {
+        ProfitRatioConfig profitRatioConfig = baseMapper.selectById(params.getId());
+        if(profitRatioConfig == null){
+            throw new ResourceUnavailableException("参数错误");
+        }
+        profitRatioConfig.setRatio(params.getRatio());
+        profitRatioConfig.setNum(params.getNum());
+        profitRatioConfig.setStatus(params.getStatus());
+        profitRatioConfig.setUpdateTime(new Date());
+        profitRatioConfig.setUpdater(params.getUserId());
+        baseMapper.update(profitRatioConfig, null);
+    }
+
+    @Override
+    public void delete(Long id) {
+        ProfitRatioConfig profitRatioConfig = baseMapper.selectById(id);
+        if(profitRatioConfig == null){
+            throw new ResourceUnavailableException("参数错误");
+        }
+        Integer status = profitRatioConfig.getStatus();
+        if(status == 0){
+            throw new ResourceUnavailableException("请先停用该配置");
+        }
+        baseMapper.deleteById(id);
+    }
+
+    @Override
+    public Pagination<ProfitRatioConfigDTO> queryPageList(QueryProfitRatioConfigParam param, Integer pageNum, Integer pageSize) {
+        Page<ProfitRatioConfigDTO> page = new Page<>(pageNum, pageSize);
+        QueryWrapper<ProfitRatioConfig> wrapper = Wrappers.query();
+        wrapper.eq(param.getType() != null, "type", param.getType());
+        wrapper.eq(param.getStatus() != null, "status", param.getStatus());
+        wrapper.orderByAsc("ratio");
+        IPage<ProfitRatioConfigDTO> result = baseMapper.queryPageList(page, wrapper);
+        return Pagination.<ProfitRatioConfigDTO>builder().total(result.getTotal()).pages(result.getPages())
+                .records(result.getRecords()).build();
+    }
+}

+ 24 - 0
vehicle-server/src/main/resources/mapper/ProfitRatioConfigMapper.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.chelvc.cloud.vehicle.server.dao.UserCouponMapper">
+
+    <resultMap type="com.chelvc.cloud.vehicle.api.dto.ProfitRatioConfigDTO" id="ProfitRatioConfigResult">
+        <result property="id" column="id"/>
+        <result property="ratio" column="ratio"/>
+        <result property="type" column="type"/>
+        <result property="status" column="status"/>
+        <result property="num" column="num"/>
+        <result property="creator" column="creator"/>
+        <result property="updater" column="updater"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+    <select id="selectAttention" resultMap="ProfitRatioConfigResult">
+        SELECT
+            *
+        FROM
+            profit_ratio_config
+            ${ew.getCustomSqlSegment}
+    </select>
+</mapper>