wwl пре 3 година
родитељ
комит
c640958c58

+ 61 - 0
twzd-admin/src/main/java/com/miaxis/pc/controller/extension/WxExtensionIncomeController.java

@@ -0,0 +1,61 @@
+package com.miaxis.pc.controller.extension;
+
+import com.miaxis.common.core.controller.BaseController;
+import com.miaxis.common.core.domain.Response;
+import com.miaxis.common.core.page.ResponsePageInfo;
+import com.miaxis.extension.domain.WxExtensionIncome;
+import com.miaxis.extension.service.IWxExtensionIncomeService;
+import io.swagger.annotations.*;
+import lombok.AllArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 【分成收益】Controller
+ * @author wwl
+ * @version 1.0
+ * @date 2021/11/4 15:02
+ */
+@RestController
+@RequestMapping("/pc/extension/income")
+@Api(tags={"【H5-分成收益】"})
+@AllArgsConstructor
+public class WxExtensionIncomeController extends BaseController {
+
+    private final IWxExtensionIncomeService wxExtensionIncomeService;
+
+
+    /**
+     * 查询分成收益列表
+     */
+    @PreAuthorize("@ss.hasPermi('extension:income:list')")
+    @GetMapping("/list")
+    @ApiOperation("查询分成收益列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum",value = "当前页码" ,dataType = "int", paramType = "query", required = false),
+            @ApiImplicitParam(name = "pageSize",value = "每页数据量" , dataType = "int", paramType = "query", required = false),
+    })
+    public ResponsePageInfo<WxExtensionIncome> list(@ModelAttribute WxExtensionIncome wxExtensionIncome){
+        startPage();
+        List<WxExtensionIncome> list = wxExtensionIncomeService.selectWxExtensionIncomeList(wxExtensionIncome);
+        return toResponsePageInfo(list);
+    }
+
+
+    /**
+     * 获取分成收益详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('extension:income:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation("获取分成收益详细信息")
+    public Response<WxExtensionIncome> getInfo(
+            @ApiParam(name = "id", value = "分成收益参数", required = true)
+            @PathVariable("id") Long id
+    ){
+        return Response.success(wxExtensionIncomeService.getById(id));
+    }
+
+
+}

+ 1 - 1
twzd-admin/src/main/java/com/miaxis/pc/controller/WxMenuController.java → twzd-admin/src/main/java/com/miaxis/pc/controller/wx/WxMenuController.java

@@ -1,4 +1,4 @@
-package com.miaxis.pc.controller;
+package com.miaxis.pc.controller.wx;
 
 import com.miaxis.common.annotation.Log;
 import com.miaxis.common.constant.Constants;

+ 61 - 0
twzd-service/src/main/java/com/miaxis/extension/domain/WxExtensionIncome.java

@@ -0,0 +1,61 @@
+package com.miaxis.extension.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 分成收益对象 wx_extension_income
+ * @author wwl
+ * @version 1.0
+ * @date 2021/11/4 14:34
+ */
+@Data
+@TableName("wx_extension_income")
+@ApiModel(value = "WxExtensionIncome", description = "分成收益对象 wx_extension_income")
+public class WxExtensionIncome extends BaseBusinessEntity {
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    @TableId(value = "id")
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @TableField("source_id")
+    @ApiModelProperty(value = "收益来源订单id")
+    private Long sourceId;
+
+    @TableField("beneficiary_openid")
+    @ApiModelProperty(value = "受益人----用户唯一标识(微信)")
+    private String beneficiaryOpenid;
+
+    @TableField("source_openid")
+    @ApiModelProperty(value = "收益来源人----用户唯一标识")
+    private String sourceOpenid;
+
+    @TableField("hierarchy")
+    @ApiModelProperty(value = "层级,1:一级 ,2:二级(受益人 相对于收益来源人 层级关系)")
+    private String hierarchy;
+
+    @TableField("percentage")
+    @ApiModelProperty(value = "分成百分比")
+    private BigDecimal percentage;
+
+    @TableField("profit_price")
+    @ApiModelProperty(value = "收益金额-----根据层级分成百分比计算")
+    private BigDecimal profitPrice;
+
+    @TableField("extract_status")
+    @ApiModelProperty(value = "提现状态  0:未提现(默认)、1:已提现")
+    private String extractStatus;
+
+    @TableField("status")
+    @ApiModelProperty(value = "状态  0:有效(默认)、1:失效 (伪删除)")
+    private String status;
+}

+ 22 - 0
twzd-service/src/main/java/com/miaxis/extension/mapper/WxExtensionIncomeMapper.java

@@ -0,0 +1,22 @@
+package com.miaxis.extension.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.miaxis.extension.domain.WxExtensionIncome;
+
+import java.util.List;
+
+/**
+ * 分成收益Mapper接口
+ * @author wwl
+ * @version 1.0
+ * @date 2021/11/4 14:36
+ */
+public interface WxExtensionIncomeMapper extends BaseMapper<WxExtensionIncome> {
+    /**
+     * 查询分成收益列表
+     *
+     * @param wxExtensionIncome 分成收益
+     * @return 分成收益集合
+     */
+    List<WxExtensionIncome> selectWxExtensionIncomeList(WxExtensionIncome wxExtensionIncome);
+}

+ 36 - 0
twzd-service/src/main/java/com/miaxis/extension/service/IWxExtensionIncomeService.java

@@ -0,0 +1,36 @@
+package com.miaxis.extension.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.miaxis.common.core.domain.Response;
+import com.miaxis.extension.domain.WxExtensionIncome;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 分成收益Service接口
+ * @author wwl
+ * @version 1.0
+ * @date 2021/11/4 14:37
+ */
+public interface IWxExtensionIncomeService extends IService<WxExtensionIncome> {
+
+    /**
+     * 查询分成收益列表
+     *
+     * @param wxExtensionIncome 分成收益
+     * @return 分成收益集合
+     */
+    List<WxExtensionIncome> selectWxExtensionIncomeList(WxExtensionIncome wxExtensionIncome);
+
+
+    /**
+     * 新增收益信息
+     * @param sourceId  订单id
+     * @param sourceOpenid 用户openid
+     * @param sourcePrice 订单金额
+     * @return
+     */
+    Response addExtensionIncomeBySourceId(Long sourceId, String sourceOpenid, BigDecimal sourcePrice);
+
+}

+ 110 - 0
twzd-service/src/main/java/com/miaxis/extension/service/impl/WxExtensionIncomeServiceImpl.java

@@ -0,0 +1,110 @@
+package com.miaxis.extension.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.miaxis.common.core.domain.Response;
+import com.miaxis.common.core.domain.entity.SysDictData;
+import com.miaxis.extension.domain.WxExtensionIncome;
+import com.miaxis.extension.mapper.WxExtensionIncomeMapper;
+import com.miaxis.extension.service.IWxExtensionIncomeService;
+import com.miaxis.spread.domain.WxSpreadRelation;
+import com.miaxis.spread.service.IWxSpreadRelationService;
+import com.miaxis.system.service.ISysDictDataService;
+import com.miaxis.system.service.ISysDictTypeService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 分成收益Service业务层处理
+ * @author wwl
+ * @version 1.0
+ * @date 2021/11/4 14:38
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class WxExtensionIncomeServiceImpl extends ServiceImpl<WxExtensionIncomeMapper, WxExtensionIncome> implements IWxExtensionIncomeService {
+
+
+    private final WxExtensionIncomeMapper wxExtensionIncomeMapper;
+
+    private final IWxSpreadRelationService wxSpreadRelationService;
+
+    private final ISysDictTypeService dictTypeService;
+
+    private final ISysDictDataService dictDataService;
+
+    /**
+     * 查询分成收益列表
+     *
+     * @param wxExtensionIncome 分成收益
+     * @return 分成收益
+     */
+    @Override
+    public List<WxExtensionIncome> selectWxExtensionIncomeList(WxExtensionIncome wxExtensionIncome){
+        return wxExtensionIncomeMapper.selectWxExtensionIncomeList(wxExtensionIncome);
+    }
+
+    /**
+     * 新增收益信息
+     * @param sourceId  订单id
+     * @param sourceOpenid 用户openid
+     * @param sourcePrice 订单金额
+     * @return
+     */
+    @Override
+    public Response addExtensionIncomeBySourceId(Long sourceId, String sourceOpenid, BigDecimal sourcePrice) {
+
+        //查找一二级绑定关系
+        WxSpreadRelation oneRelation = wxSpreadRelationService.getOne(new QueryWrapper<WxSpreadRelation>().eq("openid", sourceOpenid));
+        if (oneRelation == null){
+            log.info(sourceOpenid+": 此用户不存在绑定关系");
+            return Response.success();
+        }
+
+        WxSpreadRelation twoRelation = wxSpreadRelationService.getOne(new QueryWrapper<WxSpreadRelation>().eq("openid", oneRelation.getParentOpenid()));
+
+        //根据字典获取分成百分比
+        List<SysDictData> dictDatas = dictTypeService.selectDictDataByType("sys_divide_percent");
+
+        List<WxExtensionIncome> extensionIncomes = new ArrayList<>();
+        dictDatas.forEach(d -> {
+            if ("一级".equals(d.getDictLabel())){
+                BigDecimal decimal = BigDecimal.valueOf(Double.parseDouble(d.getDictValue()));//百分比
+                WxExtensionIncome income = new WxExtensionIncome();
+                income.setSourceId(sourceId);
+                income.setBeneficiaryOpenid(oneRelation.getParentOpenid());
+                income.setSourceOpenid(sourceOpenid);
+                income.setHierarchy("1");
+                income.setPercentage(decimal);
+                income.setProfitPrice(sourcePrice.multiply(decimal));
+                extensionIncomes.add(income);
+            }
+
+            if (twoRelation != null){
+                if ("二级".equals(d.getDictLabel())){
+                    BigDecimal decimal = BigDecimal.valueOf(Double.parseDouble(d.getDictValue()));//百分比
+                    WxExtensionIncome income = new WxExtensionIncome();
+                    income.setSourceId(sourceId);
+                    income.setBeneficiaryOpenid(twoRelation.getParentOpenid());
+                    income.setSourceOpenid(sourceOpenid);
+                    income.setHierarchy("2");
+                    income.setPercentage(decimal);
+                    income.setProfitPrice(sourcePrice.multiply(decimal));
+                    extensionIncomes.add(income);
+                }
+            }
+        });
+
+        //保存分成收益信息
+        this.saveBatch(extensionIncomes);
+
+        return Response.success();
+    }
+
+}

+ 39 - 0
twzd-service/src/main/resources/mapper/extension/WxExtensionIncomeMapper.xml

@@ -0,0 +1,39 @@
+<?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.miaxis.extension.mapper.WxExtensionIncomeMapper">
+
+    <resultMap type="WxExtensionIncome" id="WxExtensionIncomeResult">
+        <result property="id"    column="id"    />
+        <result property="sourceId"    column="source_id"    />
+        <result property="beneficiaryOpenid"    column="beneficiary_openid"    />
+        <result property="sourceOpenid"    column="source_openid"    />
+        <result property="hierarchy"    column="hierarchy"    />
+        <result property="percentage"    column="percentage"    />
+        <result property="profitPrice"    column="profit_price"    />
+        <result property="extractStatus"    column="extract_status"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="status"    column="status"    />
+    </resultMap>
+
+    <sql id="selectWxExtensionIncomeVo">
+        select * from wx_extension_income
+    </sql>
+
+    <select id="selectWxExtensionIncomeList" parameterType="WxExtensionIncome" resultMap="WxExtensionIncomeResult">
+        <include refid="selectWxExtensionIncomeVo"/>
+        <where>
+            <if test="sourceId != null "> and source_id = #{sourceId}</if>
+            <if test="beneficiaryOpenid != null  and beneficiaryOpenid != ''"> and beneficiary_openid = #{beneficiaryOpenid}</if>
+            <if test="sourceOpenid != null  and sourceOpenid != ''"> and source_openid = #{sourceOpenid}</if>
+            <if test="hierarchy != null  and hierarchy != ''"> and hierarchy = #{hierarchy}</if>
+            <if test="percentage != null "> and percentage = #{percentage}</if>
+            <if test="profitPrice != null "> and profit_price = #{profitPrice}</if>
+            <if test="extractStatus != null  and extractStatus != ''"> and extract_status = #{extractStatus}</if>
+            <if test="status != null  and status != ''"> and status = #{status}</if>
+        </where>
+    </select>
+
+</mapper>