|  |  | 
 |  |  |             log.info("/ /`  / / \\ | |\\/| | |_) | |   | |_   | |  | |_  "); | 
 |  |  |             log.info("\\_\\_, \\_\\_/ |_|  | |_|   |_|__ |_|__  |_|  |_|__ "); | 
 |  |  |             log.info("                                                      "); | 
 |  |  |             log.info("美澳商城 权限系统启动完毕,地址:{}", url); | 
 |  |  |             log.info("HNTO商城 权限系统启动完毕,地址:{}", url); | 
 |  |  |  | 
 |  |  |             boolean auto = febsProperties.isAutoOpenBrowser(); | 
 |  |  |             if (auto && StringUtils.equalsIgnoreCase(active, FebsConstant.DEVELOP)) { | 
 
 |  |  | 
 |  |  |  | 
 |  |  | import java.math.BigDecimal; | 
 |  |  | import java.util.Date; | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | public interface MallAchieveRecordMapper extends BaseMapper<MallAchieveRecord> { | 
 |  |  |  | 
 |  |  |     BigDecimal selectAchieveTotal(@Param("type") String type, @Param("date") Date date); | 
 |  |  |  | 
 |  |  |     List<MallAchieveRecord> selectByMemberId( @Param("memberId")Long memberId); | 
 |  |  | } | 
 
 |  |  | 
 |  |  |  | 
 |  |  |     void autoUpAgentLevel(Long memberId); | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 1、购买人获得固定比例的积分 | 
 |  |  |      * 2、直推获取8%的现金->余额,4%的积分->积分 | 
 |  |  |      * 3、不同代理级别获取不用的比例的现金和积分 | 
 |  |  |      * 4、董事享受全公司入单分红2%加权(现金) | 
 |  |  |      * 5、合伙人享全公司入单分红5%加权(现金) | 
 |  |  |      * 6、入单后,50%入现金池 35%的积分入积分池,更新价格 | 
 |  |  |      */ | 
 |  |  |     void returnMoneyToAgent(Long orderId); | 
 |  |  |  | 
 |  |  |     void rankReturnMoney(Long orderId); | 
 
 |  |  | 
 |  |  |  | 
 |  |  |     void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, Long rtMemberId, Integer flowType); | 
 |  |  |  | 
 |  |  |     void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, Long rtMemberId, Integer flowType, Integer isReturn); | 
 |  |  |  | 
 |  |  | } | 
 
 |  |  | 
 |  |  |                 amountTC, | 
 |  |  |                 "score", | 
 |  |  |                 MoneyFlowTypeEnum.BUY_SET_MEAL_PERK.getValue(), | 
 |  |  |                 memberId, | 
 |  |  |                 FlowTypeEnum.SCORE.getValue(), | 
 |  |  |                 orderNo); | 
 |  |  |  | 
 |  |  | 
 |  |  |                     amountTC, | 
 |  |  |                     "balance", | 
 |  |  |                     MoneyFlowTypeEnum.DIRECT_CASH_PERK.getValue(), | 
 |  |  |                     memberId, | 
 |  |  |                     FlowTypeEnum.BALANCE.getValue(), | 
 |  |  |                     orderNo); | 
 |  |  |  | 
 |  |  | 
 |  |  |                     amountTC, | 
 |  |  |                     "score", | 
 |  |  |                     MoneyFlowTypeEnum.DIRECT_SCORE_PERK.getValue(), | 
 |  |  |                     memberId, | 
 |  |  |                     FlowTypeEnum.SCORE.getValue(), | 
 |  |  |                     orderNo); | 
 |  |  |         } | 
 |  |  | 
 |  |  |                     amountTC, | 
 |  |  |                     "balance", | 
 |  |  |                     MoneyFlowTypeEnum.DIRECTOR_CASH_PERK.getValue(), | 
 |  |  |                     memberId, | 
 |  |  |                     FlowTypeEnum.BALANCE.getValue(), | 
 |  |  |                     orderNo); | 
 |  |  |         } | 
 |  |  | 
 |  |  |                     amountTC, | 
 |  |  |                     "balance", | 
 |  |  |                     MoneyFlowTypeEnum.PARTNER_CASH_PERK.getValue(), | 
 |  |  |                     memberId, | 
 |  |  |                     FlowTypeEnum.BALANCE.getValue(), | 
 |  |  |                     orderNo); | 
 |  |  |         } | 
 |  |  | 
 |  |  |                                     teamPerkMemberId, | 
 |  |  |                                     "balance", | 
 |  |  |                                     MoneyFlowTypeEnum.AGENT_CASH_PERK.getValue(), | 
 |  |  |                                     memberId, | 
 |  |  |                                     FlowTypeEnum.BALANCE.getValue(), | 
 |  |  |                                     orderNo); | 
 |  |  |                         } | 
 |  |  | 
 |  |  |                                     teamPerkMemberId, | 
 |  |  |                                     "score", | 
 |  |  |                                     MoneyFlowTypeEnum.AGENT_SCORE_PERK.getValue(), | 
 |  |  |                                     memberId, | 
 |  |  |                                     FlowTypeEnum.SCORE.getValue(), | 
 |  |  |                                     orderNo); | 
 |  |  |                         } | 
 |  |  | 
 |  |  |      * @param flowType 流水分类 | 
 |  |  |      * @param orderNo 订单编号 | 
 |  |  |      */ | 
 |  |  |     private void perkMember(Long memberId,PerkEnum perkEnum,BigDecimal amountTC,String walletField,int type,int flowType,String orderNo){ | 
 |  |  |     private void perkMember(Long memberId,PerkEnum perkEnum,BigDecimal amountTC,String walletField,int type,Long rtMemberId,int flowType,String orderNo){ | 
 |  |  |         DataDictionaryCustom perkEnumDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( | 
 |  |  |                 perkEnum.getType(), | 
 |  |  |                 perkEnum.getCode()); | 
 |  |  | 
 |  |  |                 perkEnumDicPercentPerk = perkEnumDicPercentPerk.divide(poolScorePrice, 2 ,BigDecimal.ROUND_DOWN); | 
 |  |  |             } | 
 |  |  |             if(perkEnumDicPercentPerk.compareTo(BigDecimal.ZERO) > 0){ | 
 |  |  |                 addWalletInfoAndMoneyFlow(perkEnumDicPercentPerk,memberId,walletField,type,flowType,orderNo); | 
 |  |  |                 addWalletInfoAndMoneyFlow(perkEnumDicPercentPerk,memberId,walletField,type,rtMemberId,flowType,orderNo); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | 
 |  |  |      * @param flowType | 
 |  |  |      * @param orderNo | 
 |  |  |      */ | 
 |  |  |     private void addWalletInfoAndMoneyFlow(BigDecimal amount,Long memberId,String walletField,int type,int flowType,String orderNo){ | 
 |  |  |     private void addWalletInfoAndMoneyFlow(BigDecimal amount,Long memberId,String walletField,int type,Long rtMemberId,int flowType,String orderNo){ | 
 |  |  |         //增加 | 
 |  |  |         iApiMallMemberWalletService.add(amount,memberId,walletField); | 
 |  |  |         //增加一个流水记录 | 
 |  |  | 
 |  |  |                 amount, | 
 |  |  |                 type, | 
 |  |  |                 orderNo, | 
 |  |  |                 rtMemberId, | 
 |  |  |                 flowType, | 
 |  |  |                 AppContants.IS_RETURN_YES); | 
 |  |  |     } | 
 |  |  | 
 |  |  |      * @param flowType  流水分类 | 
 |  |  |      * @param orderNo   订单编号 | 
 |  |  |      */ | 
 |  |  |     private void perkMembersLevel(List<MallMember> mallMembers,PerkEnum perkEnum,BigDecimal amountTC,String walletField,int type,int flowType,String orderNo){ | 
 |  |  |     private void perkMembersLevel(List<MallMember> mallMembers,PerkEnum perkEnum,BigDecimal amountTC,String walletField,int type,Long rtMemberId,int flowType,String orderNo){ | 
 |  |  |         DataDictionaryCustom perkEnumDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( | 
 |  |  |                 perkEnum.getType(), | 
 |  |  |                 perkEnum.getCode()); | 
 |  |  | 
 |  |  |             if(perkEnumDicPercentPerk.compareTo(BigDecimal.ZERO) > 0){ | 
 |  |  |                 for(MallMember mallMember : mallMembers){ | 
 |  |  |                     Long memberId = mallMember.getId(); | 
 |  |  |                     addWalletInfoAndMoneyFlow(perkEnumDicPercentPerk,memberId,walletField,type,flowType,orderNo); | 
 |  |  |                     addWalletInfoAndMoneyFlow(perkEnumDicPercentPerk,memberId,walletField,type,rtMemberId,flowType,orderNo); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 
 |  |  | 
 |  |  | package cc.mrbird.febs.mall.service.impl; | 
 |  |  |  | 
 |  |  | import cc.mrbird.febs.common.entity.FebsResponse; | 
 |  |  | import cc.mrbird.febs.common.enumerates.AgentLevelEnum; | 
 |  |  | import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; | 
 |  |  | import cc.mrbird.febs.common.enumerates.FlowTypeEnum; | 
 |  |  | import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; | 
 |  |  | import cc.mrbird.febs.common.enumerates.*; | 
 |  |  | import cc.mrbird.febs.common.exception.FebsException; | 
 |  |  | import cc.mrbird.febs.common.utils.*; | 
 |  |  | import cc.mrbird.febs.mall.conversion.MallGoodsConversion; | 
 |  |  | 
 |  |  |     private final MallShopApplyMapper mallShopApplyMapper; | 
 |  |  |     private final MallRegisterAppealMapper mallRegisterAppealMapper; | 
 |  |  |     private final MallMemberBankMapper mallMemberBankMapper; | 
 |  |  |     private final MallAchieveRecordMapper mallAchieveRecordMapper; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Value("${spring.profiles.active}") | 
 |  |  | 
 |  |  |             if (inviteMember == null) { | 
 |  |  |                 throw new FebsException("邀请码不存在"); | 
 |  |  |             } | 
 |  |  |             //购买套餐产生业绩,才能推广会员 | 
 |  |  |             List<MallAchieveRecord> mallAchieveRecordList = mallAchieveRecordMapper.selectByMemberId(inviteMember.getId()); | 
 |  |  |             if(CollUtil.isEmpty(mallAchieveRecordList)){ | 
 |  |  |                 throw new FebsException("非会员不能推广"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             mallMember.setReferrerId(registerDto.getInviteId()); | 
 |  |  |  | 
 |  |  | 
 |  |  |         mallMember.setName(registerDto.getName()); | 
 |  |  |         mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_ENABLE); | 
 |  |  |         mallMember.setAccountType(MallMember.ACCOUNT_TYPE_NORMAL); | 
 |  |  |         mallMember.setLevel(AgentLevelEnum.ZERO_LEVEL.name()); | 
 |  |  |         mallMember.setLevel(MemberLevelEnum.NORMAL.name()); | 
 |  |  |         mallMember.setSex("男"); | 
 |  |  |         mallMember.setBindPhone(registerDto.getAccount()); | 
 |  |  |  | 
 
 |  |  | 
 |  |  |     private final AgentProducer agentProducer; | 
 |  |  |     private final IPayService payService; | 
 |  |  |     private final IMallAchieveService mallAchieveService; | 
 |  |  |     private final MallAchieveRecordMapper mallAchieveRecordMapper; | 
 |  |  |     private final UnipayService unipayService; | 
 |  |  |  | 
 |  |  |     private final MallMemberBankSignMapper mallMemberBankSignMapper; | 
 |  |  | 
 |  |  |                 orderInfo.setPayResult("1"); | 
 |  |  |  | 
 |  |  |                 boolean hasTc = false; | 
 |  |  |                 // 静态倍数 | 
 |  |  |                 BigDecimal achieveAmount = BigDecimal.ZERO; | 
 |  |  |                 List<MallOrderItem> orderItems = this.baseMapper.getMallOrderItemByOrderId(orderInfo.getId()); | 
 |  |  |                 if (CollUtil.isNotEmpty(orderItems)) { | 
 |  |  |                     for (MallOrderItem orderItem : orderItems) { | 
 |  |  |                         MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId()); | 
 |  |  |                         BigDecimal score = BigDecimal.ZERO; | 
 |  |  |                         MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId()); | 
 |  |  |                         if (mallGoods.getIsNormal() == 2) { | 
 |  |  |                             hasTc = true; | 
 |  |  |                             score = sku.getPresentPrice().multiply(mallGoods.getStaticMulti()).multiply(new BigDecimal(orderItem.getCnt())); | 
 |  |  | //                            BigDecimal staticMulti = mallGoods.getStaticMulti() == null ? BigDecimal.ZERO : mallGoods.getStaticMulti(); | 
 |  |  | //                            score = sku.getPresentPrice().multiply(staticMulti); | 
 |  |  |                             // 普通商品也及时结算,不再10天结算 | 
 |  |  |                         } else { | 
 |  |  |                             score = sku.getPresentPrice(); | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |                         if (score.compareTo(BigDecimal.ZERO) > 0) { | 
 |  |  |                             memberWalletService.add(score, member.getId(), "score"); | 
 |  |  |                             mallMoneyFlowService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue()); | 
 |  |  |  | 
 |  |  |                             // 添加业绩 | 
 |  |  |                             mallAchieveService.add(orderItem.getId()); | 
 |  |  |                             achieveAmount = achieveAmount.add(sku.getPresentPrice().multiply(new BigDecimal(orderItem.getCnt()))); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 // 购买套餐后,升级为普通会员 | 
 |  |  |  | 
 |  |  |                 if (hasTc) { | 
 |  |  |                     MallMember mallMember = memberMapper.selectById(member.getId()); | 
 |  |  |                     if (AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())) { | 
 |  |  |                         mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name()); | 
 |  |  |                         memberMapper.updateById(mallMember); | 
 |  |  |                     if(achieveAmount.compareTo(BigDecimal.ZERO) > 0) { | 
 |  |  |                         // 添加业绩 | 
 |  |  |                         MallAchieveRecord mallAchieveRecord = new MallAchieveRecord(); | 
 |  |  |                         mallAchieveRecord.setMemberId(member.getId()); | 
 |  |  |                         mallAchieveRecord.setAmount(achieveAmount); | 
 |  |  |                         mallAchieveRecord.setAchieveTime(orderInfo.getPayTime()); | 
 |  |  |                         mallAchieveRecord.setOrderId(orderInfo.getId()); | 
 |  |  |                         mallAchieveRecord.setIsNormal(2); | 
 |  |  |                         mallAchieveRecord.setPayTime(orderInfo.getPayTime()); | 
 |  |  |                         mallAchieveRecordMapper.insert(mallAchieveRecord); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); | 
 |  |  |                 agentProducer.sendAutoLevelUpMsg(member.getId()); | 
 |  |  |                 agentProducer.sendOrderReturn(orderInfo.getId()); | 
 |  |  | //                agentProducer.sendOrderReturn(orderInfo.getId()); | 
 |  |  |                 agentProducer.sendReturnMoneyMsg(orderInfo.getId()); | 
 |  |  |                 break; | 
 |  |  |             case "4": | 
 
 |  |  | 
 |  |  |     public void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, Long rtMemberId, Integer flowType) { | 
 |  |  |         this.addMoneyFlow(memberId, amount, type, orderNo, null, null, rtMemberId, null, flowType, null); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, Long rtMemberId, Integer flowType, Integer isReturn) { | 
 |  |  |         this.addMoneyFlow(memberId, amount, type, orderNo, null, null, rtMemberId, null, flowType,isReturn); | 
 |  |  |  | 
 |  |  |     } | 
 |  |  | } | 
 
 |  |  | 
 |  |  |  **/ | 
 |  |  | public class ExchangeConstants { | 
 |  |  |  | 
 |  |  |     public static final String EXCHANGE_DEFAULT = "exchange_default"; | 
 |  |  |     public static final String EXCHANGE_DEFAULT = "exchange_h_default"; | 
 |  |  | } | 
 
 |  |  | 
 |  |  |  **/ | 
 |  |  | public class QueueConstants { | 
 |  |  |  | 
 |  |  |     public static final String QUEUE_DEFAULT = "queue_default"; | 
 |  |  |     public static final String AGENT_AUTO_LEVEL_UP = "queue_agent_auto_level_up"; | 
 |  |  |     public static final String QUEUE_DEFAULT = "queue_h_default"; | 
 |  |  |     public static final String AGENT_AUTO_LEVEL_UP = "queue_h_agent_auto_level_up"; | 
 |  |  |     public static final String AGENT_RETURN_MONEY = "queue_h_agent_return_money"; | 
 |  |  |     public static final String ORDER_RETURN_MONEY = "queue_order_return_money"; | 
 |  |  |     public static final String ORDER_RETURN_MONEY = "queue_h_order_return_money"; | 
 |  |  | } | 
 
 |  |  | 
 |  |  |  **/ | 
 |  |  | public class RouteKeyConstants { | 
 |  |  |  | 
 |  |  |     public static final String ROUTE_KEY_DEFAULT = "route_key_default"; | 
 |  |  |     public static final String ROUTE_KEY_DEFAULT = "route_key_h_default"; | 
 |  |  | } | 
 
 |  |  | 
 |  |  | @Getter | 
 |  |  | public enum RabbitQueueEnum { | 
 |  |  |  | 
 |  |  |     DEFAULT("exchange_default", "route_key_default", "queue_default"), | 
 |  |  |     DEFAULT("exchange_h_default", "route_key_h_default", "queue_h_default"), | 
 |  |  |  | 
 |  |  |     ORDER_CANCEL_DELAY_TTL("exchange_order_delay_ttl", "route_key_order_delay_ttl", "queue_order_delay_ttl"), | 
 |  |  |     ORDER_CANCEL_DELAY("exchange_order_delay", "route_key_order_delay", "queue_order_delay"), | 
 |  |  |     ORDER_CANCEL_DELAY_TTL("exchange_h_order_delay_ttl", "route_key_h_order_delay_ttl", "queue_h_order_delay_ttl"), | 
 |  |  |     ORDER_CANCEL_DELAY("exchange_h_order_delay", "route_key_h_order_delay", "queue_h_order_delay"), | 
 |  |  |  | 
 |  |  |     AGENT_RETURN_MONEY("exchange_h_agent_return_money", "route_key_h_agent_return_money", "queue_h_agent_return_money"), | 
 |  |  |  | 
 |  |  |     ORDER_RETURN_MONEY("exchange_order_return_money", "route_key_order_return_money", "queue_order_return_money"); | 
 |  |  |     ORDER_RETURN_MONEY("exchange_h_order_return_money", "route_key_h_order_return_money", "queue_h_order_return_money"); | 
 |  |  |  | 
 |  |  |     private String exchange; | 
 |  |  |  | 
 
 |  |  | 
 |  |  |  | 
 |  |  |     <select id="getAgentLevelOption" resultType="cc.mrbird.febs.mall.vo.AdminAgentLevelOptionTreeVo"> | 
 |  |  |         select a.code id,a.description name from data_dictionary_custom a | 
 |  |  |         where a.type='AGENT_LEVEL' and a.code != 'ZERO_LEVEL' | 
 |  |  |         where a.type='AGENT_PERK_SET' | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |     <select id="getRankAwardUpdateInfoById" resultType="cc.mrbird.febs.mall.vo.AdminRankAwardUpdateInfoVo"> | 
 
 |  |  | 
 |  |  |         </if> | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |     <select id="selectByMemberId" resultType="cc.mrbird.febs.mall.entity.MallAchieveRecord"> | 
 |  |  |         select | 
 |  |  |                * | 
 |  |  |         from mall_achieve_record | 
 |  |  |         where member_id = #{memberId} | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  | </mapper> | 
 
 |  |  | 
 |  |  | <mapper namespace="cc.mrbird.febs.mall.mapper.MallMemberMapper"> | 
 |  |  |  | 
 |  |  |     <select id="selectMallMemberListInPage" resultType="cc.mrbird.febs.mall.entity.MallMember"> | 
 |  |  |         SELECT m.*,a.name referrerName,IFNULL(c.balance,0) balance,IFNULL(c.score,0) score,IFNULL(c.prize_score,0) prizeScore,IFNULL(c.commission,0) commission | 
 |  |  |         ,d.description levelName | 
 |  |  |         SELECT | 
 |  |  |                m.*, | 
 |  |  |                a.name referrerName, | 
 |  |  |                IFNULL(c.balance,0) balance, | 
 |  |  |                IFNULL(c.score,0) score, | 
 |  |  |                IFNULL(c.prize_score,0) prizeScore, | 
 |  |  |                IFNULL(c.commission,0) commission, | 
 |  |  |                d.code levelName | 
 |  |  |         FROM mall_member m | 
 |  |  |         left join mall_member a on m.referrer_id = a.invite_id | 
 |  |  |         LEFT JOIN mall_member_wallet c on c.member_id = m.id | 
 |  |  |         LEFT JOIN data_dictionary_custom d on d.code = m.level and type='AGENT_LEVEL' | 
 |  |  |         LEFT JOIN data_dictionary_custom d on d.code = m.level | 
 |  |  |         <where> | 
 |  |  |             <if test="record != null" > | 
 |  |  |                 <if test="record.name!=null and record.name!=''"> | 
 
 |  |  | 
 |  |  | <html xmlns:th="http://www.thymeleaf.org"> | 
 |  |  | <head> | 
 |  |  |     <meta charset="utf-8"> | 
 |  |  |     <title>美澳商城 权限系统</title> | 
 |  |  |     <title>HNTO商城 权限系统</title> | 
 |  |  |     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> | 
 |  |  |     <meta name="renderer" content="webkit"> | 
 |  |  |     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> | 
 
 |  |  | 
 |  |  | <html xmlns:th="http://www.thymeleaf.org"> | 
 |  |  | <head> | 
 |  |  |     <meta charset="utf-8"> | 
 |  |  |     <title>美澳商城 权限系统</title> | 
 |  |  |     <title>HNTO商城 权限系统</title> | 
 |  |  |     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> | 
 |  |  |     <meta name="renderer" content="webkit"> | 
 |  |  |     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> | 
 
 |  |  | 
 |  |  | <html xmlns:th="http://www.thymeleaf.org"> | 
 |  |  | <head> | 
 |  |  |     <meta charset="utf-8"> | 
 |  |  |     <title>美澳商城 权限系统</title> | 
 |  |  |     <title>HNTO商城 权限系统</title> | 
 |  |  |     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> | 
 |  |  |     <meta name="renderer" content="webkit"> | 
 |  |  |     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> | 
 
 |  |  | 
 |  |  |         <div class="layui-side-scroll"> | 
 |  |  |             <div class="layui-logo" style="cursor: pointer"> | 
 |  |  |                 <img data-th-src="@{febs/images/logo.png}"> | 
 |  |  |                 <span>美澳商城 权限系统</span> | 
 |  |  |                 <span>HNTO商城 权限系统</span> | 
 |  |  |             </div> | 
 |  |  |             <script | 
 |  |  |                     type="text/html" | 
 
 |  |  | 
 |  |  | <html xmlns:th="http://www.thymeleaf.org"> | 
 |  |  | <head> | 
 |  |  |     <meta charset="utf-8"> | 
 |  |  |     <title>美澳商城 权限系统</title> | 
 |  |  |     <title>HNTO商城 权限系统</title> | 
 |  |  |     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> | 
 |  |  |     <meta name="renderer" content="webkit"> | 
 |  |  |     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> | 
 |  |  | 
 |  |  |         <div class="layui-container"> | 
 |  |  |             <div class="layui-row"> | 
 |  |  |                 <div class="layui-col-xs12 layui-col-lg4 layui-col-lg-offset4 febs-tc"> | 
 |  |  |                     <div class="layui-logo"><span><b>美澳商城</b> 权限系统</span></div> | 
 |  |  |                     <div class="layui-logo"><span><b>HNTO商城</b> 权限系统</span></div> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="layui-col-xs12 layui-col-lg4 layui-col-lg-offset4" id="login-div"> | 
 |  |  |                     <div class="layui-form" lay-filter="login-form"> | 
 
 |  |  | 
 |  |  |         </div> | 
 |  |  |         <div class="layui-form-item"> | 
 |  |  |             <div class="layui-inline"> | 
 |  |  |                 <label class="layui-form-label">代理级别:</label> | 
 |  |  |                 <label class="layui-form-label">级别:</label> | 
 |  |  |                 <div class="layui-input-inline"> | 
 |  |  |                     <select lay-verify="required" name="levelCode" class="agent-level-set-level" id="levelSet"> | 
 |  |  |                         <option value="">请选择</option> | 
 
 |  |  | 
 |  |  |                             <div class="layui-col-md10"> | 
 |  |  |                                 <div class="layui-form-item"> | 
 |  |  |                                     <div class="layui-inline"> | 
 |  |  |                                         <label class="layui-form-label">名称:</label> | 
 |  |  |                                         <div class="layui-input-inline"> | 
 |  |  |                                             <input type="text" placeholder="用户名" name="name" autocomplete="off" class="layui-input"> | 
 |  |  |                                             <input type="text" placeholder="名称" name="name" autocomplete="off" class="layui-input"> | 
 |  |  |                                         </div> | 
 |  |  |                                     </div> | 
 |  |  |                                     <div class="layui-inline"> | 
 |  |  |                                         <label class="layui-form-label">账号:</label> | 
 |  |  |                                         <div class="layui-input-inline"> | 
 |  |  |                                             <input type="text" placeholder="手机号/邮箱/邀请码" name="account" autocomplete="off" class="layui-input"> | 
 |  |  |                                             <input type="text" placeholder="账号/邀请码" name="account" autocomplete="off" class="layui-input"> | 
 |  |  |                                         </div> | 
 |  |  |                                     </div> | 
 |  |  |                                     <div class="layui-inline"> | 
 |  |  |                                         <label class="layui-form-label layui-form-label-sm">账户状态</label> | 
 |  |  |                                         <label class="layui-form-label">会员类型:</label> | 
 |  |  |                                         <div class="layui-input-inline"> | 
 |  |  |                                             <select name="level"> | 
 |  |  |                                                 <option value="">请选择</option> | 
 |  |  |                                                 <option value="NORMAL">普通会员</option> | 
 |  |  |                                                 <option value="V1">V1</option> | 
 |  |  |                                                 <option value="V2">V2</option> | 
 |  |  |                                                 <option value="V3">V3</option> | 
 |  |  |                                                 <option value="V4">V4</option> | 
 |  |  |                                                 <option value="V5">V5</option> | 
 |  |  |                                                 <option value="V6">V6</option> | 
 |  |  |                                             </select> | 
 |  |  |                                         </div> | 
 |  |  |                                     </div> | 
 |  |  |                                     <div class="layui-inline"> | 
 |  |  |                                         <label class="layui-form-label">账号状态:</label> | 
 |  |  |                                         <div class="layui-input-inline"> | 
 |  |  |                                             <select name="accountStatus"> | 
 |  |  |                                                 <option value="">请选择</option> | 
 |  |  |                                                 <option value="1">正常</option> | 
 |  |  |                                                 <option value="2">禁用</option> | 
 |  |  |                                             </select> | 
 |  |  |                                         </div> | 
 |  |  |                                     </div> | 
 |  |  |                                     <div class="layui-inline"> | 
 |  |  |                                         <label class="layui-form-label layui-form-label-sm">会员类型</label> | 
 |  |  |                                         <div class="layui-input-inline"> | 
 |  |  |                                             <select name="level"> | 
 |  |  |                                                 <option value="">请选择</option> | 
 |  |  |                                                 <option value="FIRST_LEVEL">普通会员</option> | 
 |  |  |                                                 <option value="SECOND_LEVEL">一星</option> | 
 |  |  |                                                 <option value="THIRD_LEVEL">二星</option> | 
 |  |  |                                                 <option value="FOUR_LEVEL">三星</option> | 
 |  |  |                                                 <option value="FIFTH_LEVEL">四星</option> | 
 |  |  |                                             </select> | 
 |  |  |                                         </div> | 
 |  |  |                                     </div> | 
 |  |  | 
 |  |  |     <div class="layui-btn-container"> | 
 |  |  |         <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="registMember">添加会员</button> | 
 |  |  |         <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="balance">拨付余额</button> | 
 |  |  |         <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="score">拨付赠送积分</button> | 
 |  |  |         <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="prizeScore">拨付竞猜积分</button> | 
 |  |  | <!--        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="score">拨付赠送积分</button>--> | 
 |  |  | <!--        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="prizeScore">拨付竞猜积分</button>--> | 
 |  |  |         <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="resetPwd">重置登录密码</button> | 
 |  |  |         <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="resetPayPwd">重置支付密码</button> | 
 |  |  |         <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="agentLevel">设置代理等级</button> | 
 |  |  | 
 |  |  |                     {field: 'name', title: '名称', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'inviteId', title: '邀请码', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'balance', title: '余额', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'score', title: '赠送积分', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'prizeScore', title: '竞猜积分', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'commission', title: '佣金', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'score', title: '积分', minWidth: 100,align:'left'}, | 
 |  |  |                     // {field: 'prizeScore', title: '竞猜积分', minWidth: 100,align:'left'}, | 
 |  |  |                     // {field: 'commission', title: '佣金', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'referrerName', title: '推荐人', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'levelName', title: '会员类型', minWidth: 100,align:'left'}, | 
 |  |  |                     {field: 'storeMaster', title: '店长', templet:'#switchStoreMaster', minWidth: 100}, | 
 |  |  |                     {field: 'director', title: '总监', templet:'#switchDirector', minWidth: 100}, | 
 |  |  |                     // {field: 'storeMaster', title: '店长', templet:'#switchStoreMaster', minWidth: 100}, | 
 |  |  |                     // {field: 'director', title: '总监', templet:'#switchDirector', minWidth: 100}, | 
 |  |  |                     {field: 'accountType', title: '账号类型', | 
 |  |  |                         templet: function (d) { | 
 |  |  |                             if (d.accountType === 2) { | 
 
 |  |  | 
 |  |  |       xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> | 
 |  |  | <head> | 
 |  |  |     <meta charset="utf-8"> | 
 |  |  |     <title>美澳商城 权限系统</title> | 
 |  |  |     <title>HNTO商城 权限系统</title> | 
 |  |  |     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> | 
 |  |  |     <meta name="renderer" content="webkit"> | 
 |  |  |     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |