6 files added
11 files modified
407 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java 42 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/ApiDoctorAuthDeleteDto.java 16 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/ApiDoctorBindDto.java 21 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/ApiDoctorListDto.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/entity/MallDoctor.java 27 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/entity/MallMember.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/mapper/MallDoctorMapper.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java 3 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java 16 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java 166 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/ApiDoctorListVo.java 36 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java 3 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallMemberMapper.xml 8 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html 24 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
@@ -17,7 +17,6 @@
import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -572,6 +571,15 @@
    }
    /**
     * 会员列表-医生设置
     */
    @GetMapping("doctorStateChange/{id}")
    @ControllerEndpoint(operation = " 会员列表-医生设置", exceptionMessage = "操作失败")
    public FebsResponse doctorStateChange(@NotNull(message = "{required}") @PathVariable Long id) {
        return mallMemberService.doctorStateChange(id);
    }
    /**
     * 会员列表-推销员设置
     */
    @GetMapping("upSale/{id}")
src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
@@ -3,9 +3,11 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.entity.MallMember;
import cc.mrbird.febs.mall.entity.MallMemberCoupon;
import cc.mrbird.febs.mall.entity.MallMemberPayment;
import cc.mrbird.febs.mall.service.*;
import cc.mrbird.febs.mall.service.IApiMallAgentService;
import cc.mrbird.febs.mall.service.IApiMallMemberService;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
import cc.mrbird.febs.mall.service.IMallMemberWithdrawService;
import cc.mrbird.febs.mall.vo.*;
import cc.mrbird.febs.vip.service.IMallVipBenefitsService;
import io.swagger.annotations.Api;
@@ -17,7 +19,6 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.Map;
/**
@@ -325,4 +326,39 @@
    public FebsResponse bindResult(@RequestBody @Validated BindResultDto bindResultDto) {
        return memberService.bindResult(bindResultDto);
    }
    @ApiOperation(value = "去授权")
    @PostMapping(value = "/bindDoctor")
    public FebsResponse bindDoctor(@RequestBody @Validated ApiDoctorBindDto dto) {
        return memberService.bindDoctor(dto);
    }
    @ApiOperation(value = "我的检测用户")
    @ApiResponses({
            @ApiResponse(code = 200, message = "success", response = ApiDoctorListVo.class)
    })
    @PostMapping(value = "/doctorList")
    public FebsResponse doctorList(@RequestBody ApiDoctorListDto dto) {
        return memberService.doctorList(dto);
    }
    @ApiOperation(value = "我的授权记录")
    @ApiResponses({
            @ApiResponse(code = 200, message = "success", response = ApiDoctorListVo.class)
    })
    @PostMapping(value = "/authList")
    public FebsResponse authList() {
        return memberService.authList();
    }
    @ApiOperation(value = "我的授权记录-删除")
    @PostMapping(value = "/authDel")
    public FebsResponse authDel(@RequestBody @Validated ApiDoctorAuthDeleteDto dto) {
        return memberService.authDel(dto);
    }
}
src/main/java/cc/mrbird/febs/mall/dto/ApiDoctorAuthDeleteDto.java
New file
@@ -0,0 +1,16 @@
package cc.mrbird.febs.mall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
@ApiModel(value = "ApiDoctorAuthDeleteDto", description = "参数接收类")
public class ApiDoctorAuthDeleteDto {
    @NotNull(message = "ID不能为空")
    @ApiModelProperty(value = "绑定记录ID")
    private Long id;
}
src/main/java/cc/mrbird/febs/mall/dto/ApiDoctorBindDto.java
New file
@@ -0,0 +1,21 @@
package cc.mrbird.febs.mall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
@ApiModel(value = "ApiDoctorBindDto", description = "参数接收类")
public class ApiDoctorBindDto {
    @NotBlank(message = "医生邀请码不能为空")
    @ApiModelProperty(value = "医生邀请码")
    private String inviteId;
    @NotNull(message = "绑定记录不能为空")
    @ApiModelProperty(value = "绑定记录ID")
    private Long storeMemberId;
}
src/main/java/cc/mrbird/febs/mall/dto/ApiDoctorListDto.java
New file
@@ -0,0 +1,13 @@
package cc.mrbird.febs.mall.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "ApiDoctorListDto", description = "参数接收类")
public class ApiDoctorListDto {
    @ApiModelProperty(value = "绑定人电话")
    private String phone;
}
src/main/java/cc/mrbird/febs/mall/entity/MallDoctor.java
New file
@@ -0,0 +1,27 @@
package cc.mrbird.febs.mall.entity;
import cc.mrbird.febs.common.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("mall_doctor")
public class MallDoctor extends BaseEntity {
    /**
     *
     `member_id` bigint(20) DEFAULT NULL,
     `store_member_id` bigint(20) DEFAULT NULL,
     `bind_member_id` bigint(20) DEFAULT NULL,
     `bind_phone` varchar(100) DEFAULT NULL,
     `bind_name` varchar(100) DEFAULT NULL,
     `bind_info` varchar(150) DEFAULT NULL,
     `bind_age` int(11) DEFAULT NULL,
     */
    private Long memberId;
    private Long storeMemberId;
    private Long bindMemberId;
    private String bindPhone;
    private String bindName;
    private String bindInfo;
    private Integer bindAge;
}
src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
@@ -1,7 +1,5 @@
package cc.mrbird.febs.mall.entity;
import cc.mrbird.febs.common.controller.BaseController;
import cc.mrbird.febs.common.entity.BaseEntity;
import cc.mrbird.febs.common.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
@@ -183,4 +181,6 @@
    private Date lastLoginTime;
    private Date vipLevelTime;
    //是否是医生  0-否 1-是
    private Integer doctorState;
}
src/main/java/cc/mrbird/febs/mall/mapper/MallDoctorMapper.java
New file
@@ -0,0 +1,7 @@
package cc.mrbird.febs.mall.mapper;
import cc.mrbird.febs.mall.entity.MallDoctor;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface MallDoctorMapper extends BaseMapper<MallDoctor> {
}
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
@@ -3,7 +3,6 @@
import cc.mrbird.febs.mall.dto.AgentDto;
import cc.mrbird.febs.mall.dto.AgentLevelDto;
import cc.mrbird.febs.mall.dto.RankAwardDto;
import cc.mrbird.febs.mall.dto.RankListDto;
import cc.mrbird.febs.mall.entity.AppVersion;
import cc.mrbird.febs.mall.entity.MallMember;
import cc.mrbird.febs.mall.vo.*;
@@ -13,6 +12,7 @@
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
@@ -91,4 +91,5 @@
    IPage<MallMember> getsalemanRuleList(Page<MallMember> page, @Param("record")MallMember mallMember);
    void updateReferrerId(@Param("id")Long id);
    void updateLastLoginTime(@Param("id")Long id,@Param("lastLoginTime") Date lastLoginTime);
}
src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java
@@ -127,6 +127,9 @@
    FebsResponse agentVerifyUpdate(AdminAgentVerifyVo adminAgentVerifyVo);
    FebsResponse doctorStateChange(Long id);
    FebsResponse upCoupon(Long id);
    FebsResponse downCoupon(Long id);
src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
@@ -107,4 +107,12 @@
    FebsResponse bindList();
    FebsResponse bindResult(BindResultDto bindResultDto);
    FebsResponse bindDoctor(ApiDoctorBindDto dto);
    FebsResponse doctorList(ApiDoctorListDto dto);
    FebsResponse authList();
    FebsResponse authDel(ApiDoctorAuthDeleteDto dto);
}
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -3,16 +3,12 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.common.utils.LoginUserUtil;
import cc.mrbird.febs.common.utils.MallUtils;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.entity.MallNewsInfo;
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.IAdminMallMemberService;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
@@ -33,7 +29,6 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.xmlbeans.impl.store.Query;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -320,6 +315,17 @@
    }
    @Override
    public FebsResponse doctorStateChange(Long id) {
        MallMember mallMember = this.baseMapper.selectById(id);
        if(ObjectUtil.isEmpty(mallMember)){
            throw new FebsException("请刷新页面");
        }
        mallMember.setDoctorState(mallMember.getDoctorState() == 1 ? 0 : 1);
        this.baseMapper.updateById(mallMember);
        return new FebsResponse().success().message("操作成功");
    }
    @Override
    public FebsResponse upCoupon(Long id) {
        MallMember mallMember = this.baseMapper.selectById(id);
        if(ObjectUtil.isEmpty(mallMember)){
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -88,6 +88,7 @@
    private final MallStoreMapper mallStoreMapper;
    private final MallStoreItemMapper mallStoreItemMapper;
    private final MallStoreMemberMapper mallStoreMemberMapper;
    private final MallDoctorMapper mallDoctorMapper;
    @Value("${spring.profiles.active}")
@@ -1096,10 +1097,12 @@
        MallMember member = this.baseMapper.selectById(loginUser.getId());
        MallMember mallMember = new MallMember();
        mallMember.setId(member.getId());
        mallMember.setLastLoginTime(new Date());
        this.baseMapper.updateById(mallMember);
//        MallMember mallMember = new MallMember();
//        mallMember.setId(member.getId());
//        mallMember.setLastLoginTime(new Date());
//        this.baseMapper.updateById(mallMember);
        this.baseMapper.updateLastLoginTime(member.getId(),new Date());
        DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.UNALIVE_COUPON.getType(), DataDictionaryEnum.UNALIVE_COUPON.getCode());
        if (dic == null || StrUtil.isBlank(dic.getValue())) {
@@ -1327,6 +1330,161 @@
        return new FebsResponse().success().data(data);
    }
    /**
     * 绑定医生接口的实现方法
     *
     * @param dto 包含绑定医生所需信息的数据传输对象
     * @return 返回操作结果的响应对象
     * @throws FebsException 如果绑定操作失败,抛出此异常
     */
    @Override
    public FebsResponse bindDoctor(ApiDoctorBindDto dto) {
        // 获取当前登录用户的ID
        Long memberId = LoginUserUtil.getLoginUser().getId();
        // 从DTO中提取邀请ID和门店会员ID
        String inviteId = dto.getInviteId();
        Long storeMemberId = dto.getStoreMemberId();
        // 根据门店会员ID查询门店会员信息
        MallStoreMember mallStoreMember = mallStoreMemberMapper.selectById(storeMemberId);
        // 如果门店会员信息为空,抛出异常
        if(null == mallStoreMember){
            throw new FebsException("当前检测记录无法绑定!");
        }
        // 如果门店会员的会员ID与当前登录用户ID不匹配,抛出异常
        if(mallStoreMember.getMemberId() != memberId){
            throw new FebsException("当前检测记录无法绑定!");
        }
        // 根据邀请ID查询会员信息
        MallMember mallMember = this.baseMapper.selectInfoByInviteId(inviteId);
        // 如果会员的医生状态不是1,抛出异常
        if(1 != mallMember.getDoctorState()){
            throw new FebsException("无法绑定!");
        }
        // 查询与当前门店会员ID关联的医生列表
        List<MallDoctor> mallDoctors = mallDoctorMapper.selectList(
                new LambdaQueryWrapper<MallDoctor>()
                        .eq(MallDoctor::getStoreMemberId, mallStoreMember.getId())
                        .eq(MallDoctor::getMemberId, mallMember.getId())
        );
        // 如果医生列表为空,创建新的医生对象并设置相关信息,然后插入数据库
        if(CollUtil.isEmpty(mallDoctors)){
            MallDoctor mallDoctor = new MallDoctor();
            mallDoctor.setMemberId(mallMember.getId());
            mallDoctor.setStoreMemberId(mallStoreMember.getId());
            mallDoctor.setBindMemberId(mallStoreMember.getMemberId());
            mallDoctor.setBindPhone(mallStoreMember.getPhone());
            mallDoctor.setBindName(mallStoreMember.getName());
            mallDoctor.setBindAge(mallStoreMember.getAge());
            Long storeId = mallStoreMember.getStoreId();
            Long storeItemId = mallStoreMember.getStoreItemId();
            MallStore mallStore = mallStoreMapper.selectById(storeId);
            MallStoreItem mallStoreItem = mallStoreItemMapper.selectById(storeItemId);
            mallDoctor.setBindInfo(mallStore.getName()+"-"+mallStoreItem.getCode());
            mallDoctorMapper.insert(mallDoctor);
        }
        // 返回操作成功的响应
        return new FebsResponse().success().message("操作成功");
    }
    /**
     * 获取医生列表接口的实现
     * 根据登录用户信息和查询条件,返回相应的医生列表
     *
     * @param dto 包含查询条件的数据传输对象
     * @return 返回包含医生列表的响应对象
     */
    @Override
    public FebsResponse doctorList(ApiDoctorListDto dto) {
        // 获取当前登录用户的ID
        Long memberId = LoginUserUtil.getLoginUser().getId();
        // 初始化用于存储医生信息的集合
        ArrayList<ApiDoctorListVo> apiDoctorListVos = new ArrayList<>();
        // 创建查询条件包装器
        LambdaQueryWrapper<MallDoctor> objectQueryWrapper = new LambdaQueryWrapper<>();
        // 根据传入的手机号进行模糊查询
        if(StrUtil.isNotEmpty(dto.getPhone())){
            objectQueryWrapper.like(MallDoctor::getBindPhone,dto.getPhone());
        }
        // 根据会员ID进行精确查询
        objectQueryWrapper.eq(MallDoctor::getMemberId,memberId);
        // 按创建时间降序排序
        objectQueryWrapper.orderByDesc(MallDoctor::getCreatedTime);
        // 执行查询,获取医生列表
        List<MallDoctor> mallDoctors = mallDoctorMapper.selectList(objectQueryWrapper);
        // 如果查询结果不为空,则遍历查询结果,封装医生信息
        if(CollUtil.isNotEmpty(mallDoctors)){
            for(MallDoctor mallDoctor : mallDoctors){
                ApiDoctorListVo apiDoctorListVo = new ApiDoctorListVo();
                apiDoctorListVo.setId(mallDoctor.getId());
                apiDoctorListVo.setStoreMemberId(mallDoctor.getStoreMemberId());
                apiDoctorListVo.setName(mallDoctor.getBindName());
                apiDoctorListVo.setPhone(mallDoctor.getBindPhone());
                apiDoctorListVo.setBindAge(mallDoctor.getBindAge());
                apiDoctorListVo.setBindInfo(mallDoctor.getBindInfo());
                apiDoctorListVo.setCreatedTime(mallDoctor.getCreatedTime());
                // 将封装好的医生信息添加到集合中
                apiDoctorListVos.add(apiDoctorListVo);
            }
        }
        // 返回包含医生列表的响应对象
        return new FebsResponse().success().data(apiDoctorListVos);
    }
    @Override
    public FebsResponse authList() {
        // 获取当前登录用户的ID
        Long memberId = LoginUserUtil.getLoginUser().getId();
        // 初始化用于存储医生信息的集合
        ArrayList<ApiDoctorListVo> apiDoctorListVos = new ArrayList<>();
        // 创建查询条件包装器
        LambdaQueryWrapper<MallDoctor> objectQueryWrapper = new LambdaQueryWrapper<>();
        // 根据会员ID进行精确查询
        objectQueryWrapper.eq(MallDoctor::getBindMemberId,memberId);
        // 按创建时间降序排序
        objectQueryWrapper.orderByDesc(MallDoctor::getCreatedTime);
        // 执行查询,获取医生列表
        List<MallDoctor> mallDoctors = mallDoctorMapper.selectList(objectQueryWrapper);
        // 如果查询结果不为空,则遍历查询结果,封装医生信息
        if(CollUtil.isNotEmpty(mallDoctors)){
            for(MallDoctor mallDoctor : mallDoctors){
                ApiDoctorListVo apiDoctorListVo = new ApiDoctorListVo();
                apiDoctorListVo.setId(mallDoctor.getId());
                apiDoctorListVo.setStoreMemberId(mallDoctor.getStoreMemberId());
                MallMember mallMember = this.baseMapper.selectById(mallDoctor.getMemberId());
                apiDoctorListVo.setName(mallMember.getName());
                apiDoctorListVo.setPhone(mallDoctor.getBindPhone());
                apiDoctorListVo.setBindAge(mallDoctor.getBindAge());
                apiDoctorListVo.setBindInfo(mallDoctor.getBindInfo());
                apiDoctorListVo.setCreatedTime(mallDoctor.getCreatedTime());
                // 将封装好的医生信息添加到集合中
                apiDoctorListVos.add(apiDoctorListVo);
            }
        }
        // 返回包含医生列表的响应对象
        return new FebsResponse().success().data(apiDoctorListVos);
    }
    @Override
    public FebsResponse authDel(ApiDoctorAuthDeleteDto dto) {
        // 获取当前登录用户的ID
        Long memberId = LoginUserUtil.getLoginUser().getId();
        MallDoctor mallDoctor = mallDoctorMapper.selectById(dto.getId());
        if(memberId != mallDoctor.getBindMemberId()){
            throw new FebsException("当前授权无法删除!");
        }
        mallDoctorMapper.deleteById(dto.getId());
        return new FebsResponse().success().message("操作成功");
    }
    public static void main(String[] args) {
        Long userld = 16425L;
        String shopAccount = "爱和美医疗";
src/main/java/cc/mrbird/febs/mall/vo/ApiDoctorListVo.java
New file
@@ -0,0 +1,36 @@
package cc.mrbird.febs.mall.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@ApiModel(value = "ApiDoctorListVo", description = "信息返回类")
public class ApiDoctorListVo {
    @ApiModelProperty(value = "ID")
    private Long id;
    @ApiModelProperty(value = "绑定记录ID")
    private Long storeMemberId;
    @ApiModelProperty(value = "绑定人")
    private String name;
    @ApiModelProperty(value = "绑定人电话")
    private String phone;
    @ApiModelProperty(value = "年龄")
    private Integer bindAge;
    @ApiModelProperty(value = "绑定的信息")
    private String bindInfo;
    @ApiModelProperty(value = "绑定时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createdTime;
}
src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
@@ -99,4 +99,7 @@
    @ApiModelProperty(value = "会员信息")
    private MallVipConfig vipInfo;
    @ApiModelProperty(value = "是否是医生")
    private Integer doctorState;
}
src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -442,4 +442,12 @@
        where id = #{id}
    </update>
    <update id="updateLastLoginTime">
        update mall_member
        set last_login_time = #{lastLoginTime}
        where id = #{id}
    </update>
</mapper>
src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
@@ -97,6 +97,14 @@
    <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="isSalesmanSwitch">
    {{# } }}
</script>
<script type="text/html" id="isDoctorSwitch">
    {{# if(d.doctorState === 1) { }}
    <input type="checkbox" value={{d.id}} lay-text="是|否" checked lay-skin="switch" lay-filter="isDoctorSwitch">
    {{# } else { }}
    <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="isDoctorSwitch">
    {{# } }}
</script>
<style>
    .layui-form-onswitch {
        background-color: #5FB878 !important;
@@ -249,6 +257,21 @@
            }
        })
        form.on('switch(isDoctorSwitch)', function (data) {
            if (data.elem.checked) {
                doctorStateChange(data.value);
            } else {
                doctorStateChange(data.value);
            }
        })
        function doctorStateChange(id) {
            febs.get(ctx + 'admin/mallMember/doctorStateChange/' + id, null, function () {
                febs.alert.success('操作成功');
                $query.click();
            });
        }
        function upSale(id) {
            febs.get(ctx + 'admin/mallMember/upSale/' + id, null, function () {
                febs.alert.success('操作成功');
@@ -295,6 +318,7 @@
                    {field: 'referrerName', title: '推荐人', minWidth: 100,align:'left'},
                    {field: 'levelName', title: '会员等级', minWidth: 100,align:'left'},
                    // {field: 'referrerName', title: '推荐人', minWidth: 100,align:'left'},
                    {field: 'doctorState', title: '医生设置', templet: '#isDoctorSwitch', minWidth: 100,align:'center'},
                    {field: 'isSalesman', title: '推销员设置', templet: '#isSalesmanSwitch', minWidth: 100,align:'center'},
                    // {field: 'director', title: '总监', templet:'#switchDirector', minWidth: 100},
                    // {field: 'accountType', title: '账号类型',