From 6f7507665afbf3a3a985c0554cb4031d3b84a1a7 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期一, 17 六月 2024 14:55:19 +0800 Subject: [PATCH] 1.修改bug 2.对接聚通达短信服务 --- ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CustomConfigController.java | 7 ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java | 12 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CustomConfigServiceImpl.java | 54 ++++++++-- ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponService.java | 5 + ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java | 7 + ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderReturnRequestMapper.xml | 8 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ICustomConfigService.java | 5 ruoyi-auth/src/main/java/com/ruoyi/auth/utils/JuTongDaSMSUtil.java | 141 ++++++++++++++++++++++++++++ ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java | 3 ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java | 3 10 files changed, 210 insertions(+), 35 deletions(-) diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java index af14835..a14e00c 100644 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java +++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java @@ -5,8 +5,10 @@ import com.ruoyi.auth.form.LoginBody; import com.ruoyi.auth.form.RegisterBody; import com.ruoyi.auth.service.SysLoginService; +import com.ruoyi.auth.utils.JuTongDaSMSUtil; import com.ruoyi.common.core.constant.CacheConstants; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.JwtUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.redis.service.RedisService; @@ -17,7 +19,6 @@ import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO; -import com.ruoyi.system.api.domain.dto.AppMiniRegisterDTO; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.model.LoginUser; import io.swagger.annotations.Api; @@ -149,6 +150,11 @@ @GetMapping("send-verification-code") @ApiOperation(value = "管理后台-发送验证码") public R<?> changePassword(@RequestParam("username") String username) { + Boolean result = redisService.hasKey( + CacheConstants.CHANGE_PASSWORD_CAPTCHA_CODE_KEY + username); + if (result) { + throw new ServiceException("请勿重复发送验证码"); + } //校验手机号码 SysUser sysUser = userClient.queryUserByUserName(username).getData(); if (StringUtils.isNull(sysUser)) { @@ -156,9 +162,7 @@ } String code = RandomUtil.randomNumbers(6); try { - //TODO 发送短信未配置 -// HuaWeiSMSUtil.sendSms(code, sysUser.getUserName(), "8823121426646", -// "cf1707ec44694627b1b483b0277e12fd"); + JuTongDaSMSUtil.smsSend(sysUser.getUserName(), code, "", ""); } catch (Exception e) { log.error("【修改密码】发送短信失败", e); return R.fail("发送失败"); diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/utils/JuTongDaSMSUtil.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/utils/JuTongDaSMSUtil.java new file mode 100644 index 0000000..621e6a1 --- /dev/null +++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/utils/JuTongDaSMSUtil.java @@ -0,0 +1,141 @@ +package com.ruoyi.auth.utils; + +import com.alibaba.nacos.common.utils.StringUtils; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.URL; +import java.net.URLConnection; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Base64; + +/** + * 聚通达短信发送工具类 + * + * @author mitao + * @date 2024/6/17 + */ +public class JuTongDaSMSUtil { + + private static final String UID = "201000"; + private static final String PWD = "926893"; + private static final String template = "【酒鼎老酒】您的验证码为:${code},该验证码5分钟内有效,请勿泄露于他人!"; + + public static void main(String[] args) { + String moblies = "18283820718"; + String content = "123456"; + String ext = ""; + String attime = ""; + String result = JuTongDaSMSUtil.smsSend(moblies, content, ext, attime); + System.out.println("result=" + result); + } + + // 发送短信 + public static String smsSend(String mobile, String content, + String ext, String attime) { + String errMess = ""; + StringBuffer sendData = new StringBuffer(""); + try { + sendData.append("uid=").append(UID); // 用户名 + String pwd = getMD5(PWD);// 原始密码做MD5加密,32位大写格式 + sendData.append("&password=").append(pwd); // 密码 + + sendData.append("&encode=").append("GBK"); // encode=GBK或者encode=utf8 + content = template.replace("${code}", content); + String contentBase64 = Base64.getEncoder() + .encodeToString(content.getBytes("gbk"));// 先用encode中定义的格式编码,再用base64加密内容 + sendData.append("&encodeType=base64"); // 固定 + sendData.append("&content=").append(contentBase64); // base64加密后的内容 + + sendData.append("&mobile=").append(mobile); // 手机号 +// sendData.append("&cid=").append("45955855252252555"); // 唯一标识,选填,如果不填系统自动生成作为当前批次的唯一标识 + if (!StringUtils.isNotBlank(ext)) { + sendData.append("&extNumber=").append(ext); // 扩展 + } + + if (!StringUtils.isNotBlank(attime)) { + sendData.append("&schtime=").append(attime); // 定时时间,选填,格式2008-06-09 12:00:00 + } + errMess = sendPost("https://sms3api.jvtd.cn/jtdsms/smsSend", + sendData.toString());// 普通短信 +// errMess =sendPost("http://ip:8090/jtdsms/sendData.do", sendData.toString());//个性短信 + } catch (Exception e) { + errMess = "-601"; + } + return errMess; + } + + + public static String sendPost(String url, String param) { + PrintWriter out = null; + BufferedReader in = null; + String result = ""; + try { + URL realUrl = new URL(url); + // 打开和URL之间的连接 + URLConnection conn = realUrl.openConnection(); + // 设置通用的请求属性 + conn.setRequestProperty("accept", "*/*"); + conn.setRequestProperty("connection", "Keep-Alive"); + conn.setRequestProperty("user-agent", + "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); + // 发送POST请求必须设置如下两行 + conn.setDoOutput(true); + conn.setDoInput(true); + // 获取URLConnection对象对应的输出流 + out = new PrintWriter(conn.getOutputStream()); + // 发送请求参数 + out.print(param); + // flush输出流的缓冲 + out.flush(); + // 定义BufferedReader输入流来读取URL的响应 + in = new BufferedReader(new InputStreamReader(conn.getInputStream())); + String line; + while ((line = in.readLine()) != null) { + result += line; + } + } catch (Exception e) { + System.out.println("发送 POST 请求出现异常!" + e); + e.printStackTrace(); + } + // 使用finally块来关闭输出流、输入流 + finally { + try { + if (out != null) { + out.close(); + } + if (in != null) { + in.close(); + } + } catch (IOException ex) { + ex.printStackTrace(); + } + } + return result; + } + + + public static String getMD5(String sourceStr) { + String resultStr = ""; + try { + byte[] temp = sourceStr.getBytes(); + MessageDigest md5 = MessageDigest.getInstance("MD5"); + md5.update(temp); + byte[] b = md5.digest(); + for (int i = 0; i < b.length; i++) { + char[] digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', + '9', 'A', 'B', 'C', 'D', 'E', 'F'}; + char[] ob = new char[2]; + ob[0] = digit[(b[i] >>> 4) & 0X0F]; + ob[1] = digit[b[i] & 0X0F]; + resultStr += new String(ob); + } + return resultStr; + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + return null; + } + } +} diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java index a14c80a..69e1e96 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java @@ -33,7 +33,6 @@ import com.ruoyi.member.domain.MemberLevel; import com.ruoyi.member.mapper.MemberLevelMapper; import com.ruoyi.member.mapper.MemberMapper; -import com.ruoyi.member.service.IMemberLevelService; import com.ruoyi.member.service.IMemberPointsService; import com.ruoyi.member.service.IMemberService; import com.ruoyi.member.util.HttpUtils; @@ -506,8 +505,6 @@ @Override public PageDTO<MgtMemberVO> getMemberPage(MgtMemberQuery query) { Page<Member> page = this.lambdaQuery() - .select(Member::getId, Member::getNickname, Member::getRealName, Member::getPhone, - Member::getIdNumber) .like(StringUtils.isNotBlank(query.getRealName()), Member::getRealName, query.getRealName()) .like(StringUtils.isNotBlank(query.getPhone()), Member::getPhone, query.getPhone()) diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderReturnRequestMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderReturnRequestMapper.xml index 110ea99..3b323be 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderReturnRequestMapper.xml +++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderReturnRequestMapper.xml @@ -9,8 +9,8 @@ o.order_no, o.member_id, CASE - WHEN o.order_from = 4 THEN 2 -- 当order_from为拍卖订单时,orderType赋值为2 - ELSE 1 -- 其他情况下,orderType赋值为1 + WHEN o.order_from = 4 THEN 2 + ELSE 1 END AS orderType, o.order_from FROM @@ -35,10 +35,10 @@ <if test="query.status != null"> AND torr.status = #{query.status} </if> - <if test="query.orderType != null and query.orderType== 1"> + <if test="query.orderType != null and query.orderType== OrderTypeEnum.MALL_ORDER"> AND o.order_from in (1,2,3) </if> - <if test="query.orderType != null and query.orderType== 2"> + <if test="query.orderType != null and query.orderType== OrderTypeEnum.AUCTION_ORDER"> AND o.order_from = 4 </if> </where> diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java index fe1e4e4..d2da704 100644 --- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java +++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java @@ -83,8 +83,7 @@ /** * 上架/下架 * - * @param dto - * @return + * @param dto 管理后台-优惠券上架下架数据传输对象 */ @ApiOperation("上架/下架") @PutMapping("/upd-status") diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponService.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponService.java index 6b5a0bb..213a31f 100644 --- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponService.java +++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponService.java @@ -43,6 +43,11 @@ */ void updateCoupon(MgtCouponDTO dto); + /** + * 上架/下架 + * + * @param dto 管理后台-优惠券上架下架数据传输对象 + */ void updStatus(MgtCouponUpdDTO dto); /** diff --git a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java index ec17393..96880f7 100644 --- a/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java +++ b/ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java @@ -160,11 +160,16 @@ this.updateById(coupon); } + /** + * 上架/下架 + * + * @param dto 管理后台-优惠券上架下架数据传输对象 + */ @Override public void updStatus(MgtCouponUpdDTO dto) { this.lambdaUpdate() .set(Coupon::getCouponStatus, dto.getCouponStatus()) - .eq(Coupon::getId, dto.getId()); + .eq(Coupon::getId, dto.getId()).update(); } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CustomConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CustomConfigController.java index df0da04..fde666c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CustomConfigController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CustomConfigController.java @@ -11,7 +11,6 @@ import com.ruoyi.system.service.ICustomConfigService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import java.util.List; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; @@ -52,7 +51,7 @@ */ @ApiOperation("获取积分设置") @GetMapping("/points") - public R<List<CustomConfigVO>> getPointsConfig() { + public R<PointsConfigDTO> getPointsConfig() { return R.ok(iCustomConfigService.getPointsConfig()); } /** @@ -109,8 +108,8 @@ * @return List<CustomConfigVO> */ @ApiOperation("获取售后设置") - @PostMapping("/get-after-sale-setting") - public R<List<CustomConfigVO>> getAfterSaleSetting() { + @GetMapping("/get-after-sale-setting") + public R<MgtAfterSaleSettingDTO> getAfterSaleSetting() { return R.ok(iCustomConfigService.getAfterSaleSetting()); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ICustomConfigService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ICustomConfigService.java index 2de5519..eb30871 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ICustomConfigService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ICustomConfigService.java @@ -5,7 +5,6 @@ import com.ruoyi.system.domain.dto.MgtAfterSaleSettingDTO; import com.ruoyi.system.domain.dto.PointsConfigDTO; import com.ruoyi.system.domain.vo.CustomConfigVO; -import java.util.List; /** * <p> @@ -30,7 +29,7 @@ * * @return List<CustomConfig> */ - List<CustomConfigVO> getPointsConfig(); + PointsConfigDTO getPointsConfig(); /** * 获取订单说明设置 @@ -58,5 +57,5 @@ * * @return List<CustomConfigVO> */ - List<CustomConfigVO> getAfterSaleSetting(); + MgtAfterSaleSettingDTO getAfterSaleSetting(); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CustomConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CustomConfigServiceImpl.java index ab04e64..cc7a246 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CustomConfigServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CustomConfigServiceImpl.java @@ -10,6 +10,7 @@ import com.ruoyi.system.domain.vo.CustomConfigVO; import com.ruoyi.system.mapper.CustomConfigMapper; import com.ruoyi.system.service.ICustomConfigService; +import java.math.BigDecimal; import java.util.List; import java.util.Optional; import org.springframework.stereotype.Service; @@ -70,12 +71,22 @@ * @return List<CustomConfigVO> */ @Override - public List<CustomConfigVO> getPointsConfig() { + public PointsConfigDTO getPointsConfig() { + PointsConfigDTO dto = new PointsConfigDTO(); List<CustomConfig> list = this.lambdaQuery() - .in(CustomConfig::getConfigType, ConfigEnum.MEMBER_POINTS_MONEY.getKey(), + .in(CustomConfig::getConfigKey, ConfigEnum.MEMBER_POINTS_MONEY.getKey(), ConfigEnum.MEMBER_POINTS_POINTS.getKey()) .eq(CustomConfig::getDelFlag, 0).list(); - return BeanUtils.copyList(list, CustomConfigVO.class); + for (CustomConfig customConfig : list) { + if (ConfigEnum.MEMBER_POINTS_MONEY.getKey().equals(customConfig.getConfigKey())) { + dto.setConsumeAmount( + BigDecimal.valueOf(Double.parseDouble(customConfig.getConfigValue()))); + } + if (ConfigEnum.MEMBER_POINTS_POINTS.getKey().equals(customConfig.getConfigKey())) { + dto.setPoints(Integer.parseInt(customConfig.getConfigValue())); + } + } + return dto; } /** @@ -126,17 +137,16 @@ } private void handleConfigSetting(String value, ConfigEnum configEnum) { - Optional<CustomConfig> receiverNameConfigOptional = getCustomConfigByKey( - ConfigEnum.RETURN_ADDRESS_USER_NAME.getKey()); - CustomConfig receiverNameConfig = receiverNameConfigOptional.orElseGet(() -> { + Optional<CustomConfig> configSettingOptional = getCustomConfigByKey(configEnum.getKey()); + CustomConfig configSetting = configSettingOptional.orElseGet(() -> { CustomConfig config = new CustomConfig(); - config.setConfigKey(ConfigEnum.RETURN_ADDRESS_USER_NAME.getKey()); - config.setConfigType(ConfigEnum.RETURN_ADDRESS_USER_NAME.getKeyType()); - config.setConfigName(ConfigEnum.RETURN_ADDRESS_USER_NAME.getKeyName()); + config.setConfigKey(configEnum.getKey()); + config.setConfigType(configEnum.getKeyType()); + config.setConfigName(configEnum.getKeyName()); return config; }); - receiverNameConfig.setConfigValue(value); - this.saveOrUpdate(receiverNameConfig); + configSetting.setConfigValue(value); + this.saveOrUpdate(configSetting); } /** @@ -145,12 +155,28 @@ * @return List<CustomConfigVO> */ @Override - public List<CustomConfigVO> getAfterSaleSetting() { + public MgtAfterSaleSettingDTO getAfterSaleSetting() { + MgtAfterSaleSettingDTO dto = new MgtAfterSaleSettingDTO(); List<CustomConfig> list = this.lambdaQuery() - .in(CustomConfig::getConfigType, ConfigEnum.RETURN_ADDRESS_USER_NAME, + .in(CustomConfig::getConfigKey, ConfigEnum.RETURN_ADDRESS_USER_NAME, ConfigEnum.RETURN_ADDRESS_USER_PHONE, ConfigEnum.RETURN_ADDRESS_USER_ADDRESS, ConfigEnum.RETURN_CYCLE) .eq(CustomConfig::getDelFlag, 0).list(); - return BeanUtils.copyList(list, CustomConfigVO.class); + for (CustomConfig customConfig : list) { + if (ConfigEnum.RETURN_ADDRESS_USER_NAME.getKey().equals(customConfig.getConfigKey())) { + dto.setReceiverName(customConfig.getConfigValue()); + } + if (ConfigEnum.RETURN_ADDRESS_USER_PHONE.getKey().equals(customConfig.getConfigKey())) { + dto.setReceiverPhone(customConfig.getConfigValue()); + } + if (ConfigEnum.RETURN_ADDRESS_USER_ADDRESS.getKey() + .equals(customConfig.getConfigKey())) { + dto.setReceiverAddress(customConfig.getConfigValue()); + } + if (ConfigEnum.RETURN_CYCLE.getKey().equals(customConfig.getConfigKey())) { + dto.setReturnCycle(Integer.parseInt(customConfig.getConfigValue())); + } + } + return dto; } } -- Gitblit v1.7.1