From 890820479239a4ab0f9bda17ef1ffbe37af2aa6b Mon Sep 17 00:00:00 2001 From: damonyuan <404054358@qq.com> Date: Fri, 18 Oct 2024 01:26:38 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E5=A4=B1=E6=95=88=E7=9A=84bug=20fix=20?= =?UTF-8?q?=E6=B2=A1=E6=B3=95=E4=BF=AE=E6=94=B9=E7=94=A8=E6=88=B7=E8=B5=84?= =?UTF-8?q?=E6=96=99=E7=9A=84bug=20feat=20=E5=90=8C=E6=AD=A5=E7=9F=AD?= =?UTF-8?q?=E4=BF=A1=E5=8F=91=E9=80=81=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/system/SystemLoginServiceImpl.java | 1 + .../java/com/mdd/common/entity/file/File.java | 3 + .../common/entity/notice/NoticeRecord.java | 40 ++++-------- .../com/mdd/common/entity/smsLog/SmsLog.java | 56 ++++++++++++++++ .../java/com/mdd/common/enums/FileEnum.java | 46 +++++++++++++ .../java/com/mdd/common/enums/NoticeEnum.java | 31 +++++++-- .../common/mapper/smsLog/SmsLogMapper.java | 13 ++++ .../mdd/common/plugin/notice/NoticeCheck.java | 4 +- .../common/plugin/notice/NoticeDriver.java | 4 ++ .../plugin/notice/engine/SmsNoticeHandle.java | 43 +++++++++---- .../mdd/front/controller/IndexController.java | 30 --------- .../mdd/front/controller/SmsController.java | 64 +++++++++++++++++++ .../front/controller/UploadController.java | 32 +++++++++- .../mdd/front/controller/UserController.java | 6 +- .../com/mdd/front/service/IFileService.java | 16 +++++ .../com/mdd/front/service/IUserService.java | 2 +- .../front/service/impl/FileServiceImpl.java | 64 +++++++++++++++++++ .../front/service/impl/LoginServiceImpl.java | 2 +- .../front/service/impl/UserServiceImpl.java | 24 +++---- .../front/validate/common/SmsValidate.java | 2 +- .../validate/users/UserUpdateValidate.java | 4 +- .../mdd/front/vo/upload/UploadImagesVo.java | 19 ++++++ 22 files changed, 408 insertions(+), 98 deletions(-) create mode 100644 server/like-common/src/main/java/com/mdd/common/entity/smsLog/SmsLog.java create mode 100644 server/like-common/src/main/java/com/mdd/common/enums/FileEnum.java create mode 100644 server/like-common/src/main/java/com/mdd/common/mapper/smsLog/SmsLogMapper.java create mode 100644 server/like-front/src/main/java/com/mdd/front/controller/SmsController.java create mode 100644 server/like-front/src/main/java/com/mdd/front/service/IFileService.java create mode 100644 server/like-front/src/main/java/com/mdd/front/service/impl/FileServiceImpl.java create mode 100644 server/like-front/src/main/java/com/mdd/front/vo/upload/UploadImagesVo.java diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/impl/system/SystemLoginServiceImpl.java b/server/like-admin/src/main/java/com/mdd/admin/service/impl/system/SystemLoginServiceImpl.java index edeb0d8e..f1624e2f 100644 --- a/server/like-admin/src/main/java/com/mdd/admin/service/impl/system/SystemLoginServiceImpl.java +++ b/server/like-admin/src/main/java/com/mdd/admin/service/impl/system/SystemLoginServiceImpl.java @@ -109,6 +109,7 @@ public class SystemLoginServiceImpl implements ISystemLoginService { throw new LoginException(ErrorEnum.FAILED.getCode(), ErrorEnum.LOGIN_DISABLE_ERROR.getMsg()); } String md5Pwd = ToolUtils.makePassword(password); + System.out.println(md5Pwd); if (!md5Pwd.equals(sysAdmin.getPassword())) { this.recordLoginLog(sysAdmin.getId(), loginsValidate.getAccount(), ErrorEnum.FAILED.getMsg()); throw new LoginException(ErrorEnum.FAILED.getCode(), ErrorEnum.LOGIN_ACCOUNT_ERROR.getMsg()); diff --git a/server/like-common/src/main/java/com/mdd/common/entity/file/File.java b/server/like-common/src/main/java/com/mdd/common/entity/file/File.java index b44120ad..28c8610f 100644 --- a/server/like-common/src/main/java/com/mdd/common/entity/file/File.java +++ b/server/like-common/src/main/java/com/mdd/common/entity/file/File.java @@ -24,6 +24,9 @@ public class File implements Serializable { @ApiModelProperty("上传者id") private Integer sourceId; + @ApiModelProperty("来源类型[0-后台,1-用户]") + private Integer source; + @ApiModelProperty("文件类型: [10=图片, 20=视频]") private Integer type; diff --git a/server/like-common/src/main/java/com/mdd/common/entity/notice/NoticeRecord.java b/server/like-common/src/main/java/com/mdd/common/entity/notice/NoticeRecord.java index 94f4b299..602a8763 100644 --- a/server/like-common/src/main/java/com/mdd/common/entity/notice/NoticeRecord.java +++ b/server/like-common/src/main/java/com/mdd/common/entity/notice/NoticeRecord.java @@ -18,47 +18,30 @@ public class NoticeRecord implements Serializable { @ApiModelProperty("主键") private Integer id; - @ApiModelProperty("场景") - private Integer scene; - @ApiModelProperty("用户") private Integer userId; - @ApiModelProperty("账号") - private String account; - @ApiModelProperty("编码") private String title; - @ApiModelProperty("编码") - private String code; - @ApiModelProperty("内容") private String content; - @ApiModelProperty("错误") - private String error; - - @ApiModelProperty("发送类型: [1=系统, 2=短信, 3=公众号, 4=小程序]") - private Integer sender; - - @ApiModelProperty("接收对象: [1=用户, 2=平台]") - private Integer receiver; - - @ApiModelProperty("通知状态: [0=等待, 1=成功, 2=失败]") - private Integer status; + @ApiModelProperty("场景") + private Integer sceneId; @ApiModelProperty("已读状态: [0=未读, 1=已读]") - private Integer isRead; + private Integer read; - @ApiModelProperty("是验证码: [0=否的, 1=是的]") - private Integer isCaptcha; + @ApiModelProperty("通知接收对象类型;1-会员;2-商家;3-平台;4-游客(未注册用户)") + private Integer recipient; - @ApiModelProperty("是否删除: [0=否,1=是]") - private Integer isDelete; - - @ApiModelProperty("失效时间") - private Long expireTime; + @ApiModelProperty("通知发送类型 1-系统通知 2-短信通知 3-微信模板 4-微信小程序") + private Integer sendType; + @ApiModelProperty("通知类型 1-业务通知 2-验证码") + private Integer noticeType; + @ApiModelProperty("其他") + private String extra; @ApiModelProperty("创建时间") private Long createTime; @@ -68,5 +51,4 @@ public class NoticeRecord implements Serializable { @ApiModelProperty("删除时间") private Long deleteTime; - } diff --git a/server/like-common/src/main/java/com/mdd/common/entity/smsLog/SmsLog.java b/server/like-common/src/main/java/com/mdd/common/entity/smsLog/SmsLog.java new file mode 100644 index 00000000..91f1053f --- /dev/null +++ b/server/like-common/src/main/java/com/mdd/common/entity/smsLog/SmsLog.java @@ -0,0 +1,56 @@ +package com.mdd.common.entity.smsLog; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel("短信记录实体") +public class SmsLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value="id", type= IdType.AUTO) + @ApiModelProperty("主键") + private Integer id; + + @ApiModelProperty("场景") + private Integer sceneId; + + @ApiModelProperty("手机号码") + private String mobile; + + @ApiModelProperty("发送内容") + private String content; + + @ApiModelProperty("发送关键字(注册、找回密码)") + private String code; + + @ApiModelProperty("是否已验证;0-否;1-是") + private Integer isVerify; + + @ApiModelProperty("验证次数") + private Integer checkNum; + + @ApiModelProperty("发送状态:0-发送中;1-发送成功;2-发送失败") + private Integer sendStatus; + + @ApiModelProperty("发送时间") + private Long sendTime; + + @ApiModelProperty("短信结果") + private String results; + + @ApiModelProperty("创建时间") + private Long createTime; + + @ApiModelProperty("更新时间") + private Long updateTime; + + @ApiModelProperty("删除时间") + private Long deleteTime; +} diff --git a/server/like-common/src/main/java/com/mdd/common/enums/FileEnum.java b/server/like-common/src/main/java/com/mdd/common/enums/FileEnum.java new file mode 100644 index 00000000..b05364c6 --- /dev/null +++ b/server/like-common/src/main/java/com/mdd/common/enums/FileEnum.java @@ -0,0 +1,46 @@ +package com.mdd.common.enums; + +/** + * 相册枚举 + */ +public enum FileEnum { + + IMAGE_TYPE(10, "图片类型"), + VIDEO_TYPE(20, "视频类型"), + FILE_TYPE(30, "文件类型"), + + // 图片来源 + SOURCE_ADMIN(0, "后台"), + SOURCE_USER(1, "用户"); + + /** + * 构造方法 + */ + private final int code; + private final String msg; + FileEnum(int code, String msg) { + this.code = code; + this.msg = msg; + } + + /** + * 获取状态码 + * + * @author fzr + * @return Long + */ + public int getCode() { + return this.code; + } + + /** + * 获取提示 + * + * @author fzr + * @return String + */ + public String getMsg() { + return this.msg; + } + +} diff --git a/server/like-common/src/main/java/com/mdd/common/enums/NoticeEnum.java b/server/like-common/src/main/java/com/mdd/common/enums/NoticeEnum.java index 4f17ca7d..a233ab7a 100644 --- a/server/like-common/src/main/java/com/mdd/common/enums/NoticeEnum.java +++ b/server/like-common/src/main/java/com/mdd/common/enums/NoticeEnum.java @@ -1,5 +1,8 @@ package com.mdd.common.enums; +import com.alibaba.fastjson2.JSONObject; +import com.mdd.common.util.StringUtils; + /** * 通知枚举类 */ @@ -17,10 +20,10 @@ public enum NoticeEnum { SENDER_MNP(3, "小程序类型"), SENDER_OA(4, "公众号类型"), - LOGIN_CODE(101, "登录验证码"), - BIND_MOBILE_CODE(102, "绑定手机验证码"), - CHANGE_MOBILE_CODE(103, "变更手机验证码"), - FORGOT_PASSWORD_CODE(104, "找回登录密码验证码"); + LOGIN_CAPTCHA(101, "登录验证码"), + BIND_MOBILE_CAPTCHA(102, "绑定手机验证码"), + CHANGE_MOBILE_CAPTCHA(103, "变更手机验证码"), + FIND_LOGIN_PASSWORD_CAPTCHA(104, "找回登录密码验证码"); /** * 构造方法 @@ -52,4 +55,24 @@ public enum NoticeEnum { return this.msg; } + /** + * @notes 更具标记获取场景 + * @param $tag + * @return int|string + * @author damonyuan + */ + public static Integer getSceneByTag( String tag ) { + JSONObject scene = new JSONObject(); + // 手机验证码登录 + scene.put("YZMDL", LOGIN_CAPTCHA.getCode()); + // 绑定手机号验证码 + scene.put("BDSJHM", BIND_MOBILE_CAPTCHA.getCode()); + // 变更手机号验证码 + scene.put("BGSJHM", CHANGE_MOBILE_CAPTCHA.getCode()); + // 找回登录密码 + scene.put("ZHDLMM", FIND_LOGIN_PASSWORD_CAPTCHA.getCode()); + + return scene.getInteger(tag); + } + } diff --git a/server/like-common/src/main/java/com/mdd/common/mapper/smsLog/SmsLogMapper.java b/server/like-common/src/main/java/com/mdd/common/mapper/smsLog/SmsLogMapper.java new file mode 100644 index 00000000..b080df65 --- /dev/null +++ b/server/like-common/src/main/java/com/mdd/common/mapper/smsLog/SmsLogMapper.java @@ -0,0 +1,13 @@ +package com.mdd.common.mapper.smsLog; + +import com.mdd.common.core.basics.IBaseMapper; +import com.mdd.common.entity.Config; +import com.mdd.common.entity.smsLog.SmsLog; +import org.apache.ibatis.annotations.Mapper; + +/** + * 短信记录 + */ +@Mapper +public interface SmsLogMapper extends IBaseMapper { +} diff --git a/server/like-common/src/main/java/com/mdd/common/plugin/notice/NoticeCheck.java b/server/like-common/src/main/java/com/mdd/common/plugin/notice/NoticeCheck.java index 34538892..b9a68eb8 100644 --- a/server/like-common/src/main/java/com/mdd/common/plugin/notice/NoticeCheck.java +++ b/server/like-common/src/main/java/com/mdd/common/plugin/notice/NoticeCheck.java @@ -30,9 +30,9 @@ public class NoticeCheck { return false; } - boolean result = noticeRecord.getExpireTime() > (System.currentTimeMillis() / 1000); + boolean result = noticeRecord.getCreateTime() > ((System.currentTimeMillis() / 1000) - (5 * 60)); //5分钟有效 - noticeRecord.setIsRead(1); + noticeRecord.setRead(1); noticeRecord.setUpdateTime(System.currentTimeMillis() / 1000); noticeRecordMapper.updateById(noticeRecord); return result; diff --git a/server/like-common/src/main/java/com/mdd/common/plugin/notice/NoticeDriver.java b/server/like-common/src/main/java/com/mdd/common/plugin/notice/NoticeDriver.java index eda51572..82acde42 100644 --- a/server/like-common/src/main/java/com/mdd/common/plugin/notice/NoticeDriver.java +++ b/server/like-common/src/main/java/com/mdd/common/plugin/notice/NoticeDriver.java @@ -2,8 +2,10 @@ package com.mdd.common.plugin.notice; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.mdd.common.entity.notice.NoticeSetting; +import com.mdd.common.entity.smsLog.SmsLog; import com.mdd.common.exception.OperateException; import com.mdd.common.mapper.notice.NoticeSettingMapper; +import com.mdd.common.mapper.smsLog.SmsLogMapper; import com.mdd.common.plugin.notice.engine.SmsNoticeHandle; import com.mdd.common.plugin.notice.template.SmsTemplate; import com.mdd.common.plugin.notice.vo.NoticeSmsVo; @@ -16,6 +18,7 @@ import com.mdd.common.util.StringUtils; public class NoticeDriver { public static void handle(NoticeSmsVo noticeSmsVo) { + System.out.println(11123); // 场景模板 NoticeSettingMapper noticeSettingMapper = SpringUtils.getBean(NoticeSettingMapper.class); NoticeSetting noticeSetting = noticeSettingMapper.selectOne( @@ -32,6 +35,7 @@ public class NoticeDriver { smsTemplate.setName(noticeSetting.getSceneName()); smsTemplate.setType(noticeSetting.getType()); smsTemplate.setParams(noticeSetting.getSmsNotice()); + System.out.println(1111); if (StringUtils.isNotNull(smsTemplate.getStatus()) && smsTemplate.getStatus().equals(1)) { (new SmsNoticeHandle()).send(noticeSmsVo, smsTemplate); } diff --git a/server/like-common/src/main/java/com/mdd/common/plugin/notice/engine/SmsNoticeHandle.java b/server/like-common/src/main/java/com/mdd/common/plugin/notice/engine/SmsNoticeHandle.java index eed94f7d..6f12ca57 100644 --- a/server/like-common/src/main/java/com/mdd/common/plugin/notice/engine/SmsNoticeHandle.java +++ b/server/like-common/src/main/java/com/mdd/common/plugin/notice/engine/SmsNoticeHandle.java @@ -1,9 +1,11 @@ package com.mdd.common.plugin.notice.engine; import com.mdd.common.entity.notice.NoticeRecord; +import com.mdd.common.entity.smsLog.SmsLog; import com.mdd.common.enums.NoticeEnum; import com.mdd.common.exception.OperateException; import com.mdd.common.mapper.notice.NoticeRecordMapper; +import com.mdd.common.mapper.smsLog.SmsLogMapper; import com.mdd.common.plugin.notice.vo.NoticeSmsVo; import com.mdd.common.plugin.notice.template.SmsTemplate; import com.mdd.common.plugin.sms.SmsDriver; @@ -26,6 +28,7 @@ public class SmsNoticeHandle { * @param smsTemplate 短信模板 */ public void send(NoticeSmsVo noticeSmsVo, SmsTemplate smsTemplate) { + System.out.println("111asd"); // 基础参数 String mobile = noticeSmsVo.getMobile(); Integer scene = noticeSmsVo.getScene(); @@ -45,21 +48,23 @@ public class SmsNoticeHandle { NoticeRecordMapper noticeRecordMapper = SpringUtils.getBean(NoticeRecordMapper.class); int expire = StringUtils.isNull(noticeSmsVo.getExpire()) ? 0 : noticeSmsVo.getExpire(); NoticeRecord noticeRecord = new NoticeRecord(); - noticeRecord.setScene(scene); + noticeRecord.setSceneId(scene); noticeRecord.setUserId(0); - noticeRecord.setAccount(mobile); noticeRecord.setTitle(smsTemplate.getName()); - noticeRecord.setCode(params.getOrDefault("code", "")); noticeRecord.setContent(this.getContent(params, smsTemplate.getContent())); - noticeRecord.setReceiver(NoticeEnum.SENDER_SMS.getCode()); - noticeRecord.setStatus(NoticeEnum.STATUS_WAIT.getCode()); - noticeRecord.setIsRead(NoticeEnum.VIEW_UNREAD.getCode()); - noticeRecord.setIsCaptcha(smsTemplate.getType().equals(2) ? 1 : 0); - noticeRecord.setExpireTime(expire + (System.currentTimeMillis() / 1000)); + noticeRecord.setRecipient(NoticeEnum.SENDER_SMS.getCode()); + noticeRecord.setRead(NoticeEnum.VIEW_UNREAD.getCode()); noticeRecord.setCreateTime(System.currentTimeMillis() / 1000); noticeRecord.setUpdateTime(System.currentTimeMillis() / 1000); noticeRecordMapper.insert(noticeRecord); + //记录到sms log + SmsLogMapper smsLogMapper = SpringUtils.getBean(SmsLogMapper.class); + SmsLog smsLog = new SmsLog(); + smsLog.setSceneId(noticeSmsVo.getScene()); + smsLog.setMobile(noticeSmsVo.getMobile()); + smsLog.setContent(this.getContent(params, smsTemplate.getContent())); + // 消息发送 if (StringUtils.isNotEmpty(mobile)) { try { @@ -69,14 +74,30 @@ public class SmsNoticeHandle { .setTemplateParam(this.getSmsParams(params, smsTemplate.getContent())) .sendSms(); - noticeRecord.setStatus(NoticeEnum.STATUS_OK.getCode()); noticeRecord.setUpdateTime(System.currentTimeMillis() / 1000); noticeRecordMapper.updateById(noticeRecord); + + //记录到log + smsLog.setIsVerify(0); + smsLog.setCheckNum(0); + smsLog.setSendStatus(1); + smsLog.setSendTime(System.currentTimeMillis() / 1000); + smsLog.setCreateTime(System.currentTimeMillis() / 1000); + smsLog.setUpdateTime(System.currentTimeMillis() / 1000); + smsLogMapper.insert(smsLog); + } catch (OperateException e) { - noticeRecord.setError(e.getMsg()); - noticeRecord.setStatus(NoticeEnum.STATUS_FAIL.getCode()); noticeRecord.setUpdateTime(System.currentTimeMillis() / 1000); noticeRecordMapper.updateById(noticeRecord); + + //记录到log + smsLog.setIsVerify(0); + smsLog.setCheckNum(0); + smsLog.setSendStatus(2); + smsLog.setSendTime(System.currentTimeMillis() / 1000); + smsLog.setCreateTime(System.currentTimeMillis() / 1000); + smsLog.setUpdateTime(System.currentTimeMillis() / 1000); + smsLogMapper.insert(smsLog); } } } diff --git a/server/like-front/src/main/java/com/mdd/front/controller/IndexController.java b/server/like-front/src/main/java/com/mdd/front/controller/IndexController.java index 7ef2ac57..1d756038 100644 --- a/server/like-front/src/main/java/com/mdd/front/controller/IndexController.java +++ b/server/like-front/src/main/java/com/mdd/front/controller/IndexController.java @@ -74,34 +74,4 @@ public class IndexController { List list = iIndexService.hotSearch(); return AjaxResult.success(list); } - - @NotLogin - @PostMapping("/sendSms") - @ApiOperation(value="发送短信") - public AjaxResult sendSms(@Validated @RequestBody SmsValidate smsValidate) { - NoticeRecord noticeRecord = noticeRecordMapper.selectOne(new QueryWrapper() - .eq("account", smsValidate.getMobile()) - .eq("scene", smsValidate.getScene()) - .eq("status", Arrays.asList(NoticeEnum.STATUS_WAIT, NoticeEnum.STATUS_OK)) - .orderByDesc("id") - .last("limit 1")); - - if (StringUtils.isNotNull(noticeRecord)) { - if (noticeRecord.getCreateTime() >= (System.currentTimeMillis() / 1000 - 60)){ - throw new OperateException("操作频繁,请稍后再试!"); - } - } - - NoticeSmsVo params = new NoticeSmsVo() - .setScene(smsValidate.getScene()) - .setMobile(smsValidate.getMobile()) - .setExpire(900) - .setParams(new String[] { - "code:" + ToolUtils.randomInt(4) - }); - - NoticeDriver.handle(params); - return AjaxResult.success(); - } - } diff --git a/server/like-front/src/main/java/com/mdd/front/controller/SmsController.java b/server/like-front/src/main/java/com/mdd/front/controller/SmsController.java new file mode 100644 index 00000000..5638d35f --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/controller/SmsController.java @@ -0,0 +1,64 @@ +package com.mdd.front.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.mdd.common.aop.NotLogin; +import com.mdd.common.core.AjaxResult; +import com.mdd.common.entity.notice.NoticeRecord; +import com.mdd.common.enums.NoticeEnum; +import com.mdd.common.exception.OperateException; +import com.mdd.common.mapper.notice.NoticeRecordMapper; +import com.mdd.common.plugin.notice.NoticeDriver; +import com.mdd.common.plugin.notice.vo.NoticeSmsVo; +import com.mdd.common.util.StringUtils; +import com.mdd.common.util.ToolUtils; +import com.mdd.common.validator.annotation.IDMust; +import com.mdd.front.service.IIndexService; +import com.mdd.front.validate.common.SmsValidate; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/api/sms") +@Api(tags = "主页管理") +public class SmsController { + + @Resource + NoticeRecordMapper noticeRecordMapper; + + @NotLogin + @PostMapping("/sendCode") + @ApiOperation(value="发送短信") + public AjaxResult sendSms(@Validated @RequestBody SmsValidate smsValidate) { + NoticeRecord noticeRecord = noticeRecordMapper.selectOne(new QueryWrapper() + .eq("account", smsValidate.getMobile()) + .eq("scene", smsValidate.getScene()) + .eq("status", Arrays.asList(NoticeEnum.STATUS_WAIT, NoticeEnum.STATUS_OK)) + .orderByDesc("id") + .last("limit 1")); + + if (StringUtils.isNotNull(noticeRecord)) { + if (noticeRecord.getCreateTime() >= (System.currentTimeMillis() / 1000 - 60)){ + throw new OperateException("操作频繁,请稍后再试!"); + } + } + + NoticeSmsVo params = new NoticeSmsVo() + .setScene(NoticeEnum.getSceneByTag(smsValidate.getScene())) + .setMobile(smsValidate.getMobile()) + .setExpire(900) + .setParams(new String[] { + "code:" + ToolUtils.randomInt(4) + }); + + NoticeDriver.handle(params); + return AjaxResult.success(); + } + +} diff --git a/server/like-front/src/main/java/com/mdd/front/controller/UploadController.java b/server/like-front/src/main/java/com/mdd/front/controller/UploadController.java index 6b6a3893..e1ddc994 100644 --- a/server/like-front/src/main/java/com/mdd/front/controller/UploadController.java +++ b/server/like-front/src/main/java/com/mdd/front/controller/UploadController.java @@ -3,10 +3,14 @@ package com.mdd.front.controller; import com.mdd.common.aop.NotLogin; import com.mdd.common.core.AjaxResult; import com.mdd.common.enums.AlbumEnum; +import com.mdd.common.enums.FileEnum; import com.mdd.common.exception.OperateException; import com.mdd.common.plugin.storage.StorageDriver; import com.mdd.common.plugin.storage.UploadFilesVo; import com.mdd.common.util.StringUtils; +import com.mdd.front.LikeFrontThreadLocal; +import com.mdd.front.service.IFileService; +import com.mdd.front.vo.upload.UploadImagesVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.PostMapping; @@ -15,17 +19,23 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartRequest; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.Map; @RestController @RequestMapping("/api/upload") @Api(tags = "上传管理") public class UploadController { + @Resource + IFileService iFileService; + @NotLogin @PostMapping("/image") @ApiOperation(value="上传图片") - public AjaxResult image(HttpServletRequest request) { + public AjaxResult image(HttpServletRequest request) { MultipartFile multipartFile; try { multipartFile = ((MultipartRequest) request).getFile("file"); @@ -44,7 +54,25 @@ public class UploadController { StorageDriver storageDriver = new StorageDriver(); UploadFilesVo vo = storageDriver.upload(multipartFile, folder, AlbumEnum.IMAGE.getCode()); - return AjaxResult.success(vo); + System.out.println(vo); + + Map params = new HashMap<>(); + params.put("cid", "0"); + params.put("uid", String.valueOf(LikeFrontThreadLocal.getUserId())); + params.put("source", String.valueOf(FileEnum.SOURCE_USER.getCode())); + params.put("type", String.valueOf(FileEnum.IMAGE_TYPE.getCode())); + params.put("name", vo.getName()); + params.put("url", vo.getUrl()); + Integer id = iFileService.fileAdd(params); + + UploadImagesVo upVo = new UploadImagesVo(); + upVo.setUrl(vo.getUrl()); + upVo.setUri(vo.getPath()); + upVo.setId(id); + upVo.setType(FileEnum.IMAGE_TYPE.getCode()); + upVo.setName(vo.getName()); + upVo.setCid(0); + return AjaxResult.success(upVo); } } diff --git a/server/like-front/src/main/java/com/mdd/front/controller/UserController.java b/server/like-front/src/main/java/com/mdd/front/controller/UserController.java index 3828e492..0ba85917 100644 --- a/server/like-front/src/main/java/com/mdd/front/controller/UserController.java +++ b/server/like-front/src/main/java/com/mdd/front/controller/UserController.java @@ -41,12 +41,12 @@ public class UserController { return AjaxResult.success(vo); } - @PostMapping("/edit") + @PostMapping("/setInfo") @ApiOperation(value="编辑信息") - public AjaxResult edit(@Validated @RequestBody UserUpdateValidate updateValidate) { + public AjaxResult setInfo(@Validated @RequestBody UserUpdateValidate updateValidate) { Integer userId = LikeFrontThreadLocal.getUserId(); - iUserService.edit(updateValidate, userId); + iUserService.setInfo(updateValidate, userId); return AjaxResult.success(); } diff --git a/server/like-front/src/main/java/com/mdd/front/service/IFileService.java b/server/like-front/src/main/java/com/mdd/front/service/IFileService.java new file mode 100644 index 00000000..b30af0cb --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/service/IFileService.java @@ -0,0 +1,16 @@ +package com.mdd.front.service; + +import java.util.Map; + +/** + * 文件服务接口类 + */ +public interface IFileService { + /** + * 文件新增 + * + * @author fzr + * @param params 文件信息参数 + */ + Integer fileAdd(Map params); +} diff --git a/server/like-front/src/main/java/com/mdd/front/service/IUserService.java b/server/like-front/src/main/java/com/mdd/front/service/IUserService.java index a66c52b7..6ddbaf0e 100644 --- a/server/like-front/src/main/java/com/mdd/front/service/IUserService.java +++ b/server/like-front/src/main/java/com/mdd/front/service/IUserService.java @@ -35,7 +35,7 @@ public interface IUserService { * @param updateValidate 参数 * @param userId 用户ID */ - void edit(UserUpdateValidate updateValidate, Integer userId); + void setInfo(UserUpdateValidate updateValidate, Integer userId); /** * 修改密码 diff --git a/server/like-front/src/main/java/com/mdd/front/service/impl/FileServiceImpl.java b/server/like-front/src/main/java/com/mdd/front/service/impl/FileServiceImpl.java new file mode 100644 index 00000000..81abaff1 --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/service/impl/FileServiceImpl.java @@ -0,0 +1,64 @@ +package com.mdd.front.service.impl; + +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.mdd.common.config.GlobalConfig; +import com.mdd.common.core.PageResult; +import com.mdd.common.entity.file.File; +import com.mdd.common.entity.file.FileCate; +import com.mdd.common.mapper.album.FileCateMapper; +import com.mdd.common.mapper.album.FileMapper; +import com.mdd.common.util.*; +import com.mdd.front.service.IFileService; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +/** + * 文件服务实现类 + */ +@Service +public class FileServiceImpl implements IFileService { + + @Resource + FileMapper fileMapper; + + @Resource + FileCateMapper fileCateMapper; + + /** + * 文件新增 + * + * @author fzr + * @param params 文件信息参数 + */ + @Override + public Integer fileAdd(Map params) { + String name = params.get("name"); + if (name.length() >= 100) { + name = name.substring(0, 99); + } + + File album = new File(); + album.setCid(Integer.parseInt(params.get("cid") == null ? "0" : params.get("cid"))); + album.setSourceId(Integer.parseInt(params.get("uid") == null ? "0" : params.get("uid"))); + album.setType(Integer.parseInt(params.get("type"))); + album.setSource(Integer.parseInt(params.get("source") == null ? "0" : params.get("source"))); + album.setName(name); + album.setUri(params.get("url")); + album.setCreateTime(System.currentTimeMillis() / 1000); + album.setUpdateTime(System.currentTimeMillis() / 1000); + fileMapper.insert(album); + return album.getId(); + } + +} diff --git a/server/like-front/src/main/java/com/mdd/front/service/impl/LoginServiceImpl.java b/server/like-front/src/main/java/com/mdd/front/service/impl/LoginServiceImpl.java index 1ffef37b..f08b7dcf 100644 --- a/server/like-front/src/main/java/com/mdd/front/service/impl/LoginServiceImpl.java +++ b/server/like-front/src/main/java/com/mdd/front/service/impl/LoginServiceImpl.java @@ -116,7 +116,7 @@ public class LoginServiceImpl implements ILoginService { @Override public LoginTokenVo mobileLogin(String mobile, String code, Integer terminal) { // 校验验证码 - int sceneCode = NoticeEnum.LOGIN_CODE.getCode(); + int sceneCode = NoticeEnum.LOGIN_CAPTCHA.getCode(); if (!NoticeCheck.verify(sceneCode, code)) { throw new OperateException("验证码错误!"); } diff --git a/server/like-front/src/main/java/com/mdd/front/service/impl/UserServiceImpl.java b/server/like-front/src/main/java/com/mdd/front/service/impl/UserServiceImpl.java index cb25b546..830f7cb6 100644 --- a/server/like-front/src/main/java/com/mdd/front/service/impl/UserServiceImpl.java +++ b/server/like-front/src/main/java/com/mdd/front/service/impl/UserServiceImpl.java @@ -130,7 +130,7 @@ public class UserServiceImpl implements IUserService { * @param userId 用户ID */ @Override - public void edit(UserUpdateValidate updateValidate, Integer userId) { + public void setInfo(UserUpdateValidate updateValidate, Integer userId) { String field = updateValidate.getField(); String value = updateValidate.getValue(); @@ -142,11 +142,11 @@ public class UserServiceImpl implements IUserService { avatarUser.setUpdateTime(System.currentTimeMillis() / 1000); userMapper.updateById(avatarUser); break; - case "username": + case "account": User usernameUser = userMapper.selectOne(new QueryWrapper() - .select("id,username") - .eq("username", value) - .eq("is_delete", 0) + .select("id,account") + .eq("account", value) + .isNull("delete_time") .last("limit 1")); if (StringUtils.isNotNull(usernameUser) && !usernameUser.getId().equals(userId)) { @@ -194,7 +194,7 @@ public class UserServiceImpl implements IUserService { User user = userMapper.selectOne(new QueryWrapper() .select("id,password,salt") .eq("id", userId) - .eq("is_delete", 0) + .isNull("delete_time") .last("limit 1")); Assert.notNull(user, "用户不存在"); @@ -227,15 +227,15 @@ public class UserServiceImpl implements IUserService { @Override public void forgotPwd(String password, String mobile, String code) { // 校验验证码 - int sceneCode = NoticeEnum.FORGOT_PASSWORD_CODE.getCode(); + int sceneCode = NoticeEnum.FIND_LOGIN_PASSWORD_CAPTCHA.getCode(); if (!NoticeCheck.verify(sceneCode, code)) { throw new OperateException("验证码错误!"); } // 查询手机号 User user = userMapper.selectOne(new QueryWrapper() - .select("id,username,mobile,is_disable") - .eq("is_delete", 0) + .select("id,account,mobile,is_disable") + .isNull("delete_time") .eq("mobile", mobile) .last("limit 1")); @@ -265,15 +265,15 @@ public class UserServiceImpl implements IUserService { String code = mobileValidate.getCode().toLowerCase(); // 校验验证码 - int sceneCode = type.equals("bind") ? NoticeEnum.BIND_MOBILE_CODE.getCode() : NoticeEnum.CHANGE_MOBILE_CODE.getCode() ; + int sceneCode = type.equals("bind") ? NoticeEnum.BIND_MOBILE_CAPTCHA.getCode() : NoticeEnum.CHANGE_MOBILE_CAPTCHA.getCode() ; if (!NoticeCheck.verify(sceneCode, code)) { throw new OperateException("验证码错误!"); } User user = userMapper.selectOne(new QueryWrapper() - .select("id,username,mobile") + .select("id,account,mobile") .eq("mobile", mobile) - .eq("is_delete", 0) + .isNull("delete_time") .last("limit 1")); if (StringUtils.isNotNull(user) && user.getId().equals(userId)) { diff --git a/server/like-front/src/main/java/com/mdd/front/validate/common/SmsValidate.java b/server/like-front/src/main/java/com/mdd/front/validate/common/SmsValidate.java index 2882854f..f637bad4 100644 --- a/server/like-front/src/main/java/com/mdd/front/validate/common/SmsValidate.java +++ b/server/like-front/src/main/java/com/mdd/front/validate/common/SmsValidate.java @@ -18,7 +18,7 @@ public class SmsValidate implements Serializable { @NotNull(message = "scene参数缺失") @ApiModelProperty(value = "场景码") - private Integer scene; + private String scene; @NotNull(message = "mobile参数缺失") @NotEmpty(message = "手机号不能为空") diff --git a/server/like-front/src/main/java/com/mdd/front/validate/users/UserUpdateValidate.java b/server/like-front/src/main/java/com/mdd/front/validate/users/UserUpdateValidate.java index 1f2c00a3..6e20f62b 100644 --- a/server/like-front/src/main/java/com/mdd/front/validate/users/UserUpdateValidate.java +++ b/server/like-front/src/main/java/com/mdd/front/validate/users/UserUpdateValidate.java @@ -15,8 +15,8 @@ public class UserUpdateValidate implements Serializable { private static final long serialVersionUID = 1L; @NotNull(message = "field参数缺失") - @StringContains(values = {"avatar", "username", "nickname", "sex"}) - @ApiModelProperty(value = "操作字段", required = true, example = "avatar,username,nickname,sex") + @StringContains(values = {"avatar", "account", "nickname", "sex"}) + @ApiModelProperty(value = "操作字段", required = true, example = "avatar,account,nickname,sex") private String field; @NotNull(message = "value参数缺失") diff --git a/server/like-front/src/main/java/com/mdd/front/vo/upload/UploadImagesVo.java b/server/like-front/src/main/java/com/mdd/front/vo/upload/UploadImagesVo.java new file mode 100644 index 00000000..ae8b0fa7 --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/vo/upload/UploadImagesVo.java @@ -0,0 +1,19 @@ +package com.mdd.front.vo.upload; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class UploadImagesVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer id; + private Integer cid; + private Integer type; + private String name; + private String url; + private String uri; + +}