suochencheng 6 лет назад
Родитель
Сommit
a2cf9e3de0

+ 22 - 1
src/main/java/com/izouma/awesomeadmin/dao/ChannelInfoMapper.xml

@@ -14,12 +14,13 @@
         <result column="url" property="url" jdbcType="VARCHAR"/>
         <result column="remark" property="remark" jdbcType="VARCHAR"/>
         <result column="ratio" property="ratio" jdbcType="INTEGER"/>
+        <result column="ratio2" property="ratio2" jdbcType="INTEGER"/>
         <!--generatedEnd-->
     </resultMap>
 
     <sql id="Base_Column_List">
         <!--generatedStart-->
-        id, del_flag, update_time, update_user, create_time, create_user, name, version_no, url, remark, ratio        <!--generatedEnd-->
+        id, del_flag, update_time, update_user, create_time, create_user, name, version_no, url, remark, ratio, ratio2        <!--generatedEnd-->
     </sql>
 
     <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
@@ -72,6 +73,9 @@
             <if test="ratio!= null">
                 ratio,
             </if>
+            <if test="ratio2!= null">
+                ratio2,
+            </if>
             <!--generatedEnd-->
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
@@ -109,6 +113,9 @@
             <if test="ratio != null">
                 #{ratio,jdbcType=INTEGER},
             </if>
+            <if test="ratio2 != null">
+                #{ratio2,jdbcType=INTEGER},
+            </if>
             <!--generatedEnd-->
         </trim>
     </insert>
@@ -150,6 +157,9 @@
             <if test="ratio != null">
                 ratio= #{ratio,jdbcType=INTEGER},
             </if>
+            <if test="ratio2 != null">
+                ratio2= #{ratio2,jdbcType=INTEGER},
+            </if>
             <!--generatedEnd-->
         </set>
         WHERE
@@ -202,6 +212,9 @@
             <if test="record.ratio != null and !&quot;&quot;.equals(record.ratio)">
                 AND ratio = #{record.ratio}
             </if>
+            <if test="record.ratio2 != null and !&quot;&quot;.equals(record.ratio2)">
+                AND ratio2 = #{record.ratio2}
+            </if>
             <!--generatedEnd-->
             <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
@@ -211,6 +224,7 @@
                     OR url LIKE concat('%',#{record.searchKey},'%')
                     OR remark LIKE concat('%',#{record.searchKey},'%')
                     OR ratio LIKE concat('%',#{record.searchKey},'%')
+                    OR ratio2 LIKE concat('%',#{record.searchKey},'%')
                     <!--generatedEnd-->
                 </trim>
             </if>
@@ -297,6 +311,9 @@
             <if test="ratio != null and !&quot;&quot;.equals(ratio)">
                 AND ratio = #{ratio}
             </if>
+            <if test="ratio2 != null and !&quot;&quot;.equals(ratio2)">
+                AND ratio2 = #{ratio2}
+            </if>
             <!--generatedEnd-->
             <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
@@ -306,6 +323,7 @@
                     OR url LIKE concat('%',#{searchKey},'%')
                     OR remark LIKE concat('%',#{searchKey},'%')
                     OR ratio LIKE concat('%',#{searchKey},'%')
+                    OR ratio2 LIKE concat('%',#{searchKey},'%')
                     <!--generatedEnd-->
                 </trim>
             </if>
@@ -388,6 +406,9 @@
             <if test="ratio != null and !&quot;&quot;.equals(ratio)">
                 AND ratio = #{ratio}
             </if>
+            <if test="ratio2 != null and !&quot;&quot;.equals(ratio2)">
+                AND ratio2 = #{ratio2}
+            </if>
             <!--generatedEnd-->
         </where>
         LIMIT 1

+ 8 - 0
src/main/java/com/izouma/awesomeadmin/model/ChannelInfo.java

@@ -20,6 +20,7 @@ public class ChannelInfo{
     private String url;
     private String remark;
     private Integer ratio;
+    private Integer ratio2;
 
     private String idStr;
 
@@ -114,6 +115,13 @@ public class ChannelInfo{
     public void setRatio(Integer ratio){
         this.ratio = ratio;
     }
+    public Integer getRatio2(){
+        return this.ratio2;
+    }
+
+    public void setRatio2(Integer ratio2){
+        this.ratio2 = ratio2;
+    }
 
     public String getSearchKey() {
         return searchKey;

+ 100 - 10
src/main/java/com/izouma/awesomeadmin/service/impl/PayCodeOrderServiceImpl.java

@@ -1,23 +1,26 @@
 package com.izouma.awesomeadmin.service.impl;
 
-import java.util.*;
-
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dao.MemberCoinMapper;
+import com.izouma.awesomeadmin.dao.PayCodeOrderMapper;
 import com.izouma.awesomeadmin.dao.PayCodeStockMapper;
 import com.izouma.awesomeadmin.dao.ProductInfoMapper;
+import com.izouma.awesomeadmin.dto.Page;
 import com.izouma.awesomeadmin.dto.Result;
-import com.izouma.awesomeadmin.model.MemberTicket;
-import com.izouma.awesomeadmin.model.PayCodeStock;
-import com.izouma.awesomeadmin.model.ProductInfo;
+import com.izouma.awesomeadmin.model.*;
+import com.izouma.awesomeadmin.service.ChannelInfoService;
 import com.izouma.awesomeadmin.service.MemberTicketService;
+import com.izouma.awesomeadmin.service.PayCodeOrderService;
+import com.izouma.awesomeadmin.service.UserInfoService;
 import com.izouma.awesomeadmin.util.MbappUtil;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.izouma.awesomeadmin.constant.AppConstant;
-import com.izouma.awesomeadmin.dto.Page;
-import com.izouma.awesomeadmin.model.PayCodeOrder;
-import com.izouma.awesomeadmin.service.PayCodeOrderService;
-import com.izouma.awesomeadmin.dao.PayCodeOrderMapper;
+
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * service接口实现类
@@ -40,6 +43,15 @@ public class PayCodeOrderServiceImpl implements PayCodeOrderService {
     @Autowired
     private MemberTicketService memberTicketService;
 
+    @Autowired
+    private UserInfoService userInfoService;
+
+    @Autowired
+    private ChannelInfoService channelInfoService;
+
+    @Autowired
+    private MemberCoinMapper memberCoinMapper;
+
     /*generatedStart*/
 
     @Override
@@ -223,6 +235,56 @@ public class PayCodeOrderServiceImpl implements PayCodeOrderService {
 
             payCodeOrderMapper.updateByPrimaryKeySelective(record);
 
+            /**
+             * 二级分润 开始
+             */
+            try {
+                int userId = Integer.valueOf(payCodeOrder.getUserId());
+                UserInfo userInfo = userInfoService.getUserInfoById(userId + "");
+                ChannelInfo channelInfo = channelInfoService.getChannelInfoById(userInfo.getChannel() + "");
+                if (channelInfo != null) {
+                    int ratio = channelInfo.getRatio();
+                    double money = payCodeOrder.getMoney().doubleValue() * ratio / 100.0;
+                    int ratio2 = channelInfo.getRatio2();
+                    double money2 = payCodeOrder.getMoney().doubleValue() * ratio2 / 100.0;
+
+                    Integer recommenderId = userInfo.getRecommender();
+
+                    if (recommenderId != null) {
+
+                        UserInfo recommender = userInfoService.getUserInfoById(recommenderId + "");
+                        if (recommender != null) {
+
+                            fenrun(money, recommender);
+                            Integer recommenderId2 = recommender.getRecommender();
+
+
+                            if (recommenderId2 != null) {
+
+                                UserInfo recommender2 = userInfoService.getUserInfoById(recommenderId2 + "");
+                                if (recommender2 != null) {
+
+                                    fenrun(money2, recommender2);
+                                }
+
+                            }
+
+                        }
+
+                    }
+
+
+                }
+
+
+            } catch (Exception e) {
+                logger.error("渠道分成异常", e);
+            }
+
+            /**
+             * 二级分润 结束
+             */
+
             return new Result(true, "付款成功");
 
         } catch (Exception e) {
@@ -231,6 +293,34 @@ public class PayCodeOrderServiceImpl implements PayCodeOrderService {
         return new Result(false, "付款失败");
     }
 
+    /**
+     * 分润
+     *
+     * @param money
+     * @param recommender
+     */
+    private void fenrun(double money, UserInfo recommender) {
+        UserInfo updateUser = new UserInfo();
+        updateUser.setId(recommender.getId());
+
+
+        double balance = recommender.getMoneyCoin();
+        double moneyCoin = balance + money;
+
+        MemberCoin memberCoin = new MemberCoin();
+
+        memberCoin.setUserId(recommender.getId());
+        memberCoin.setCreateUser("管理员");
+        memberCoin.setMoney(BigDecimal.valueOf(money));
+        memberCoin.setBalance(BigDecimal.valueOf(moneyCoin));
+        memberCoin.setTypeFlag(AppConstant.CoinType.SONG);
+        memberCoin.setRemark("下级购买参赛券赠送:" + money + "余额");
+        memberCoinMapper.insertSelective(memberCoin);
+
+        updateUser.setMoneyCoin(moneyCoin);
+        userInfoService.updateUserInfo(updateUser);
+    }
+
     @Override
     public Result cancel(PayCodeOrder record) {
         logger.info("cancel 付款码取消");

+ 5 - 4
src/main/java/com/izouma/awesomeadmin/web/ChannelInfoController.java

@@ -100,10 +100,10 @@ public class ChannelInfoController {
         String sheetName = "channel_info";
         String titleName = "渠道信息数据表";
         String fileName = "渠道信息表";
-        int columnNumber = 11;
-        int[] columnWidth = { 20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20 };
-        String[] columnName = {  "ID" ,   "删除标识" ,   "更新时间" ,   "更新人" ,   "创建时间" ,   "创建人" ,   "名称" ,   "版本号" ,   "地址" ,   "备注" ,   "比率"  };
-        String[][] dataList = new String[channelInfos.size()][11];
+        int columnNumber = 12;
+        int[] columnWidth = { 20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20 };
+        String[] columnName = {  "ID" ,   "删除标识" ,   "更新时间" ,   "更新人" ,   "创建时间" ,   "创建人" ,   "名称" ,   "版本号" ,   "地址" ,   "备注" ,   "比率" ,   "二级比率"  };
+        String[][] dataList = new String[channelInfos.size()][12];
 
         for (int i = 0; i < channelInfos.size(); i++) {
                         dataList[i][0] = String.valueOf(channelInfos.get(i).getId());
@@ -117,6 +117,7 @@ public class ChannelInfoController {
                         dataList[i][8] = String.valueOf(channelInfos.get(i).getUrl());
                         dataList[i][9] = String.valueOf(channelInfos.get(i).getRemark());
                         dataList[i][10] = String.valueOf(channelInfos.get(i).getRatio());
+                        dataList[i][11] = String.valueOf(channelInfos.get(i).getRatio2());
                     }
 
         ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,

+ 7 - 4
src/main/vue/src/pages/ChannelInfo.vue

@@ -15,7 +15,10 @@
                 <el-input v-model="formData.remark" :disabled="'remark'==subColumn"></el-input>
             </el-form-item>
             <el-form-item prop="ratio" label="比率">
-                <el-input v-model="formData.ratio" :disabled="'ratio'==subColumn"></el-input>
+                <el-input type="number" v-model="formData.ratio" :disabled="'ratio'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="ratio2" label="二级比率">
+                <el-input type="number" v-model="formData.ratio2" :disabled="'ratio2'==subColumn"></el-input>
             </el-form-item>
             <el-form-item>
                 <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
@@ -48,7 +51,7 @@
                     }
                 }).then(res => {
                     if (res.success) {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    this.formData = res.data;
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                this.formData = res.data;
                         if (this.$route.query.column) {
                             this.formData[this.subColumn] = this.subValue;
                         }
@@ -60,7 +63,7 @@
                 }
             }
 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    },
         data() {
             return {
                 saving: false,
@@ -123,7 +126,7 @@
             submit() {
                 let data = {...this.formData};
 
-                                                                                                                                                                                                
+                                                                                                                                                                                                                
                 this.$http.post({
                     url: this.formData.id ? '/channelInfo/update' : '/channelInfo/save',
                     data: data

+ 35 - 3
src/main/vue/src/pages/ChannelInfos.vue

@@ -43,7 +43,14 @@
                     min-width="50"
                     align="center">
             </el-table-column>
-                                                                                                                                                                                                    
+                            
+                                            <el-table-column
+                                v-if="isColumnShow('id')"
+                                prop="id"
+                                label="ID"
+                                min-width="100">
+                        </el-table-column>
+                                                                                                                                                                                                            
                                             <el-table-column
                                 v-if="isColumnShow('name')"
                                 prop="name"
@@ -78,6 +85,13 @@
                                 label="比率"
                                 min-width="100">
                         </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('ratio2')"
+                                prop="ratio2"
+                                label="二级比率"
+                                min-width="100">
+                        </el-table-column>
                                                             <el-table-column
                     label="操作"
                     align="center"
@@ -221,7 +235,12 @@
                 filter1: '',
                 filter2: '',
                 tableColumns: [
-                                                                                                                                                                                                                                                                                                                                                {
+                                                                        {
+                                label: 'ID',
+                                value: 'id',
+                                show: true
+                            },
+                                                                                                                                                                                                                                                                                                                            {
                                 label: '名称',
                                 value: 'name',
                                 show: true
@@ -245,6 +264,11 @@
                                 label: '比率',
                                 value: 'ratio',
                                 show: true
+                            },
+                                                                                                {
+                                label: '二级比率',
+                                value: 'ratio2',
+                                show: true
                             },
                                                             ],
                 multipleMode: false,
@@ -254,7 +278,11 @@
                 tableSortFields: [],
                 searchMethods: ['=', '!=', '>', '>=', '<', '<=', 'like'],
                 advancedQueryColumns: [
-                                                                                                                                                                                                                                                                                                                                                {
+                                                                        {
+                                label: 'ID',
+                                value: 'id'
+                            },
+                                                                                                                                                                                                                                                                                                                            {
                                 label: '名称',
                                 value: 'name'
                             },
@@ -273,6 +301,10 @@
                                                                                                 {
                                 label: '比率',
                                 value: 'ratio'
+                            },
+                                                                                                {
+                                label: '二级比率',
+                                value: 'ratio2'
                             },
                                                             ],
                 advancedQuerySearchKey: '',