935090232@qq.com
2021-01-06 7b9cb4464cf7a6db758214c5681b0ecdf01e3db4
Merge remote-tracking branch 'origin/api' into api
4 files added
11 files modified
402 ■■■■■ changed files
zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java 94 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/action/ApiServiceOrderAction.java 9 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/action/ApiUsersAction.java 29 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/action/ApiVipInfoAction.java 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/dto/AddVipDto.java 23 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/dto/CreateServiceOrderDto.java 13 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/dto/ModifyVipDto.java 25 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/dto/PwdModifyDto.java 38 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/dto/PwdResetDto.java 51 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/dto/SmsCodeDto.java 26 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/dto/UploadPhotoDto.java 26 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/vo/VipInfoDetailVo.java 22 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/plugin/util/ImageUtil.java 33 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/SysVipInfoService.java 2 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java 7 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java
@@ -3,24 +3,38 @@
import com.alibaba.fastjson.JSONObject;
import com.matrix.component.redis.RedisClient;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.LogUtil;
import com.matrix.core.tools.StringUtils;
import com.matrix.core.tools.UUIDUtil;
import com.matrix.system.app.authority.AppAuthorityManager;
import com.matrix.system.app.dto.LoginDto;
import com.matrix.system.app.dto.PwdResetDto;
import com.matrix.system.app.dto.SmsCodeDto;
import com.matrix.system.app.dto.UploadPhotoDto;
import com.matrix.system.app.vo.UserInfoVo;
import com.matrix.system.common.authority.DefaultAuthorityManager;
import com.matrix.system.common.authority.strategy.AccountPasswordLogin;
import com.matrix.system.common.authority.strategy.LoginStrategy;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.service.SysUsersService;
import com.matrix.system.common.tools.PasswordUtil;
import com.matrix.system.hive.bean.SysShopInfo;
import com.matrix.system.hive.plugin.util.CollectionUtils;
import com.matrix.system.hive.plugin.util.ImageUtil;
import com.matrix.system.hive.service.SysShopInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
import java.util.List;
/**
 * @author wzy
@@ -42,6 +56,11 @@
    @Autowired
    private RedisClient redisClient;
    @Value("${file_storage_path}")
    private String fileStoragePath;
    @Value("${static_resource_url}")
    private String nginxUrl;
    @ApiOperation(value = "登陆接口", notes = "手机端登陆接口")
    @ApiResponses({
@@ -80,4 +99,79 @@
        return result;
    }
    @ApiOperation(value = "图片上传接口", notes = "图片上传接口")
    @PostMapping(value = "/uploadPhotoBase64")
    public AjaxResult uploadPhotoBase64(@RequestBody @Validated UploadPhotoDto uploadPhotoDto) {
        // 文件保存目录路径
        String savePath = fileStoragePath;
        // 文件保存目录URL
        String saveUrl = nginxUrl;
        // 保存和访问路径检查
        if (StringUtils.isBlank(saveUrl) || StringUtils.isBlank(savePath)) {
            return AjaxResult.buildFailInstance("文件上传失败错误代码:001");
        }
        // 检查目录
        File uploadDir = new File(savePath);
        if (!uploadDir.isDirectory()) {
            uploadDir.mkdir();
        }
        String fileName = ImageUtil.base64ToFile(uploadPhotoDto.getBase64(), savePath, UUIDUtil.getRandomID() + ".png");
        LogUtil.info("fileName : {}", fileName);
        AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("上传成功");
        ajaxResult.putInMap("file", fileName);
        return ajaxResult;
    }
    @ApiOperation(value = "短信验证码发送", notes = "短信验证码发送")
    @PostMapping(value = "/sendSmsCode")
    public AjaxResult sendSmsCode(@RequestBody @Validated SmsCodeDto smsCodeDto) {
        SysUsers user = new SysUsers();
        user.setSuTel(smsCodeDto.getTelphone());
        List<SysUsers> users = sysUsersService.findByModel(user);
        if (CollectionUtils.isEmpty(users)) {
            return AjaxResult.buildFailInstance("该手机号不存在");
        }
        String codeExist = redisClient.getCachedValue(smsCodeDto.getTelphone());
        if (StringUtils.isNotBlank(codeExist)) {
            return AjaxResult.buildFailInstance("请勿重复发送验证码");
        }
        redisClient.saveValue(smsCodeDto.getTelphone(), "123456", 120);
        return AjaxResult.buildSuccessInstance("发送成功");
    }
    @ApiOperation(value = "重置登陆密码", notes = "重置登陆密码")
    @PostMapping(value = "/resetLoginPwd")
    public AjaxResult resetLoginPwd(@RequestBody @Validated PwdResetDto pwdResetDto) throws UnsupportedEncodingException, NoSuchAlgorithmException {
        SysUsers user = new SysUsers();
        user.setSuTel(pwdResetDto.getTelphone());
        List<SysUsers> users = sysUsersService.findByModel(user);
        if (CollectionUtils.isEmpty(users)) {
            return AjaxResult.buildFailInstance("该手机号不存在");
        }
        String code = redisClient.getCachedValue(pwdResetDto.getTelphone());
        if (StringUtils.isBlank(code)) {
            return AjaxResult.buildFailInstance("验证码已失效,请重新发送");
        }
        if (!code.equals(pwdResetDto.getCode())) {
            return AjaxResult.buildFailInstance("验证码错误");
        }
        user = users.get(0);
        user.setSuPassword(pwdResetDto.getNewPwd());
        String pwd = PasswordUtil.getEncrypUserPwd(user);
        int i = sysUsersService.updateUserPassword(user.getSuId(), pwd);
        if (i > 0) {
            redisClient.removeObject(pwdResetDto.getTelphone());
            return AjaxResult.buildSuccessInstance("修改成功");
        }
        return AjaxResult.buildFailInstance("修改失败");
    }
}
zq-erp/src/main/java/com/matrix/system/app/action/ApiServiceOrderAction.java
@@ -6,6 +6,7 @@
import com.matrix.core.pojo.PaginationVO;
import com.matrix.core.pojo.VerifyResult;
import com.matrix.core.tools.DateUtil;
import com.matrix.core.tools.StringUtils;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.app.dto.CreateServiceOrderDto;
import com.matrix.system.app.dto.ServiceOrderListDto;
@@ -135,6 +136,14 @@
        if (CollectionUtils.isEmpty(serviceOrderDto.getProjItems())) {
            throw new GlobleException("请选择服务");
        }
        SysVipInfo vipInfo = sysVipInfoService.findById(serviceOrderDto.getVipId());
        if (StringUtils.isBlank(vipInfo.getPassWord())) {
            return AjaxResult.buildFailInstance("未设置资金密码");
        }
        if (!vipInfo.getPassWord().equals(serviceOrderDto.getPassword())) {
            return AjaxResult.buildSuccessInstance("资金密码错误");
        }
        SysProjServices sysProjServices = new SysProjServices();
        sysProjServices.setVipId(serviceOrderDto.getVipId());
zq-erp/src/main/java/com/matrix/system/app/action/ApiUsersAction.java
@@ -6,6 +6,7 @@
import com.matrix.core.tools.DateUtil;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.app.dto.BeauticianDto;
import com.matrix.system.app.dto.PwdModifyDto;
import com.matrix.system.app.dto.UsersQueryDto;
import com.matrix.system.app.mapper.SysBeauticianStateMapper;
import com.matrix.system.app.mapper.SysUsersMapper;
@@ -15,6 +16,8 @@
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.service.SysUsersService;
import com.matrix.system.common.tools.DataAuthUtil;
import com.matrix.system.common.tools.PasswordUtil;
import com.matrix.system.hive.action.BaseController;
import com.matrix.system.hive.bean.SysBeauticianState;
import com.matrix.system.hive.bean.SysWorkBeatuistaff;
import com.matrix.system.hive.service.AchieveNewService;
@@ -29,6 +32,8 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.List;
@@ -39,7 +44,7 @@
@Api(value = "ApiUsersAction", tags = "用户中心接口类")
@RestController
@RequestMapping(value = "/api/user")
public class ApiUsersAction {
public class ApiUsersAction extends BaseController {
    @Autowired
    private AchieveNewService achieveNewService;
@@ -127,4 +132,26 @@
        return AjaxResult.buildSuccessInstance(dataList);
    }
    @ApiOperation(value = "修改密码", notes = "修改密码")
    @PostMapping(value = "/modifyPwd")
    public AjaxResult modifyPwd(@RequestBody @Validated PwdModifyDto pwdModifyDto) throws UnsupportedEncodingException, NoSuchAlgorithmException {
        SysUsers me = getMe();
        SysUsers user = sysUsersService.findById(me.getSuId());
        SysUsers pwdUser = new SysUsers();
        pwdUser.setSuPassword(pwdModifyDto.getOldPwd());
        pwdUser.setSuRegisterTime(user.getSuRegisterTime());
        String pwd = PasswordUtil.getEncrypUserPwd(pwdUser);
        if (!pwd.equals(user.getSuPassword())) {
            return AjaxResult.buildFailInstance("老密码错误");
        }
        int i = sysUsersService.updateUserPassword(user.getSuId(), pwd);
        if (i > 0) {
            return AjaxResult.buildSuccessInstance("修改成功");
        }
        return AjaxResult.buildFailInstance("修改失败");
    }
}
zq-erp/src/main/java/com/matrix/system/app/action/ApiVipInfoAction.java
@@ -2,6 +2,7 @@
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.EncrypUtil;
import com.matrix.core.tools.StringUtils;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.app.dto.AddVipDto;
@@ -15,6 +16,7 @@
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.dao.CustomerDataDictionaryDao;
import com.matrix.system.common.tools.DataAuthUtil;
import com.matrix.system.common.tools.PasswordUtil;
import com.matrix.system.hive.action.BaseController;
import com.matrix.system.hive.bean.*;
import com.matrix.system.hive.dao.MoneyCardUseDao;
@@ -32,6 +34,8 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
import java.util.List;
/**
zq-erp/src/main/java/com/matrix/system/app/dto/AddVipDto.java
@@ -17,6 +17,8 @@
 **/
@ApiModel(value = "AddVipDto", description = "添加会员接收参数类")
public class AddVipDto {
    @ApiModelProperty(value = "头像")
    private String photo;
    @Length(max = 10, min = 1)
    @NotBlank(message = "会员编号不能为空")
@@ -39,6 +41,11 @@
    @ApiModelProperty(value = "生日")
    @JsonFormat(pattern = DateUtil.DATE_FORMAT_DD, timezone = "GMT+8")
    private Date birthday;
    @Length(min = 6, max = 6)
    @NotBlank(message = "参数错误")
    @ApiModelProperty(value = "资金密码", example = "123456")
    private String password;
    @ApiModelProperty(value = "省市区", example = "湖南省,长沙市,岳麓区")
    private String areas;
@@ -145,4 +152,20 @@
    public void setLabels(List<String> labels) {
        this.labels = labels;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getPhoto() {
        return photo;
    }
    public void setPhoto(String photo) {
        this.photo = photo;
    }
}
zq-erp/src/main/java/com/matrix/system/app/dto/CreateServiceOrderDto.java
@@ -5,6 +5,7 @@
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
@@ -38,6 +39,18 @@
    @ApiModelProperty(value = "备注")
    private String remark;
    @NotBlank(message = "参数错误")
    @ApiModelProperty(value = "资金密码")
    private String password;
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public Long getVipId() {
        return vipId;
    }
zq-erp/src/main/java/com/matrix/system/app/dto/ModifyVipDto.java
@@ -4,6 +4,7 @@
import com.matrix.core.tools.DateUtil;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@@ -16,6 +17,9 @@
 **/
@ApiModel(value = "ModifyVipDto", description = "修改会员接收参数类")
public class ModifyVipDto {
    @ApiModelProperty(value = "头像")
    private String photo;
    @NotNull(message = "参数错误")
    @ApiModelProperty(value = "会员ID")
@@ -41,6 +45,11 @@
    @ApiModelProperty(value = "生日")
    @JsonFormat(pattern = DateUtil.DATE_FORMAT_DD, timezone = "GMT+8")
    private Date birthday;
    @Length(min = 6, max = 6)
    @NotBlank(message = "参数错误")
    @ApiModelProperty(value = "资金密码", example = "123456")
    private String password;
    @ApiModelProperty(value = "省市区", example = "湖南省,长沙市,岳麓区")
    private String areas;
@@ -155,4 +164,20 @@
    public void setLabels(List<String> labels) {
        this.labels = labels;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getPhoto() {
        return photo;
    }
    public void setPhoto(String photo) {
        this.photo = photo;
    }
}
zq-erp/src/main/java/com/matrix/system/app/dto/PwdModifyDto.java
New file
@@ -0,0 +1,38 @@
package com.matrix.system.app.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotBlank;
/**
 * @author wzy
 * @date 2021-01-06
 **/
@ApiModel(value = "PwdModifyDto", description = "修改密码接口参数接收类")
public class PwdModifyDto {
    @NotBlank(message = "参数错误")
    @ApiModelProperty(value = "老密码", example = "123456")
    private String oldPwd;
    @NotBlank(message = "参数错误")
    @ApiModelProperty(value = "新密码", example = "123456")
    private String newPwd;
    public String getOldPwd() {
        return oldPwd;
    }
    public void setOldPwd(String oldPwd) {
        this.oldPwd = oldPwd;
    }
    public String getNewPwd() {
        return newPwd;
    }
    public void setNewPwd(String newPwd) {
        this.newPwd = newPwd;
    }
}
zq-erp/src/main/java/com/matrix/system/app/dto/PwdResetDto.java
New file
@@ -0,0 +1,51 @@
package com.matrix.system.app.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotBlank;
/**
 * @author wzy
 * @date 2021-01-06
 **/
@ApiModel(value = "PwdResetDto", description = "密码重置接收类")
public class PwdResetDto {
    @NotBlank(message = "参数错误")
    @ApiModelProperty(value = "手机号", example = "11")
    private String telphone;
    @NotBlank(message = "参数错误")
    @ApiModelProperty(value = "验证码", example = "123456")
    private String code;
    @NotBlank(message = "参数错误")
    @ApiModelProperty(value = "新密码", example = "123456")
    private String newPwd;
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getNewPwd() {
        return newPwd;
    }
    public void setNewPwd(String newPwd) {
        this.newPwd = newPwd;
    }
    public String getTelphone() {
        return telphone;
    }
    public void setTelphone(String telphone) {
        this.telphone = telphone;
    }
}
zq-erp/src/main/java/com/matrix/system/app/dto/SmsCodeDto.java
New file
@@ -0,0 +1,26 @@
package com.matrix.system.app.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotBlank;
/**
 * @author wzy
 * @date 2021-01-06
 **/
@ApiModel(value = "SmsCodeDto", description = "短信发送接收参数类")
public class SmsCodeDto {
    @NotBlank(message = "参数错误")
    @ApiModelProperty(value = "手机号")
    private String telphone;
    public String getTelphone() {
        return telphone;
    }
    public void setTelphone(String telphone) {
        this.telphone = telphone;
    }
}
zq-erp/src/main/java/com/matrix/system/app/dto/UploadPhotoDto.java
New file
@@ -0,0 +1,26 @@
package com.matrix.system.app.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotBlank;
/**
 * @author wzy
 * @date 2021-01-06
 **/
@ApiModel(value = "UploadPhotoDto", description = "图片上传接口接收参数类")
public class UploadPhotoDto {
    @NotBlank(message = "参数错误")
    @ApiModelProperty(value = "图片base64字符串")
    private String base64;
    public String getBase64() {
        return base64;
    }
    public void setBase64(String base64) {
        this.base64 = base64;
    }
}
zq-erp/src/main/java/com/matrix/system/app/vo/VipInfoDetailVo.java
@@ -16,6 +16,12 @@
@ApiModel(value = "VipInfoDetailVo", description = "客户详细信息接口返回类")
public class VipInfoDetailVo {
    @ApiModelProperty(value = "头像")
    private String photo;
    @ApiModelProperty(value = "资金密码")
    private String password;
    @ApiModelProperty(value = "会员ID")
    private Long id;
@@ -170,4 +176,20 @@
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public String getPhoto() {
        return photo;
    }
    public void setPhoto(String photo) {
        this.photo = photo;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}
zq-erp/src/main/java/com/matrix/system/hive/plugin/util/ImageUtil.java
@@ -1,10 +1,16 @@
package com.matrix.system.hive.plugin.util;
import com.matrix.core.tools.DateUtil;
import sun.misc.BASE64Decoder;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import javax.imageio.ImageIO;
@@ -57,6 +63,33 @@
    }
    
    public static String base64ToFile(String base64Str, String savePath, String fileName) {
        String fileDir = DateUtil.dateToString(new Date(), DateUtil.DATE_FORMAT_NO_SPLITE_DD);
        File dir = new File(savePath + fileDir);
        if (!dir.isDirectory()) {
            dir.mkdir();
        }
        BufferedOutputStream bos = null;
        FileOutputStream fos = null;
        File file = null;
        String filePathAndName = savePath + fileDir + File.separator + fileName;
        BASE64Decoder decoder = new BASE64Decoder();
        byte[] bfile = new byte[0];
        try {
            bfile = decoder.decodeBuffer(base64Str);
            file = new File(filePathAndName);
            fos = new FileOutputStream(file);
            bos = new BufferedOutputStream(fos);
            bos.write(bfile);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return filePathAndName;
    }
    
zq-erp/src/main/java/com/matrix/system/hive/service/SysVipInfoService.java
@@ -12,6 +12,8 @@
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
import java.util.List;
/**
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java
@@ -13,6 +13,7 @@
import com.matrix.system.app.vo.VipInfoListVo;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.tools.DataAuthUtil;
import com.matrix.system.common.tools.PasswordUtil;
import com.matrix.system.common.tools.ServiceUtil;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.constance.TableMapping;
@@ -447,6 +448,7 @@
        }
        SysVipInfo vipInfo = new SysVipInfo();
        vipInfo.setPhoto(addVipDto.getPhoto());
        vipInfo.setVipName(addVipDto.getVipName());
        vipInfo.setVipNo(addVipDto.getVipNo());
        vipInfo.setSex(addVipDto.getSex());
@@ -455,6 +457,7 @@
        vipInfo.setAddr(addVipDto.getAddress());
        vipInfo.setRemark(addVipDto.getRemark());
        vipInfo.setBirthday1(addVipDto.getBirthday());
        vipInfo.setPassWord(addVipDto.getPassword());
        vipInfo.setRecommendId(addVipDto.getRecommendId());
        if (StringUtils.isNotBlank(addVipDto.getAreas())) {
@@ -523,8 +526,10 @@
        vipInfo.setPhone(modifyVipDto.getPhone());
        vipInfo.setAddr(modifyVipDto.getAddress());
        vipInfo.setRemark(modifyVipDto.getRemark());
        vipInfo.setPassWord(modifyVipDto.getPassword());
        vipInfo.setBirthday1(modifyVipDto.getBirthday());
        vipInfo.setRecommendId(modifyVipDto.getRecommendId());
        vipInfo.setPhoto(modifyVipDto.getPhoto());
        int i = sysVipInfoDao.update(vipInfo);
        if (CollectionUtils.isNotEmpty(modifyVipDto.getLabels())) {
@@ -568,6 +573,8 @@
        vipInfoDetailVo.setArea(sysVipInfo.getArea());
        vipInfoDetailVo.setRemark(sysVipInfo.getRemark());
        vipInfoDetailVo.setBirthday(sysVipInfo.getBirthday1());
        vipInfoDetailVo.setPassword(sysVipInfo.getPassWord());
        vipInfoDetailVo.setPhoto(sysVipInfo.getPhoto());
        List<SysVipLabel> labels = sysVipLabelDao.selectByVipId(sysVipInfo.getId());
        vipInfoDetailVo.setLabels(labels);