Helius
2021-01-06 8eb03554c07de7e268cf230249caf10922c6b47d
Merge branch 'api' into order_reform
7 files added
14 files modified
927 ■■■■■ changed files
zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java 100 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/action/ApiKnowledgeAction.java 9 ●●●●● 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 57 ●●●●● 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/authority/AppAuthorityManager.java 223 ●●●●● 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/ModifyUserDto.java 116 ●●●●● 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/mapper/SysUsersMapper.java 26 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/vo/UserInfoDetailVo.java 113 ●●●●● 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/bean/Article.java 4 ●●●● 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
@@ -2,26 +2,39 @@
import com.alibaba.fastjson.JSONObject;
import com.matrix.component.redis.RedisClient;
import com.matrix.core.constance.MatrixConstance;
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.core.tools.WebUtil;
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
@@ -39,10 +52,15 @@
    private SysShopInfoService sysShopInfoService;
    @Autowired
    private DefaultAuthorityManager authorityManager;
    private AppAuthorityManager authorityManager;
    @Autowired
    private RedisClient redisClient;
    @Value("${file_storage_path}")
    private String fileStoragePath;
    @Value("${static_resource_url}")
    private String nginxUrl;
    @ApiOperation(value = "登陆接口", notes = "手机端登陆接口")
    @ApiResponses({
@@ -75,9 +93,85 @@
        userInfoVo.setPhoto(user.getSuPhoto());
        AjaxResult result = AjaxResult.buildSuccessInstance("登陆成功");
        authorityManager.initUserPower(result,user);
        result.putInMap("user", userInfoVo);
        result.putInMap("token", token);
        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/ApiKnowledgeAction.java
@@ -49,4 +49,13 @@
        return AjaxResult.buildSuccessInstance(articleService.findApiArticleListInPage(article, pageVo));
    }
    @ApiOperation(value = "获取文章详情页", notes = "获取文章详情页")
    @GetMapping(value = "/findArticleDetail/{id}")
    public AjaxResult findArticleDetail(@PathVariable("id") Long id) {
        Article article = articleService.findById(id);
        AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功");
        ajaxResult.putInMap("article", article);
        return ajaxResult;
    }
}
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
@@ -5,16 +5,18 @@
import com.matrix.core.pojo.AjaxResult;
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.UsersQueryDto;
import com.matrix.system.app.dto.*;
import com.matrix.system.app.mapper.SysBeauticianStateMapper;
import com.matrix.system.app.mapper.SysUsersMapper;
import com.matrix.system.app.mapper.SysWorkBeatuistaffMapper;
import com.matrix.system.app.vo.BeauticianVo;
import com.matrix.system.app.vo.UserAchieveVo;
import com.matrix.system.app.vo.UserInfoDetailVo;
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 +31,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 +43,7 @@
@Api(value = "ApiUsersAction", tags = "用户中心接口类")
@RestController
@RequestMapping(value = "/api/user")
public class ApiUsersAction {
public class ApiUsersAction extends BaseController {
    @Autowired
    private AchieveNewService achieveNewService;
@@ -127,4 +131,51 @@
        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("修改失败");
    }
    @ApiOperation(value = "获取当前登陆用户信息", notes = "获取当前登陆用户信息")
    @ApiResponses({
            @ApiResponse(code = 200, message = "ok", response = UserInfoDetailVo.class)
    })
    @GetMapping(value = "/findUserInfo")
    public AjaxResult findUserInfo() {
        SysUsers user = getMe();
        UserInfoDetailVo userInfoDetailVo = SysUsersMapper.INSTANCE.usersToDetailInfoVo(user);
        AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功");
        ajaxResult.putInMap("detail", userInfoDetailVo);
        return ajaxResult;
    }
    @ApiOperation(value = "编辑当前用户信息", notes = "编辑当前用户信息")
    @PostMapping(value = "/modifyUserInfo")
    public AjaxResult modifyUserInfo(@RequestBody @Validated ModifyUserDto modifyUserDto) {
        SysUsers user = SysUsersMapper.INSTANCE.modifyUserDtoToUsers(modifyUserDto);
        user.setSuId(getMe().getSuId());
        int i = sysUsersService.modifyByModel(user);
        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/authority/AppAuthorityManager.java
New file
@@ -0,0 +1,223 @@
package com.matrix.system.app.authority;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.StringUtils;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.common.authority.AuthorityManager;
import com.matrix.system.common.authority.strategy.LoginStrategy;
import com.matrix.system.common.bean.SysFnBtnRel;
import com.matrix.system.common.bean.SysFunction;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.common.service.SysFunctionService;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.Map.Entry;
/**
 * DefaultAuthorityManager 实现了权限控制接口
 *
 * @author JIANGYOUYAO
 * @email 935090232@qq.com
 * @date 2017年12月6日
 */
@Component
public class AppAuthorityManager implements AuthorityManager {
    private static final int DEFAULT_2 = 2;
    @Autowired
    SysFunctionService sysFunctionService;
    public static final String USERFUNCTION = "userFunction";
    /** 用户所有路径权限的记录 **/
    public static final String USER_URL_MAPPING = "userUrlMapping";
    private AppAuthorityManager() {
    }
    public <T> T login(LoginStrategy loginStrategy) {
        @SuppressWarnings("unchecked")
        T user = (T) loginStrategy.login();
        WebUtil.setSessionAttribute(MatrixConstance.LOGIN_KEY, user);
        WebUtil.setSessionAttribute(AppConstance.DEFAULT_AUTHORITYMANAGER, this);
        return user;
    }
    @Override
    public void getLoginOut() {
        WebUtil.getSession().removeAttribute(MatrixConstance.LOGIN_KEY);
    }
    /**
     * 判断用户是否具有按钮功能
     *
     * @param matchStr
     * @return
     * @throws IllegalArgumentException
     */
    @Override
    public boolean isBtnPermitted(String matchStr) {
       throw new UnsupportedOperationException("未实现");
    }
    /**
     * 判断用户是否具有功能权限
     * @return
     */
    @Override
    public boolean isFnPermitted(String fnCode) {
        throw new UnsupportedOperationException("未实现");
    }
    /**
     * 初始化用户权限
     *
     * @author JIANGYOUYAO
     * @email 935090232@qq.com
     * @date 2017年12月5日
     * @param result
     * @param user
     */
    public void initUserPower(AjaxResult result, SysUsers user) {
        // 记录用户所有的功能
        Map<String, SysFunction> userFunction = new HashMap<>(MatrixConstance.COLLECTION_SIZE);
        //
        List<String> userUrlMapping = new ArrayList<>();
        // 获取用户所有权限
        getUserFunction(user,userFunction, userUrlMapping);
        // TODO 这里的用户权限应该放到redis缓存中,在拦截器中做权限拦截
        WebUtil.setSessionAttribute(USERFUNCTION, userFunction);
        WebUtil.setSessionAttribute(USER_URL_MAPPING, userUrlMapping);
        result.putInMap(USERFUNCTION, userFunction);
    }
    /**
     * 获取用的功能,包括菜单功能和非菜单功能
     *
     * @author JIANGYOUYAO
     * @email 935090232@qq.com
     * @date 2017年12月5日
     * @param userFunctionMap
     * @param userUrlMapping
     */
    private void getUserFunction(SysUsers sysUser, Map<String, SysFunction> userFunctionMap,
                                 List<String> userUrlMapping) {
        // 判断用户类型
        if (AppConstance.USER_TYPE_ADMIN.equals(sysUser.getSuUserType())) {
            // 管理员拥有公司全部权限
            List<SysFunction> tempList = sysFunctionService.findCompanyFunction(sysUser.getCompanyId());
            // 区分菜单和非菜单功能
            for (SysFunction sysFunction : tempList) {
                userFunctionMap.put(sysFunction.getFnCode(), sysFunction);
                // 注册访问路径
                registerUrlMapping(userUrlMapping, sysFunction,true);
            }
        } else if (AppConstance.USER_TYPE_EMPLOYEE.equals(sysUser.getSuUserType())) {
            // 普通员工账号只拥有自己所拥有的权限
            List<SysFunction> userFunctionList = sysFunctionService.findFunctionByRoleIds(sysUser.getRoleIds());
            for (SysFunction sysFunction : userFunctionList) {
                // TODO注册访问路径
                registerUrlMapping(userUrlMapping, sysFunction,false);
                if (userFunctionMap.containsKey(sysFunction.getFnCode())) {
                    // 如果功能已经被添加到集合中则追加权限按钮
                    SysFunction oneFunctionInMap = userFunctionMap.get(sysFunction.getFnCode());
                    // 为了方便判断所以用字符串记录一下
                    if (StringUtils.isBlank(oneFunctionInMap.getRpfBns())) {
                        oneFunctionInMap.setRpfBns(sysFunction.getRpfBns());
                    } else {
                        oneFunctionInMap.setRpfBns(oneFunctionInMap.getRpfBns() + "," + sysFunction.getRpfBns());
                    }
                } else {
                    // 如果是新功能则直接添加
                    userFunctionMap.put(sysFunction.getFnCode(), sysFunction);
                }
            }
        }
    }
    /**
     * 注册功能和按钮的访问路径
     *
     * @author JIANGYOUYAO
     * @email 935090232@qq.com
     * @date 2017年12月8日
     * @param userUrlMapping
     * @param sysFunction
     */
    private void registerUrlMapping(List<String> userUrlMapping, SysFunction sysFunction, boolean isAdmin) {
        String path = sysFunction.getFnPath();
        if (StringUtils.isNotBlank(path) && !userUrlMapping.contains(path)) {
            userUrlMapping.add(path);
        }
        // 注册按钮路径
        List<SysFnBtnRel> btnRels = sysFunction.getSysFnBtnRel();
        if (CollectionUtils.isNotEmpty(btnRels)) {
            for (SysFnBtnRel sysFnBtnRel : btnRels) {
                //公司管理员可以添加所有按钮权限否则只能添加员工自己所有拥有的权限
                if(isAdmin ||StringUtils.isContentSet(sysFnBtnRel.getBtnValue(),sysFunction.getRpfBns())){
                    String btnPath = sysFnBtnRel.getFbPath();
                    if (StringUtils.isNotBlank(btnPath) && !userUrlMapping.contains(btnPath)) {
                        userUrlMapping.add(btnPath);
                    }
                }
            }
        }
    }
    /**
     * 把菜单组装成树形结构
     *
     * @author JIANGYOUYAO
     * @email 935090232@qq.com
     * @date 2017年12月5日
     * @param menuFunction
     * @param menuFunctionMap
     */
    private void assembleMenu(List<SysFunction> menuFunction, Map<String, SysFunction> menuFunctionMap) {
        // 将map.entrySet()转换成list,并按照功能的FnSequence倒序
        List<Entry<String, SysFunction>> list = new ArrayList<>(menuFunctionMap.entrySet());
        Collections.sort(list, new Comparator<Entry<String, SysFunction>>() {
            @Override
            public int compare(Entry<String, SysFunction> o1, Entry<String, SysFunction> o2) {
                Integer a = o1.getValue().getFnSequence() == null ? 0 : o1.getValue().getFnSequence();
                Integer b = o2.getValue().getFnSequence() == null ? 0 : o2.getValue().getFnSequence();
                return Integer.compare(b, a);
            }
        });
        // 获取菜单权限,思路:如果遍历map如果功能存在父节点,就找到父节点然后把子节点加入进去,这样就只需要遍历一次
        for (Entry<String, SysFunction> entry : list) {
            String id = entry.getKey();
            SysFunction function = menuFunctionMap.get(id);
            // 如果是一级节点则直接存入菜单
            if (null == function.getFnParentId() || 0L == function.getFnParentId()) {
                menuFunction.add(function);
            } else {
                // 非一级节点找到父节点后存入
                SysFunction parentFn = menuFunctionMap.get(String.valueOf(function.getFnParentId()));
                if(parentFn!=null){
                    List<SysFunction> childs = parentFn.getChilds();
                    if (childs == null) {
                        parentFn.setChilds(new ArrayList<SysFunction>());
                    }
                    parentFn.getChilds().add(function);
                }
            }
        }
    }
}
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/ModifyUserDto.java
New file
@@ -0,0 +1,116 @@
package com.matrix.system.app.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
 * @author wzy
 * @date 2021-01-06
 **/
@ApiModel(value = "ModifyUserDto", description = "编辑用户信息接口参数接收类")
public class ModifyUserDto {
    @ApiModelProperty(value = "头像")
    private String photo;
    @NotBlank(message = "参数错误")
    @ApiModelProperty(value = "姓名")
    private String name;
    @ApiModelProperty(value = "英文名")
    private String engName;
    @NotBlank(message = "参数错误")
    @ApiModelProperty(value = "手机号")
    private String telphone;
    @ApiModelProperty(value = "性别")
    private String sex;
    @ApiModelProperty(value = "生日")
    private Date birthday;
    @ApiModelProperty(value = "邮箱")
    private String email;
    @ApiModelProperty(value = "服务签名")
    private String serviceSign;
    @ApiModelProperty(value = "地址")
    private String address;
    public String getPhoto() {
        return photo;
    }
    public void setPhoto(String photo) {
        this.photo = photo;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getEngName() {
        return engName;
    }
    public void setEngName(String engName) {
        this.engName = engName;
    }
    public String getTelphone() {
        return telphone;
    }
    public void setTelphone(String telphone) {
        this.telphone = telphone;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getServiceSign() {
        return serviceSign;
    }
    public void setServiceSign(String serviceSign) {
        this.serviceSign = serviceSign;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
}
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/mapper/SysUsersMapper.java
@@ -1,6 +1,8 @@
package com.matrix.system.app.mapper;
import com.matrix.system.app.dto.ModifyUserDto;
import com.matrix.system.app.vo.BeauticianVo;
import com.matrix.system.app.vo.UserInfoDetailVo;
import com.matrix.system.common.bean.SysUsers;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
@@ -24,4 +26,28 @@
    public abstract List<BeauticianVo> usersListToBeautyList(List<SysUsers> list);
    @Mapping(source = "suPhoto", target = "photo")
    @Mapping(source = "suName", target = "name")
    @Mapping(source = "suAliases", target = "engName")
    @Mapping(source = "suTel", target = "telphone")
    @Mapping(source = "suSex", target = "sex")
    @Mapping(source = "suBirthday", target = "birthday")
    @Mapping(source = "suEmail", target = "email")
    @Mapping(source = "serviceSignature", target = "serviceSign")
    @Mapping(source = "suAddress", target = "address")
    public abstract UserInfoDetailVo usersToDetailInfoVo(SysUsers sysUsers);
    public abstract ModifyUserDto usersToModifyUserDto(SysUsers sysUsers);
    @Mapping(target = "suPhoto", source = "photo")
    @Mapping(target = "suName", source = "name")
    @Mapping(target = "suAliases", source = "engName")
    @Mapping(target = "suTel", source = "telphone")
    @Mapping(target = "suSex", source = "sex")
    @Mapping(target = "suBirthday", source = "birthday")
    @Mapping(target = "suEmail", source = "email")
    @Mapping(target = "serviceSignature", source = "serviceSign")
    @Mapping(target = "suAddress", source = "address")
    public abstract SysUsers modifyUserDtoToUsers(ModifyUserDto modifyUserDto);
}
zq-erp/src/main/java/com/matrix/system/app/vo/UserInfoDetailVo.java
New file
@@ -0,0 +1,113 @@
package com.matrix.system.app.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
/**
 * @author wzy
 * @date 2021-01-06
 **/
@ApiModel(value = "UserInfoDetailVo", description = "获取当前登陆用户详情接口返回参数类")
public class UserInfoDetailVo {
    @ApiModelProperty(value = "头像")
    private String photo;
    @ApiModelProperty(value = "姓名")
    private String name;
    @ApiModelProperty(value = "英文名")
    private String engName;
    @ApiModelProperty(value = "手机号")
    private String telphone;
    @ApiModelProperty(value = "性别")
    private String sex;
    @ApiModelProperty(value = "生日")
    private Date birthday;
    @ApiModelProperty(value = "邮箱")
    private String email;
    @ApiModelProperty(value = "服务签名")
    private String serviceSign;
    @ApiModelProperty(value = "地址")
    private String address;
    public String getPhoto() {
        return photo;
    }
    public void setPhoto(String photo) {
        this.photo = photo;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getEngName() {
        return engName;
    }
    public void setEngName(String engName) {
        this.engName = engName;
    }
    public String getTelphone() {
        return telphone;
    }
    public void setTelphone(String telphone) {
        this.telphone = telphone;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getServiceSign() {
        return serviceSign;
    }
    public void setServiceSign(String serviceSign) {
        this.serviceSign = serviceSign;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
}
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/bean/Article.java
@@ -1,5 +1,8 @@
package com.matrix.system.hive.bean;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.matrix.core.tools.DateUtil;
import java.util.Date;
import java.io.Serializable;
/**
@@ -65,6 +68,7 @@
    /**
     * 创建时间
     */
    @JsonFormat(pattern = DateUtil.DATE_FORMAT_SS, timezone = "GMT+8")
    private Date  createtiem;
            
    
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;
@@ -56,6 +62,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);