2 files added
1 files deleted
13 files modified
New file |
| | |
| | | package cc.mrbird.febs.common.enumerates; |
| | | |
| | | import lombok.Getter; |
| | | |
| | | @Getter |
| | | public enum GoodsToLevelEnums { |
| | | /** |
| | | * 套餐对应级别 |
| | | */ |
| | | VIP(1, "FIRST_LEVEL"), |
| | | VVIP(2, "FIFTH_LEVEL"), |
| | | VVVIP(3, "SIX_LEVEL"); |
| | | |
| | | private Integer accountLevel; |
| | | |
| | | private String level; |
| | | |
| | | GoodsToLevelEnums(Integer accountLevel, String level) { |
| | | this.accountLevel = accountLevel; |
| | | this.level = level; |
| | | } |
| | | |
| | | public static String getLevelByAccountLevel(Integer accountLevel) { |
| | | for (GoodsToLevelEnums value : values()) { |
| | | if (value.accountLevel.equals(accountLevel)) { |
| | | return value.level; |
| | | } |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | } |
| | |
| | | |
| | | @Getter |
| | | public enum MemberLevelEnum { |
| | | SEVEN_LEVEL("SEVEN_LEVEL",6), |
| | | SIX_LEVEL("SIX_LEVEL",5), |
| | | FIFTH_LEVEL("FIFTH_LEVEL",4), |
| | | SIX_LEVEL("SIX_LEVEL",999), |
| | | FIFTH_LEVEL("FIFTH_LEVEL",998), |
| | | FOUR_LEVEL("FOUR_LEVEL",3), |
| | | THIRD_LEVEL("THIRD_LEVEL",2), |
| | | SECOND_LEVEL("SECOND_LEVEL",1), |
| | | ZERO_LEVEL("ZERO_LEVEL",0); |
| | | FIRST_LEVEL("FIRST_LEVEL",0), |
| | | ZERO_LEVEL("ZERO_LEVEL",-1); |
| | | |
| | | |
| | | private String type; |
New file |
| | |
| | | package cc.mrbird.febs.common.enumerates; |
| | | |
| | | import lombok.Getter; |
| | | |
| | | @Getter |
| | | public enum MemberLevelTagDicEnums { |
| | | |
| | | ZERO_LEVEL_Y(1, "ZERO_LEVEL", "迷梦素人") |
| | | ,ZERO_LEVEL_N(2, "ZERO_LEVEL", "迷梦素人") |
| | | ,FIRST_LEVEL_Y(1, "FIRST_LEVEL", "觉醒须眉") |
| | | ,FIRST_LEVEL_N(2, "FIRST_LEVEL", "觉醒丽人") |
| | | ,SECOND_LEVEL_Y(1, "SECOND_LEVEL", "先知蓝颜") |
| | | ,SECOND_LEVEL_N(2, "SECOND_LEVEL", "先知红颜") |
| | | ,THIRD_LEVEL_Y(1, "THIRD_LEVEL", "追影才子") |
| | | ,THIRD_LEVEL_N(2, "THIRD_LEVEL", "追影佳人") |
| | | ,FOUR_LEVEL_Y(1, "FOUR_LEVEL", "赋权玉郎") |
| | | ,FOUR_LEVEL_N(2, "FOUR_LEVEL", "赋权娇娘") |
| | | ,FIFTH_LEVEL_Y(1, "FIFTH_LEVEL", "位极尊上") |
| | | ,FIFTH_LEVEL_N(2, "FIFTH_LEVEL", "位极女卿") |
| | | ,SIX_LEVEL_Y(1, "SIX_LEVEL", "权倾圣主") |
| | | ,SIX_LEVEL_N(2, "SIX_LEVEL", "权倾女帝"); |
| | | |
| | | private int male; |
| | | |
| | | private String code; |
| | | |
| | | private String desc; |
| | | MemberLevelTagDicEnums(int male, String code, String desc) { |
| | | this.male = male; |
| | | this.code = code; |
| | | this.desc = desc; |
| | | } |
| | | |
| | | public static String getDesc(int male, String code) { |
| | | for (MemberLevelTagDicEnums value : values()) { |
| | | if (value.male == male && value.code.equals(code)) { |
| | | return value.desc; |
| | | } |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | } |
| | |
| | | PARTNER_BONUS(5), |
| | | |
| | | /** |
| | | * 获得静态积分 |
| | | */ |
| | | BUY_TC(6), |
| | | |
| | | /** |
| | | * 提现 |
| | | */ |
| | | WITHDRAWAL(8), |
| | |
| | | * 普通商品分红百分比 |
| | | */ |
| | | private Integer normalPer; |
| | | |
| | | /** |
| | | * 普通商品分红百分比 |
| | | */ |
| | | private Integer normalBonus; |
| | | } |
| | |
| | | */ |
| | | private Integer hasSettle; |
| | | |
| | | private BigDecimal staticMulti; |
| | | |
| | | /** |
| | | * 1-会员 2-代理 3-股东 |
| | | */ |
| | | private Integer goodsLevel; |
| | | |
| | | private Integer normalPer; |
| | | |
| | | private Integer normalBonus; |
| | | } |
| | |
| | | List<MallMember> selectMemberAfterLevelList(String level); |
| | | |
| | | List<MallMember> selectAgentOrPartnetMemberList(@Param("memberLevel") Integer memberLevel); |
| | | |
| | | |
| | | Integer selectOwnCntByInviteIdAndAccountLevel(@Param("inviteId") String inviteId, @Param("accountLevel") Integer accountLevel); |
| | | } |
| | |
| | | public void autoUpAgentLevel(Long memberId) { |
| | | log.info("###代理自动升级###"); |
| | | MallMember member = memberMapper.selectById(memberId); |
| | | if (MemberLevelEnum.ZERO_LEVEL.getType().equals(member.getLevel())) { |
| | | return; |
| | | } |
| | | |
| | | MatrixTree tree = MatrixTree.getInstance(); |
| | | MemberNode node = tree.getNode(member.getInviteId()); |
| | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void perkMoneyConsumer(long orderId) { |
| | | long start = System.currentTimeMillis(); |
| | | MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(orderId); |
| | | if(ObjectUtil.isEmpty(mallOrderInfo)){ |
| | | return; |
| | | } |
| | | // if(2 != mallOrderInfo.getStatus()){ |
| | | // return; |
| | | // } |
| | | /** |
| | | * 分享补贴 直推消费额10% |
| | | */ |
| | | BigDecimal amount = mallOrderInfo.getAmount().subtract(mallOrderInfo.getScoreAmount()); |
| | | |
| | | Long memberId = mallOrderInfo.getMemberId(); |
| | | MallMember mallMember = memberMapper.selectById(memberId); |
| | | //补贴对象 直属上级 |
| | | MallMember mallMemberUp = memberMapper.selectInfoByInviteId(mallMember.getReferrerId()); |
| | | if(ObjectUtil.isNotEmpty(mallMemberUp)){ |
| | | //分享补贴百分比 |
| | | DataDictionaryCustom sharePerkDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.SHARE_PERK.getType(), |
| | | DataDictionaryEnum.SHARE_PERK.getCode()); |
| | | String sharePerk = ObjectUtil.isEmpty(sharePerkDic.getValue()) ? "0" : sharePerkDic.getValue(); |
| | | BigDecimal sharePerkPercent = new BigDecimal(sharePerk).abs().divide(new BigDecimal(100)); |
| | | //分享补贴金额 |
| | | BigDecimal sharePerkAmount = amount.multiply(sharePerkPercent).setScale(2, BigDecimal.ROUND_DOWN);; |
| | | |
| | | //所有合伙人补贴至消费礼包的三倍额度需要复购一次。 |
| | | MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallMemberUp.getId()); |
| | | BigDecimal totalScore = mallMemberWallet.getTotalScore(); |
| | | if(totalScore.compareTo(sharePerkAmount) < 0){ |
| | | sharePerkAmount = totalScore; |
| | | } |
| | | if(BigDecimal.ZERO.compareTo(sharePerkAmount) < 0){ |
| | | //减少补贴额度 |
| | | mallMemberWalletMapper.reduceTotalScoreById(sharePerkAmount, mallMemberWallet.getId()); |
| | | |
| | | reduceStar(mallMemberUp.getId(),sharePerkAmount); |
| | | |
| | | mallMemberWalletMapper.addBalanceById(sharePerkAmount, mallMemberWallet.getId()); |
| | | |
| | | // mallMoneyFlowService.addMoneyFlow( |
| | | // mallMemberUp.getId(), |
| | | // sharePerkAmount, |
| | | // MoneyFlowTypeEnum.DYNAMIC_ACHIEVE.getValue(), |
| | | // mallOrderInfo.getOrderNo(), |
| | | // "直推奖", |
| | | // "补贴额度:"+totalScore, |
| | | // memberId, |
| | | // 2, |
| | | // FlowTypeEnum.BALANCE.getValue(), |
| | | // 1); |
| | | } |
| | | } |
| | | /** |
| | | * 星级奖励 |
| | | * 从最顶级级别的合伙人开始补贴 |
| | | * 补贴完,把已经补贴的合伙人加入下一个级别 |
| | | */ |
| | | List<MallMember> sevenLevelRecord = getStarRecord(null, MemberLevelEnum.SEVEN_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_SEVEN.getValue()); |
| | | List<MallMember> sixLevelRecord = getStarRecord(sevenLevelRecord, MemberLevelEnum.SIX_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_SIX.getValue()); |
| | | List<MallMember> fifthLevelRecord = getStarRecord(sixLevelRecord, MemberLevelEnum.FIFTH_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_FIVE.getValue()); |
| | | List<MallMember> fourLevelRecord = getStarRecord(fifthLevelRecord, MemberLevelEnum.FOUR_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_FOUR.getValue()); |
| | | List<MallMember> thirdLevelRecord = getStarRecord(fourLevelRecord, MemberLevelEnum.THIRD_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_THREE.getValue()); |
| | | List<MallMember> secondLevelRecord = getStarRecord(thirdLevelRecord, MemberLevelEnum.SECOND_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_TWO.getValue()); |
| | | |
| | | /** |
| | | * 团队补贴 |
| | | */ |
| | | //团队补贴百分比 |
| | | DataDictionaryCustom teamPerkDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.TEAM_PERK.getType(), |
| | | DataDictionaryEnum.TEAM_PERK.getCode()); |
| | | String teamPerk = ObjectUtil.isEmpty(teamPerkDic.getValue()) ? "0" : teamPerkDic.getValue(); |
| | | BigDecimal teamPerkPercent = new BigDecimal(teamPerk).abs().divide(new BigDecimal(100)); |
| | | //分享补贴金额 |
| | | BigDecimal teamPerkAmount = amount.multiply(teamPerkPercent); |
| | | //团队补贴对象 |
| | | List<MallMember> mallMemberTeamPerkList = mallMemberTeamPerkListInfo(memberId); |
| | | if(CollUtil.isNotEmpty(mallMemberTeamPerkList)){ |
| | | List<Long> mallMemberTeamPerkIds = mallMemberTeamPerkList.stream().map(MallMember::getId).collect(Collectors.toList()); |
| | | List<MallMemberWallet> mallMemberWallets = mallMemberWalletMapper.selectMemberWalletsByIds(mallMemberTeamPerkIds); |
| | | flowTotalScoreBalance( |
| | | mallMemberWallets, |
| | | teamPerkAmount, |
| | | MoneyFlowTypeEnum.TEAM_PERK.getValue(), |
| | | mallOrderInfo.getOrderNo(), |
| | | memberId |
| | | ); |
| | | } |
| | | |
| | | long end = System.currentTimeMillis(); |
| | | log.info("============订单:{},时间:{}===========",mallOrderInfo.getOrderNo(),(end - start)/1000); |
| | | MallMqRecord mallMqRecord = mallMqRecordMapper.selectByOrderId(orderId); |
| | | if(ObjectUtil.isNotEmpty(mallMqRecord)){ |
| | | mallMqRecord.setState(1); |
| | | mallMqRecordMapper.updateById(mallMqRecord); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | orderItem.setSkuImage(sku.getSkuImage()); |
| | | orderItem.setIsNormal(mallGoods.getIsNormal()); |
| | | orderItem.setCostPrice(sku.getCostPrice()); |
| | | orderItem.setStaticMulti(mallGoods.getStaticMulti()); |
| | | orderItem.setGoodsLevel(mallGoods.getGoodsLevel()); |
| | | orderItem.setNormalBonus(mallGoods.getNormalBonus()); |
| | | orderItem.setNormalPer(mallGoods.getNormalPer()); |
| | | |
| | | |
| | | total = total.add(amount); |
| | | carriage = carriage.add(mallGoods.getCarriage()); |
| | |
| | | orderInfo.setPayResult("1"); |
| | | this.baseMapper.updateById(orderInfo); |
| | | |
| | | commonService.changeWallet(orderInfo.getId(), FlowTypeEnum.BALANCE.getValue()); |
| | | // 商品级别 会员/代理/股东 |
| | | int goodsLevel = 0; |
| | | BigDecimal score = BigDecimal.ZERO; |
| | | for (MallOrderItem item : orderInfo.getItems()) { |
| | | // 计算静态倍数 |
| | | if(item.getIsNormal() == 2) { |
| | | score = score.add(item.getPrice().multiply(item.getStaticMulti())); |
| | | } |
| | | |
| | | //发送直推返利消息 |
| | | agentProducer.sendOrderReturn(orderInfo.getId()); |
| | | // 判断会员层级 |
| | | if (item.getIsNormal() == 2 && goodsLevel > item.getGoodsLevel()) { |
| | | goodsLevel = item.getGoodsLevel(); |
| | | } |
| | | } |
| | | |
| | | // 根据用户购买的商品设置其等级 |
| | | member.setLevel(GoodsToLevelEnums.getLevelByAccountLevel(goodsLevel)); |
| | | member.setAccountLevel(goodsLevel); |
| | | this.memberMapper.updateById(member); |
| | | |
| | | memberWalletService.add(score, member.getId(), "score"); |
| | | |
| | | if (orderInfo.getScoreCnt().compareTo(BigDecimal.ZERO) > 0) { |
| | | int reduce = memberWalletService.reduce(orderInfo.getScoreCnt(), member.getId(), "prizeScore"); |
| | | if (reduce == 2) { |
| | | throw new FebsException("积分不足"); |
| | | } |
| | | mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getScoreCnt().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.PRIZE_SCORE.getValue()); |
| | | } |
| | | |
| | | mallMoneyFlowService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.BUY_TC.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue()); |
| | | mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); |
| | | |
| | | //发送代理自动升级消息 |
| | | agentProducer.sendAutoLevelUpMsg(member.getId()); |
| | | //发送直推返利消息 |
| | | agentProducer.sendOrderReturn(orderInfo.getId()); |
| | | break; |
| | | case "4": |
| | | if (orderInfo.getOrderType() != 2) { |
| | |
| | | map.put("orderNo", orderInfo.getOrderNo()); |
| | | map.put("orderId", orderInfo.getId()); |
| | | map.put("rcResult", rcResult); |
| | | |
| | | return map; |
| | | } |
| | | |
| | |
| | | if (reduce == 2) { |
| | | throw new FebsException("余额不足"); |
| | | } |
| | | |
| | | |
| | | return orderInfo.getOrderNo(); |
| | | } |
| | | |
| | |
| | | 获取单个商品的折扣积分数量 |
| | | = 现价 * 数量 * 折扣现金比例 |
| | | */ |
| | | BigDecimal scorePercent = new BigDecimal(mallGoods.getScorePercent()).multiply(new BigDecimal(0.01)); |
| | | BigDecimal scorePercent = new BigDecimal(mallGoods.getScorePercent()).multiply(BigDecimal.valueOf(0.01)); |
| | | BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt())).multiply(scorePercent); |
| | | total = total.add(amount); |
| | | } |
| | |
| | | package cc.mrbird.febs.mall.service.impl; |
| | | |
| | | import cc.mrbird.febs.common.enumerates.*; |
| | | import cc.mrbird.febs.common.utils.AppContants; |
| | | import cc.mrbird.febs.common.utils.MallUtils; |
| | | import cc.mrbird.febs.common.utils.RedisUtils; |
| | | import cc.mrbird.febs.mall.dto.ScorePoorDto; |
| | | import cc.mrbird.febs.mall.entity.*; |
| | | import cc.mrbird.febs.mall.mapper.*; |
| | | import cc.mrbird.febs.mall.service.*; |
| | | import cc.mrbird.febs.mall.vo.AdminTeamEqualsPerkVo; |
| | | import cc.mrbird.febs.rabbit.producter.AgentProducer; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateField; |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUnit; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import io.swagger.models.auth.In; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @author wzy |
| | |
| | | log.info("积分订单无返利"); |
| | | return; |
| | | } |
| | | BigDecimal indirectPer = BigDecimal.valueOf(0.2); |
| | | BigDecimal indirectPer = BigDecimal.valueOf(0.25); |
| | | BigDecimal indirectPer2 = BigDecimal.valueOf(0.15); |
| | | |
| | | MallMember member = mallMemberMapper.selectById(orderInfo.getMemberId()); |
| | | |
| | | // 父级会员 |
| | | MallMember parentMember = mallMemberMapper.selectInfoByInviteId(member.getReferrerId()); |
| | | if (parentMember.getAccountLevel() == 0 || MemberLevelEnum.ZERO_LEVEL.getType().equals(parentMember.getLevel())) { |
| | | log.info("上级:{}未购买会员套餐,无返利", parentMember.getInviteId()); |
| | | return; |
| | | } |
| | | |
| | | // 父级会员直推人数 |
| | | Integer directCnt = mallMemberMapper.selectOwnCntByInviteId(parentMember.getInviteId()); |
| | | Integer directCnt = mallMemberMapper.selectOwnCntByInviteIdAndAccountLevel(parentMember.getInviteId(), parentMember.getAccountLevel()); |
| | | List<DataDictionaryCustom> dataDices = dataDictionaryCustomMapper.selectDicByType(DataDictionaryEnum.DIRECT_BONUS_SETTING.getType()); |
| | | |
| | | directCnt = directCnt == null ? 0 : directCnt; |
| | |
| | | |
| | | // 全网分红 |
| | | BigDecimal waitToBonus = systemSetting.getAllBonus().multiply(new BigDecimal(dic.getValue()).divide(hundred, 2, RoundingMode.HALF_UP)); |
| | | List<MallMember> mallMembers = mallMemberMapper.selectMemberAfterLevelList(MemberLevelEnums.FIRST_LEVEL_Y.getCode()); |
| | | List<MallMember> mallMembers = mallMemberMapper.selectMemberAfterLevelList(MemberLevelEnum.FIRST_LEVEL.getType()); |
| | | if (CollUtil.isEmpty(mallMembers) || waitToBonus.compareTo(BigDecimal.ZERO) < 1) { |
| | | log.info("待分红金额不足或会员不足"); |
| | | return; |
| | |
| | | package cc.mrbird.febs.mall.vo; |
| | | |
| | | import cc.mrbird.febs.common.enumerates.AgentLevelEnum; |
| | | import cc.mrbird.febs.common.enumerates.MemberLevelEnums; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cc.mrbird.febs.common.enumerates.MemberLevelTagDicEnums; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | |
| | | |
| | | public String getLevelName() { |
| | | if (sex != null) { |
| | | return MemberLevelEnums.getDesc(sex, level); |
| | | return MemberLevelTagDicEnums.getDesc(sex, level); |
| | | } |
| | | |
| | | return null; |
| | |
| | | * @date 2021-09-25 |
| | | **/ |
| | | @Slf4j |
| | | @Component |
| | | //@Component |
| | | public class AgentConsumer { |
| | | |
| | | @Autowired |
| | |
| | | private IAgentService agentService; |
| | | @Autowired |
| | | private IMemberProfitService memberProfitService; |
| | | |
| | | @RabbitListener(queues = QueueConstants.QUEUE_DEFAULT) |
| | | public void agentReturn(Message message, Channel channel) { |
| | | log.info("消费者:{}", new String(message.getBody())); |
| | | } |
| | | |
| | | @RabbitListener(queues = "meye_queue_order_delay") |
| | | public void orderCancelDelay(String id) { |
| | |
| | | } |
| | | } |
| | | |
| | | @RabbitListener(queues = QueueConstants.AGENT_RETURN_MONEY) |
| | | public void agentReturnMoney(String orderId) { |
| | | log.info("收到返利消息:{}", orderId); |
| | | try { |
| | | agentService.returnMoneyToAgent(Long.parseLong(orderId)); |
| | | } catch (Exception e) { |
| | | log.error("返利异常", e); |
| | | } |
| | | } |
| | | |
| | | @RabbitListener(queues = QueueConstants.ORDER_RETURN_MONEY) |
| | | public void orderReturnMoney(String orderId) { |
| | | log.info("收到订单返利消息:{}", orderId); |
| | |
| | | } |
| | | } |
| | | |
| | | @RabbitListener(queues = QueueConstants.PERK_MONEY) |
| | | public void perkMoneyConsumer(String id) { |
| | | log.info("收到补贴消息:{}", id); |
| | | try { |
| | | agentService.perkMoneyConsumer(Long.parseLong(id)); |
| | | } catch (Exception e) { |
| | | log.error("用户补贴异常", e); |
| | | // todo 更新表 |
| | | |
| | | } |
| | | } |
| | | |
| | | @RabbitListener(queues = QueueConstants.FORCE_VOUCHER_SALE) |
| | | public void forceVoucherSaleConsumer(String price) { |
| | | log.info("收到强制卖出消息,价格:{}",price); |
| | | try { |
| | | // memberProfitService.selaHalfVoucher(prisce); |
| | | } catch (Exception e) { |
| | | log.error("强制卖出异常", e); |
| | | // todo 更新表 |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | a.account_level = 3 |
| | | </if> |
| | | </select> |
| | | |
| | | <select id="selectOwnCntByInviteIdAndAccountLevel" resultType="cc.mrbird.febs.mall.entity.MallMember"> |
| | | select IFNULL(count(1),0) from mall_member x where x.referrer_id=#{inviteId} |
| | | and x.level != 'ZERO_LEVEL' |
| | | <if test="accountLevel == 2"> |
| | | and x.account_level = 2 |
| | | </if> |
| | | <if test="accountLevel == 3"> |
| | | and x.accountLevel in (2, 3) |
| | | </if> |
| | | </select> |
| | | </mapper> |
| | |
| | | <div class="layui-form-mid layui-word-aux">普通商品直推奖励</div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item normal-set"> |
| | | <label class="layui-form-label febs-form-item-require">分红比例(%)</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="normalPer" placeholder="请输入分红比例" |
| | | autoComplete="off" class="layui-input"> |
| | | <div class="layui-form-mid layui-word-aux">普通商品分红,输入0则不分红。</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-tab-item"> |
| | |
| | | <div class="layui-form-mid layui-word-aux">普通商品直推奖励</div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-form-item normal-set"> |
| | | <label class="layui-form-label febs-form-item-require">分红比例(%)</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="normalPer" placeholder="请输入分红比例" |
| | | autoComplete="off" class="layui-input"> |
| | | <div class="layui-form-mid layui-word-aux">普通商品分红,输入0则不分红。</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-tab-item"> |