直推和二级直推

This commit is contained in:
Administrator 2020-09-18 23:51:45 +08:00
parent 3410ac9ea8
commit 589d37fd75
9 changed files with 77 additions and 32 deletions

View File

@ -3,23 +3,12 @@ package com.ruoyi.business.ajax;
import com.ruoyi.business.service.IBizMemberService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.security.Md5Utils;
import org.apache.ibatis.annotations.Param;
import org.apache.shiro.crypto.hash.Md5Hash;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import sun.security.provider.MD5;
import javax.annotation.Resource;
import javax.crypto.Cipher;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
/**
* 前端用户登录

View File

@ -1,28 +1,24 @@
package com.ruoyi.business.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.ruoyi.business.domain.BizMember;
import com.ruoyi.business.service.IBizMemberService;
import com.ruoyi.business.utils.Encrypt;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.business.domain.BizMember;
import com.ruoyi.business.service.IBizMemberService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 会员Controller

View File

@ -23,6 +23,9 @@ public class BizAccount extends BaseEntity
public static final int DOU_SPECIAL = 3;
public static final int DOU_FIELD = 4;
//二级直推拥有有效下级用户数量条件
public static final int SECOND_AWARD_CHILD_LIMIT = 3;
/** 会员账户ID */
private Long id;

View File

@ -48,6 +48,9 @@ public class BizOrder extends BaseEntity
@Excel(name = "0-待支付1-已支付2-已取消, 3-待收货, 4-已完成")
private Integer orderStatus;
/** 是否团队福豆影响 */
private Integer isTeam;
/** 订单备注 */
@Excel(name = "订单备注")
private String remark;
@ -148,7 +151,16 @@ public class BizOrder extends BaseEntity
{
return orderStatus;
}
public void setAddressId(Long addressId)
public Integer getIsTeam() {
return isTeam;
}
public void setIsTeam(Integer isTeam) {
this.isTeam = isTeam;
}
public void setAddressId(Long addressId)
{
this.addressId = addressId;
}

View File

@ -76,4 +76,13 @@ public interface BizMemberMapper
* @return 结果
*/
public int deleteBizMemberByIds(String[] ids);
/**
* 取出有效下级数量(有订单)
*
* @param memberID 上级用户ID
* @return 结果
*/
public int getValidChildCount(Long memberID);
}

View File

@ -11,6 +11,7 @@ import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.util.ShiroUtils;
import com.ruoyi.system.utils.DictUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -187,6 +188,7 @@ public class BizOrderServiceImpl implements IBizOrderService
order.setMemberName(member.getMemberName());
order.setOrderAmount(orderTotal);
order.setOrderStatus(BizOrder.STATUS_PAYED); //已支付
order.setIsTeam(cashbackAmount.longValue() > 0 ? 1 : 0); //是否团队福豆影响订单
order.setRemark(remark);
order.setAddressDetail(address.getAddress());
order.setAddressId(addressID);
@ -200,19 +202,43 @@ public class BizOrderServiceImpl implements IBizOrderService
orderDetail.setProductCount(productNum);
orderDetail.setProductAmount(amount);
bizOrderMapper.insertBizOrderDetail(orderDetail);
String businessCode = String.valueOf(order.getOrderSn());
//减去福豆余额账户
// TODO 类型不对同步完数据后在修改
boolean result = bizAccountService.accountChange(memberID, BizAccount.DOU_BALANCE, BizAccountDetail.DOU_DETAIL_TYPE_ORDER, -orderTotal.longValue(), String.valueOf(order.getId()), BizAccountDetail.DOU_DESC_ORDER);
boolean result = bizAccountService.accountChange(memberID, BizAccount.DOU_BALANCE, BizAccountDetail.DOU_DETAIL_TYPE_ORDER, -orderTotal.longValue(), businessCode, BizAccountDetail.DOU_DESC_ORDER);
if (!result) {
return AjaxResult.error("扣款失败,请联系管理员");
}
//增加专项账户
if(cashbackAmount.longValue() > 0) {
// TODO 类型不对同步完数据后在修改
result = bizAccountService.accountChange(memberID, BizAccount.DOU_SPECIAL, BizAccountDetail.DOU_DETAIL_TYPE_CHARGE, cashbackAmount.longValue(), String.valueOf(order.getId()), BizAccountDetail.DOU_DESC_SPECIAL1);
result = bizAccountService.accountChange(memberID, BizAccount.DOU_SPECIAL, BizAccountDetail.DOU_DETAIL_TYPE_CHARGE, cashbackAmount.longValue(), businessCode, BizAccountDetail.DOU_DESC_SPECIAL1);
if (!result) {
return AjaxResult.error("扣款失败,请联系管理员");
}
//增加直推奖励(团队福豆账户)
Long recMemberID = member.getRecommendId();
if (recMemberID != null && recMemberID != 0) {
//取出直推奖励金额
String award1 = DictUtils.getDictLabel("busi_recommend_award", "1");
result = bizAccountService.accountChange(memberID, BizAccount.DOU_TEAM, BizAccountDetail.DOU_DETAIL_TYPE_CHARGE, Long.parseLong(award1), businessCode, BizAccountDetail.DOU_DESC_RECOMM);
if (!result) {
return AjaxResult.error("扣款失败,请联系管理员");
}
//判断二级直推(需要3个下级)
BizMember recommendMember = bizMemberMapper.selectBizMemberSimple(recMemberID);
Long topMemberID = recommendMember.getRecommendId();
//判断有效下级数不少于三个
if (bizMemberMapper.getValidChildCount(topMemberID) >= BizAccount.SECOND_AWARD_CHILD_LIMIT) {
String award2 = DictUtils.getDictLabel("busi_recommend_award", "2");
result = bizAccountService.accountChange(memberID, BizAccount.DOU_TEAM, BizAccountDetail.DOU_DETAIL_TYPE_CHARGE, Long.parseLong(award2), businessCode, BizAccountDetail.DOU_DESC_SECOND);
if (!result) {
return AjaxResult.error("扣款失败,请联系管理员");
}
}
}
}
return AjaxResult.success();
}

View File

@ -2,6 +2,7 @@ package com.ruoyi.business.utils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.security.Md5Utils;
import com.ruoyi.system.utils.DictUtils;
import javax.crypto.*;
import javax.crypto.spec.DESKeySpec;
@ -72,7 +73,9 @@ public class Encrypt {
public static void main(String args[]) {
//System.out.println(encrypt("x123456"));
System.out.println(decrypt("248E135E28C103B4"));
//System.out.println(decrypt("248E135E28C103B4"));
//System.out.println(DictUtils.getDictLabel("busi_recommend_award", "1"));
}
private static final String HEX_CHAR = "0123456789ABCDEF";

View File

@ -122,4 +122,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach>
</delete>
<select id="getValidChildCount" parameterType="Long" resultType="Integer">
select count(id) from biz_member a where recommend_id = #{memberID}
and exists(select id from biz_order b where b.member_id = a.id and is_team = 1)
</select>
</mapper>

View File

@ -12,6 +12,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="memberName" column="member_name" />
<result property="orderAmount" column="order_amount" />
<result property="orderStatus" column="order_status" />
<result property="isTeam" column="is_team" />
<result property="remark" column="remark" />
<result property="addressDetail" column="address_detail" />
<result property="addressId" column="address_id" />
@ -69,6 +70,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="memberName != null and memberName != ''">member_name,</if>
<if test="orderAmount != null">order_amount,</if>
<if test="orderStatus != null">order_status,</if>
<if test="isTeam != null">is_team,</if>
<if test="addressDetail != null">address_detail,</if>
<if test="remark != null">remark,</if>
<if test="addressId != null">address_id,</if>
@ -84,6 +86,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="memberName != null and memberName != ''">#{memberName},</if>
<if test="orderAmount != null">#{orderAmount},</if>
<if test="orderStatus != null">#{orderStatus},</if>
<if test="isTeam != null">#{isTeam},</if>
<if test="addressDetail != null">#{addressDetail},</if>
<if test="remark != null">#{remark},</if>
<if test="addressId != null">#{addressId},</if>