zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java
@@ -4,24 +4,38 @@ 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.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 @@ -43,6 +57,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", 2000); 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; @@ -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);