diff --git a/pom.xml b/pom.xml index c786873..84213e8 100644 --- a/pom.xml +++ b/pom.xml @@ -33,6 +33,8 @@ 0.9.1 1.16.20 3.3.2 + + 2.0.23 @@ -231,6 +233,11 @@ mapstruct 1.4.2.Final + + com.aliyun + dysmsapi20170525 + ${aliyun.sms.version} + diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index 49f09fb..4a473df 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -91,6 +91,13 @@ mapstruct 1.4.2.Final + + + + com.aliyun + dysmsapi20170525 + true + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java index 84a5f3c..5d54b4f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java @@ -1,8 +1,14 @@ package com.ruoyi.web.controller.common; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cyl.manager.ums.domain.Address; +import com.cyl.manager.ums.mapper.AddressMapper; +import com.cyl.manager.ums.pojo.dto.AddressDTO; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.redis.RedisService; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.common.utils.file.FileUtils; @@ -19,6 +25,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.util.*; +import java.util.stream.Collectors; /** * 通用请求处理 @@ -33,6 +41,12 @@ public class CommonController @Autowired private ServerConfig serverConfig; + @Autowired + private RedisService redisService; + + @Autowired + private AddressMapper addressMapper; + /** * 通用下载请求 * @@ -117,4 +131,50 @@ public class CommonController log.error("下载文件失败", e); } } + + @GetMapping("/common/area") + public AjaxResult getAddressList() { + String addresses = redisService.getAddressList(); + if (org.apache.commons.lang3.StringUtils.isNotEmpty(addresses)) { + return AjaxResult.success(JSON.parseArray(addresses, AddressDTO.class)); + } + QueryWrapper
addressQueryWrapper = new QueryWrapper<>(); + addressQueryWrapper.in("level", Arrays.asList(0,1,2)); + List
addressList = addressMapper.selectList(addressQueryWrapper); + Map> cityMap = addressList.stream().filter(it -> it.getLevel() == 1).collect(Collectors.groupingBy(it -> it.getParentCode())); + Map> districtMap = addressList.stream().filter(it -> it.getLevel() == 2).collect(Collectors.groupingBy(it -> it.getParentCode())); + List result = new ArrayList<>(); + addressList.stream().filter(it -> it.getLevel() == 0).forEach(it -> { + AddressDTO dto = new AddressDTO(); + dto.setId(it.getCode()); + dto.setLevel("province"); + dto.setName(it.getName()); + dto.setPid(0L); + //获取城市列表 + List child = new ArrayList<>(); + if (cityMap.containsKey(it.getCode())) { + cityMap.get(it.getCode()).forEach(city -> { + AddressDTO cityDto = new AddressDTO(); + cityDto.setId(city.getCode()); + cityDto.setLevel("city"); + cityDto.setName(city.getName()); + cityDto.setPid(city.getParentCode()); + cityDto.setChildren(districtMap.containsKey(city.getCode()) ? + districtMap.get(city.getCode()).stream().map(district -> { + AddressDTO districtDto = new AddressDTO(); + districtDto.setId(district.getCode()); + districtDto.setLevel("district"); + districtDto.setName(district.getName()); + districtDto.setPid(district.getParentCode()); + return districtDto; + }).collect(Collectors.toList()) : Collections.EMPTY_LIST); + child.add(cityDto); + }); + } + dto.setChildren(child); + result.add(dto); + }); + redisService.setAddressList(JSON.toJSONString(result)); + return AjaxResult.success(result); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/H5MemberInterceptor.java b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/H5MemberInterceptor.java new file mode 100644 index 0000000..6759cb6 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/H5MemberInterceptor.java @@ -0,0 +1,68 @@ +package com.ruoyi.web.core.config; + +import com.cyl.manager.ums.domain.Member; +import com.cyl.manager.ums.service.MemberService; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.constant.HttpStatus; +import com.ruoyi.common.core.domain.model.LoginMember; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.framework.config.LocalDataUtil; +import com.ruoyi.framework.web.service.TokenService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@Configuration +public class H5MemberInterceptor extends HandlerInterceptorAdapter { + + @Autowired + private TokenService tokenService; + @Autowired + private MemberService memberService; + + private static String[] WHITE_PATHS = { + "/h5/sms/login", + "/h5/account/login", + "/h5/register", + "/h5/validate" + }; + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + String requestUri = request.getRequestURI(); + boolean flag = true; + if (!requestUri.startsWith("/h5/")) { + return super.preHandle(request, response, handler); + } + + for (String s : WHITE_PATHS) { + if (requestUri.startsWith(s)) { + flag = false; + break; + } + } + if (!flag) { + return super.preHandle(request, response, handler); + } + LoginMember loginMember = tokenService.getLoginMember(request); + if (loginMember == null) { + throw new ServiceException("获取用户ID异常", HttpStatus.UNAUTHORIZED); + } + tokenService.verifyMemberToken(loginMember); + //获取会员信息 + Member member = memberService.selectById(loginMember.getMemberId()); + if (member == null || member.getStatus() == 0) { + throw new ServiceException("获取用户ID异常", HttpStatus.UNAUTHORIZED); + } + //将会员信息存放至全局 + LocalDataUtil.setVar(Constants.MEMBER_INFO, member); + + return super.preHandle(request, response, handler); + } + + + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/MvcConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/MvcConfig.java new file mode 100644 index 0000000..dc8ca76 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/MvcConfig.java @@ -0,0 +1,23 @@ +package com.ruoyi.web.core.config; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; + +@Configuration +@Slf4j +public class MvcConfig extends WebMvcConfigurerAdapter { + + @Bean + public H5MemberInterceptor memberInterceptor() { + return new H5MemberInterceptor(); + } + + + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(memberInterceptor()); + } +} diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml index bbbed63..9e41d8a 100644 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ b/ruoyi-admin/src/main/resources/application-druid.yml @@ -44,4 +44,17 @@ aliyun: bucketName: 你的bucketName # bucket 名称 wechat: appId: 你的微信服务号信息 - secret: 你的微信服务号信息 \ No newline at end of file + secret: 你的微信服务号信息 +sms: + enabled: true + # 阿里云 dysmsapi.aliyuncs.com + endpoint: dysmsapi.aliyuncs.com + accessKeyId: 你的accessKeyId #阿里云短信服务控制台查看 + accessKeySecret: 你的accessKeySecret #同上 + signName: 签名 + templateId: 模板id + # 腾讯专用 + sdkAppId: +aes: + # aes的密钥 + key: 1111111111 \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 7ae7707..dbb6af2 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -121,6 +121,7 @@ token: secret: abcdefghijkomnopqrstuvwxyx # 令牌有效期(默认30分钟) expireTime: 30 + memberExpireTime: 30 # mybatis-plus 配置 mybatis-plus: # 搜索指定包别名 diff --git a/ruoyi-admin/src/main/resources/logback.xml b/ruoyi-admin/src/main/resources/logback.xml index a7a7140..22d1822 100644 --- a/ruoyi-admin/src/main/resources/logback.xml +++ b/ruoyi-admin/src/main/resources/logback.xml @@ -67,9 +67,9 @@ - - - + + + diff --git a/ruoyi-admin/src/test/java/com/fjp/lc/test/service/ServiceTest.java b/ruoyi-admin/src/test/java/com/fjp/lc/test/service/ServiceTest.java index 9518cde..0ec77df 100644 --- a/ruoyi-admin/src/test/java/com/fjp/lc/test/service/ServiceTest.java +++ b/ruoyi-admin/src/test/java/com/fjp/lc/test/service/ServiceTest.java @@ -1,22 +1,65 @@ package com.fjp.lc.test.service; -import com.cyl.ums.service.MemberCartService; +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.crypto.SecureUtil; +import cn.hutool.crypto.symmetric.AES; +import com.cyl.manager.ums.service.MemberCartService; import com.ruoyi.RuoYiApplication; +import com.ruoyi.common.config.properties.SmsProperties; +import com.ruoyi.common.core.sms.AliyunSmsTemplate; +import com.ruoyi.common.core.sms.SmsTemplate; +import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; +import java.util.HashMap; +import java.util.Map; + @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = RuoYiApplication.class) @ActiveProfiles("dev") +@Slf4j public class ServiceTest { @Autowired private MemberCartService memberCartService; + + @Autowired + private SmsProperties smsProperties; + + @Value("${aes.key}") + private String key; + @Test public void test1() { memberCartService.mineCartNum(); } + @Test + public void test2(){ + System.out.println(smsProperties); + if (!smsProperties.getEnabled()) { + throw new RuntimeException("没有开启短信服务"); + } + Map map = new HashMap<>(1); + map.put("code", "1234"); + SmsTemplate smsTemplate = new AliyunSmsTemplate(smsProperties); + Object send = smsTemplate.send("15706259078", "SMS_146125046", map); + log.info("短信发送结果:" + send); + } + + @Test + public void test3(){ + String content = "test中文"; + AES aes = SecureUtil.aes(key.getBytes()); + byte[] encrypt = aes.encrypt(content); + byte[] decrypt = aes.decrypt(encrypt); + String encryptHex = aes.encryptHex(content); + System.out.println("加密后16进制:" + encryptHex); + String decryptStr = aes.decryptStr(encryptHex, CharsetUtil.CHARSET_UTF_8); + System.out.println("解密:" + decryptStr); + } } diff --git a/ruoyi-admin/src/test/java/com/fjp/lc/test/service/WechatTest.java b/ruoyi-admin/src/test/java/com/fjp/lc/test/service/WechatTest.java index a8ebdf0..cb462a3 100644 --- a/ruoyi-admin/src/test/java/com/fjp/lc/test/service/WechatTest.java +++ b/ruoyi-admin/src/test/java/com/fjp/lc/test/service/WechatTest.java @@ -1,7 +1,7 @@ package com.fjp.lc.test.service; import com.cyl.h5.pojo.vo.form.WechatLoginForm; -import com.cyl.ums.service.MemberWechatService; +import com.cyl.manager.ums.service.MemberWechatService; import com.ruoyi.RuoYiApplication; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml index 4afb743..4d43a46 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -130,6 +130,12 @@ javax.servlet-api + + + com.aliyun + dysmsapi20170525 + true + diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/config/SmsConfig.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/SmsConfig.java new file mode 100644 index 0000000..b540ddf --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/config/SmsConfig.java @@ -0,0 +1,34 @@ +package com.ruoyi.common.config; + +import com.ruoyi.common.config.properties.SmsProperties; +import com.ruoyi.common.core.sms.AliyunSmsTemplate; +import com.ruoyi.common.core.sms.SmsTemplate; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; + +/** + * 短信配置类 + * + * @author Lion Li + * @version 4.2.0 + */ +@EnableConfigurationProperties(SmsProperties.class) +public class SmsConfig { + + @Configuration + @ConditionalOnProperty(value = "sms.enabled", havingValue = "true") + @ConditionalOnClass(com.aliyun.dysmsapi20170525.Client.class) + static class AliyunSmsConfig { + + @Bean + public SmsTemplate aliyunSmsTemplate(SmsProperties smsProperties) { + return new AliyunSmsTemplate(smsProperties); + } + + } + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/config/properties/SmsProperties.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/properties/SmsProperties.java new file mode 100644 index 0000000..2c93b39 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/config/properties/SmsProperties.java @@ -0,0 +1,46 @@ +package com.ruoyi.common.config.properties; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * SMS短信 配置属性 + * + * @author Lion Li + * @version 4.2.0 + */ +@Data +@ConfigurationProperties(prefix = "sms") +@Component +public class SmsProperties { + + private Boolean enabled; + + /** + * 配置节点 + * 阿里云 dysmsapi.aliyuncs.com + */ + private String endpoint; + + /** + * key + */ + private String accessKeyId; + + /** + * 密匙 + */ + private String accessKeySecret; + + /* + * 短信签名 + */ + private String signName; + + /** + * 短信应用ID (腾讯专属) + */ + private String sdkAppId; + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java index f41bf11..33e4af3 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java @@ -68,6 +68,8 @@ public class Constants * 登录用户 redis key */ public static final String LOGIN_TOKEN_KEY = "login_tokens:"; + public static final String LOGIN_MEMBER_TOKEN_KEY = "login_member_tokens:"; + public static final String MEMBER_INFO = "member_info"; /** * 防重提交 redis key @@ -98,6 +100,7 @@ public class Constants * 令牌前缀 */ public static final String LOGIN_USER_KEY = "login_user_key"; + public static final String LOGIN_MEMBER_KEY = "login_member_key"; /** * 用户ID diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginMember.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginMember.java new file mode 100644 index 0000000..50b4ebc --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginMember.java @@ -0,0 +1,13 @@ +package com.ruoyi.common.core.domain.model; + +import lombok.Data; + +@Data +public class LoginMember { + + private Long memberId; + private String token; + private Long loginTime; + private Long expireTime; + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/SmsResult.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/SmsResult.java new file mode 100644 index 0000000..a273374 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/SmsResult.java @@ -0,0 +1,35 @@ +package com.ruoyi.common.core.domain.model; + +import lombok.Builder; +import lombok.Data; + +/** + * 上传返回体 + * + * @author Lion Li + */ +@Data +@Builder +public class SmsResult { + + /** + * 是否成功 + */ + private boolean isSuccess; + + /** + * 响应消息 + */ + private String message; + + /** + * 实际响应体 + *

+ * 可自行转换为 SDK 对应的 SendSmsResponse + */ + private String response; + /** + * uuid + */ + private String uuid; +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisService.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisService.java index a314cd5..739e798 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisService.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisService.java @@ -1,5 +1,6 @@ package com.ruoyi.common.core.redis; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -22,7 +23,51 @@ public class RedisService { return redisCache.getCacheList(key); } + public String getAddressList() { + String key = RedisKeys.ADDRESS_LIST_KEY; + return redisCache.getCacheObject(key); + } + + public void setAddressList(String list) { + String key = RedisKeys.ADDRESS_LIST_KEY; + redisCache.setCacheObject(key,list); + } + interface RedisKeys { String MATCH_LIST_OF = "MATCH_LIST_OF_"; + String ADDRESS_LIST_KEY = "ADDRESS_LIST_KEY_"; + } + + /** + * redis实现分布式锁 --- 上锁 + * + * @param key + * @param jobInfo + * @param lockSecond + * @return + * @throws Exception + */ + public void lock(String key, String jobInfo, Integer lockSecond) throws Exception { + String existJobInfo = redisCache.getCacheObject(key); + if (StringUtils.isNotEmpty(existJobInfo)) { + throw new Exception(String.format("获取锁失败: redisKey: %s, existJobInfo: %s", key, existJobInfo)); + } + redisCache.setCacheObject(key, jobInfo, lockSecond, TimeUnit.SECONDS); + } + + /** + * redis实现分布式锁 --- 解锁 + * + * @param key + * @param jobInfo + * @throws Exception + */ + public void unLock(String key, String jobInfo) throws Exception { + String existJobInfo = redisCache.getCacheObject(key); + if (jobInfo.equals(existJobInfo)) { + redisCache.deleteObject(key); + } else { + throw new Exception(String.format("释放锁异常: redisKey: %s, existJobInfo: %s, jobInfo: %s", key, existJobInfo, jobInfo)); + } } } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/sms/AliyunSmsTemplate.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/sms/AliyunSmsTemplate.java new file mode 100644 index 0000000..a795ffa --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/sms/AliyunSmsTemplate.java @@ -0,0 +1,71 @@ +package com.ruoyi.common.core.sms; + +import com.aliyun.dysmsapi20170525.Client; +import com.aliyun.dysmsapi20170525.models.SendSmsRequest; +import com.aliyun.dysmsapi20170525.models.SendSmsResponse; +import com.aliyun.teaopenapi.models.Config; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.ruoyi.common.config.properties.SmsProperties; +import com.ruoyi.common.core.domain.model.SmsResult; +import com.ruoyi.common.exception.sms.SmsException; +import com.ruoyi.common.utils.JsonUtils; +import com.ruoyi.common.utils.StringUtils; +import lombok.SneakyThrows; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +import java.util.Map; + +/** + * Aliyun 短信模板 + * + * @author Lion Li + * @version 4.2.0 + */ +public class AliyunSmsTemplate implements SmsTemplate { + + @Autowired + private SmsProperties properties; + + private Client client; + + @SneakyThrows(Exception.class) + public AliyunSmsTemplate(SmsProperties smsProperties) { + this.properties = smsProperties; + Config config = new Config() + // 您的AccessKey ID + .setAccessKeyId(smsProperties.getAccessKeyId()) + // 您的AccessKey Secret + .setAccessKeySecret(smsProperties.getAccessKeySecret()) + // 访问的域名 + .setEndpoint(smsProperties.getEndpoint()); + this.client = new Client(config); + } + + @Override + public SmsResult send(String phones, String templateId, Map param) { + if (StringUtils.isBlank(phones)) { + throw new SmsException("手机号不能为空"); + } + if (StringUtils.isBlank(templateId)) { + throw new SmsException("模板ID不能为空"); + } + SendSmsRequest req = new SendSmsRequest() + .setPhoneNumbers(phones) + .setSignName(properties.getSignName()) + .setTemplateCode(templateId) + .setTemplateParam(JsonUtils.toJsonString(param)); + try { + SendSmsResponse resp = client.sendSms(req); + return SmsResult.builder() + .isSuccess("OK".equals(resp.getBody().getCode())) + .message(resp.getBody().getMessage()) + .response(JsonUtils.toJsonString(resp)) + .build(); + } catch (Exception e) { + throw new SmsException(e.getMessage()); + } + } + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/sms/SmsTemplate.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/sms/SmsTemplate.java new file mode 100644 index 0000000..ee6064b --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/sms/SmsTemplate.java @@ -0,0 +1,26 @@ +package com.ruoyi.common.core.sms; + +import com.ruoyi.common.core.domain.model.SmsResult; + +import java.util.Map; + +/** + * 短信模板 + * + * @author Lion Li + * @version 4.2.0 + */ +public interface SmsTemplate { + + /** + * 发送短信 + * + * @param phones 电话号(多个逗号分割) + * @param templateId 模板id + * @param param 模板对应参数 + * 阿里 需使用 模板变量名称对应内容 例如: code=1234 + * 腾讯 需使用 模板变量顺序对应内容 例如: 1=1234, 1为模板内第一个参数 + */ + SmsResult send(String phones, String templateId, Map param); + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/exception/sms/SmsException.java b/ruoyi-common/src/main/java/com/ruoyi/common/exception/sms/SmsException.java new file mode 100644 index 0000000..9d66156 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/exception/sms/SmsException.java @@ -0,0 +1,17 @@ +package com.ruoyi.common.exception.sms; + + +/** + * Sms异常类 + * + * @author Lion Li + */ +public class SmsException extends RuntimeException { + + private static final long serialVersionUID = 1L; + + public SmsException(String msg) { + super(msg); + } + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/AesCryptoUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/AesCryptoUtils.java new file mode 100644 index 0000000..e509e42 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/AesCryptoUtils.java @@ -0,0 +1,28 @@ +package com.ruoyi.common.utils; + +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.crypto.SecureUtil; +import cn.hutool.crypto.symmetric.AES; + +/** + * aes加密工具 + */ +public class AesCryptoUtils { + + public static String encrypt(String key, String content){ + if (StringUtils.isBlank(key) || StringUtils.isBlank(content)){ + throw new RuntimeException("错误"); + } + AES aes = SecureUtil.aes(key.getBytes()); + byte[] encrypt = aes.encrypt(content); + return aes.encryptHex(content); + } + + public static String decrypt(String key, String content){ + if (StringUtils.isBlank(key) || StringUtils.isBlank(content)){ + throw new RuntimeException("错误"); + } + AES aes = SecureUtil.aes(key.getBytes()); + return aes.decryptStr(content, CharsetUtil.CHARSET_UTF_8); + } +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/IDGenerator.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/IDGenerator.java new file mode 100644 index 0000000..133ce2e --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/IDGenerator.java @@ -0,0 +1,104 @@ +package com.ruoyi.common.utils; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Created by yangyincong on 15/8/16. + * ID生成器 workId (1~4) + */ +public class IDGenerator { + private final static Logger logger = LoggerFactory.getLogger(IDGenerator.class); + private final static long twepoch = 1361753741828L; + private final static long workerIdBits = 4L; + private final static long maxWorkerId = -1L ^ -1L << workerIdBits; + private final static long sequenceBits = 10L; + private long workerId; + private long sequence = 0L; + + private final static long workerIdShift = sequenceBits; + private final static long timestampLeftShift = sequenceBits + workerIdBits; + private final static long sequenceMask = -1L ^ -1L << sequenceBits; + + private long lastTimestamp = -1L; + + private IDGenerator(final long workerId) { + super(); + this.workerId = workerId; + } + + public static long generateMinId(int wid, long time) { + return (time - twepoch << timestampLeftShift) | (wid << workerIdShift); + } + + public synchronized long nextId() { + long timestamp = this.timeGen(); + if (this.lastTimestamp == timestamp) { + this.sequence = (this.sequence + 1) & sequenceMask; + if (this.sequence == 0) { + timestamp = this.tilNextMillis(this.lastTimestamp); + } + } else { + this.sequence = 0; + } + if (timestamp < this.lastTimestamp) { + try { + throw new Exception( + String.format( + "Clock moved backwards. Refusing to generate id for %d milliseconds", + this.lastTimestamp - timestamp)); + } catch (Exception e) { + e.printStackTrace(); + } + } + + this.lastTimestamp = timestamp; + long nextId = ((timestamp - twepoch << timestampLeftShift)) + | (this.workerId << workerIdShift) | (this.sequence); + return nextId; + } + + public static long generateMaxId(long wid, long time) { + return (time - twepoch << timestampLeftShift) | (wid << workerIdShift) | sequenceMask; + } + + private long tilNextMillis(final long lastTimestamp) { + long timestamp = this.timeGen(); + while (timestamp <= lastTimestamp) { + timestamp = this.timeGen(); + } + return timestamp; + } + + private long timeGen() { + return System.currentTimeMillis(); + } + + private static IDGenerator generator; + + public static synchronized void init(Long workerId) throws Exception { + workerId = workerId % maxWorkerId; + logger.info("程序中init的workid为:{}", workerId); + if (workerId > maxWorkerId || workerId < 0) { + throw new IllegalArgumentException(String.format( + "worker Id can't be greater than %d or less than 0", + IDGenerator.maxWorkerId)); + } + generator = new IDGenerator(workerId); + } + + public static Long generateId() { + if (null == generator) { + synchronized (IDGenerator.class) { + if (null == generator) { + try { + init(2L); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + return generator.nextId(); + } +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java new file mode 100644 index 0000000..e5c471e --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java @@ -0,0 +1,112 @@ +package com.ruoyi.common.utils; + +import cn.hutool.core.lang.Dict; +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjectUtil; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.exc.MismatchedInputException; +import com.ruoyi.common.utils.spring.SpringUtils; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * JSON 工具类 + * + * @author 芋道源码 + */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class JsonUtils { + + private static final ObjectMapper OBJECT_MAPPER = SpringUtils.getBean(ObjectMapper.class); + + public static ObjectMapper getObjectMapper() { + return OBJECT_MAPPER; + } + + public static String toJsonString(Object object) { + if (ObjectUtil.isNull(object)) { + return null; + } + try { + return OBJECT_MAPPER.writeValueAsString(object); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + public static T parseObject(String text, Class clazz) { + if (StringUtils.isEmpty(text)) { + return null; + } + try { + return OBJECT_MAPPER.readValue(text, clazz); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public static T parseObject(byte[] bytes, Class clazz) { + if (ArrayUtil.isEmpty(bytes)) { + return null; + } + try { + return OBJECT_MAPPER.readValue(bytes, clazz); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public static T parseObject(String text, TypeReference typeReference) { + if (StringUtils.isBlank(text)) { + return null; + } + try { + return OBJECT_MAPPER.readValue(text, typeReference); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public static Dict parseMap(String text) { + if (StringUtils.isBlank(text)) { + return null; + } + try { + return OBJECT_MAPPER.readValue(text, OBJECT_MAPPER.getTypeFactory().constructType(Dict.class)); + } catch (MismatchedInputException e) { + // 类型不匹配说明不是json + return null; + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public static List parseArrayMap(String text) { + if (StringUtils.isBlank(text)) { + return null; + } + try { + return OBJECT_MAPPER.readValue(text, OBJECT_MAPPER.getTypeFactory().constructCollectionType(List.class, Dict.class)); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public static List parseArray(String text, Class clazz) { + if (StringUtils.isEmpty(text)) { + return new ArrayList<>(); + } + try { + return OBJECT_MAPPER.readValue(text, OBJECT_MAPPER.getTypeFactory().constructCollectionType(List.class, clazz)); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/PhoneUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/PhoneUtils.java new file mode 100644 index 0000000..f2fd5bd --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/PhoneUtils.java @@ -0,0 +1,14 @@ +package com.ruoyi.common.utils; + +/** + * 手机号工具类 + */ +public class PhoneUtils { + + public static String hidePhone(String phone){ + if (StringUtils.isEmpty(phone) || phone.length() < 11){ + throw new RuntimeException("手机号格式错误"); + } + return phone.substring(0, 3) + "****" + phone.substring(7, 11); + } +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/ResponseUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/ResponseUtils.java new file mode 100644 index 0000000..692ed61 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/ResponseUtils.java @@ -0,0 +1,26 @@ +package com.ruoyi.common.utils; + +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.util.MultiValueMap; + +import java.util.ArrayList; +import java.util.List; + +public class ResponseUtils { + + private static final String MESSAGE = "msg"; + private static final String CODE = "code"; + private static final String DATA = "data"; + + private ResponseUtils(){} + + private static ResponseEntity getEntity(Object body, HttpStatus statusCode){ + MultiValueMap headers = new HttpHeaders(); + List contentType = new ArrayList(); + contentType.add("application/json;charset=utf-8"); + headers.put("Content-Type", contentType); + return new ResponseEntity(body, headers, statusCode); + } +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SmsUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SmsUtils.java new file mode 100644 index 0000000..beffc1e --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SmsUtils.java @@ -0,0 +1,33 @@ +package com.ruoyi.common.utils; + +/** + * @Author: czc + * @Description: TODO + * @DateTime: 2023/6/16 17:50 + **/ +public class SmsUtils { + + public static String createRandom(boolean numberFlag, int length) { + String retStr = ""; + String strTable = numberFlag ? "1234567890" : "1234567890abcdefghijkmnpqrstuvwxyz"; + int len = strTable.length(); + boolean bDone = true; + do { + retStr = ""; + int count = 0; + for (int i = 0; i < length; i++) { + double dblR = Math.random() * len; + int intR = (int) Math.floor(dblR); + char c = strTable.charAt(intR); + if (('0' <= c) && (c <= '9')) { + count++; + } + retStr += strTable.charAt(intR); + } + if (count >= 2) { + bDone = false; + } + } while (bDone); + return retStr; + } +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java index 9474d4f..ec958b5 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java @@ -107,6 +107,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter "/**/*.js", "/profile/**" ).permitAll() + .antMatchers("/h5/**").permitAll() .antMatchers("/no-auth/**").permitAll() .antMatchers("/common/download**").anonymous() .antMatchers("/common/download/resource**").anonymous() diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java index bf28e0f..844f779 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java @@ -4,6 +4,8 @@ import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; import javax.servlet.http.HttpServletRequest; + +import com.ruoyi.common.core.domain.model.LoginMember; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -40,6 +42,10 @@ public class TokenService @Value("${token.expireTime}") private int expireTime; + //单位 天 + @Value("${token.memberExpireTime}") + private int memberExpireTime; + protected static final long MILLIS_SECOND = 1000; protected static final long MILLIS_MINUTE = 60 * MILLIS_SECOND; @@ -76,6 +82,22 @@ public class TokenService return null; } + public LoginMember getLoginMember(HttpServletRequest request) { + // 获取请求携带的令牌 + String token = getToken(request); + if (StringUtils.isNotEmpty(token)) { + try { + Claims claims = parseToken(token); + // 解析对应的权限以及用户信息 + String uuid = (String) claims.get(Constants.LOGIN_MEMBER_KEY); + String userKey = Constants.LOGIN_MEMBER_TOKEN_KEY + uuid; + return redisCache.getCacheObject(userKey); + } catch (Exception e) { + } + } + return null; + } + /** * 设置用户身份信息 */ @@ -117,6 +139,15 @@ public class TokenService return createToken(claims); } + public String createMemberToken(LoginMember loginMember){ + String token = IdUtils.fastUUID(); + loginMember.setToken(token); + refreshMemberToken(loginMember); + Map claims = new HashMap<>(); + claims.put(Constants.LOGIN_MEMBER_KEY, token); + return createToken(claims); + } + /** * 验证令牌有效期,相差不足20分钟,自动刷新缓存 * @@ -133,6 +164,14 @@ public class TokenService } } + public void verifyMemberToken(LoginMember loginUser) { + long expireTime = loginUser.getExpireTime(); + long currentTime = System.currentTimeMillis(); + if (expireTime - currentTime <= MILLIS_MINUTE_TEN) { + refreshMemberToken(loginUser); + } + } + /** * 刷新令牌有效期 * @@ -147,6 +186,14 @@ public class TokenService redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES); } + public void refreshMemberToken(LoginMember loginUser) { + loginUser.setLoginTime(System.currentTimeMillis()); + loginUser.setExpireTime(loginUser.getLoginTime() + memberExpireTime * 24 * 60 * MILLIS_MINUTE); + // 根据uuid将loginUser缓存 + String userKey = Constants.LOGIN_MEMBER_TOKEN_KEY + loginUser.getToken(); + redisCache.setCacheObject(userKey, loginUser, memberExpireTime, TimeUnit.DAYS); + } + /** * 设置用户代理信息 * diff --git a/ruoyi-generator/src/test/resources/application.yml b/ruoyi-generator/src/test/resources/application.yml index 0e1221c..39cedb5 100644 --- a/ruoyi-generator/src/test/resources/application.yml +++ b/ruoyi-generator/src/test/resources/application.yml @@ -27,7 +27,7 @@ gen: # 作者 author: zcc # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool - packageName: com.cyl.pms + packageName: com.cyl.manager.pms # 自动去除表前缀,默认是false autoRemovePre: true # 表前缀(生成类名不会包含表前缀,多个用逗号分隔) diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/config/SecurityUtil.java b/ruoyi-mall/src/main/java/com/cyl/h5/config/SecurityUtil.java new file mode 100644 index 0000000..aacc66a --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/config/SecurityUtil.java @@ -0,0 +1,16 @@ +package com.cyl.h5.config; + +import com.cyl.manager.ums.domain.Member; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.framework.config.LocalDataUtil; +import org.springframework.stereotype.Service; + +@Service +public class SecurityUtil { + + public static Member getLocalMember() { + Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); + return member; + } + +} diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/controller/CartController.java b/ruoyi-mall/src/main/java/com/cyl/h5/controller/CartController.java index dd238b5..5c7a144 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/controller/CartController.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/controller/CartController.java @@ -1,21 +1,18 @@ package com.cyl.h5.controller; -import com.cyl.pms.pojo.dto.MemberCartDTO; -import com.cyl.ums.convert.MemberCartConvert; -import com.cyl.ums.domain.MemberCart; -import com.cyl.ums.pojo.query.MemberCartQuery; -import com.cyl.ums.pojo.vo.form.AddMemberCartForm; -import com.cyl.ums.pojo.vo.form.UpdateMemberCartForm; -import com.cyl.ums.service.MemberCartService; +import com.cyl.manager.ums.convert.MemberCartConvert; +import com.cyl.manager.ums.domain.Member; +import com.cyl.manager.ums.domain.MemberCart; +import com.cyl.manager.ums.pojo.query.MemberCartQuery; +import com.cyl.manager.ums.pojo.vo.MemberCartVO; +import com.cyl.manager.ums.service.MemberCartService; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.framework.config.LocalDataUtil; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; -import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; -import java.util.ArrayList; import java.util.List; @RestController @@ -51,8 +48,8 @@ public class CartController { * @return 购物车商品 */ @PostMapping("add") - public ResponseEntity add(@Valid @RequestBody AddMemberCartForm form) { - return ResponseEntity.ok(memberCartService.insert(form)); + public ResponseEntity add(@RequestBody MemberCart memberCart) { + return ResponseEntity.ok(memberCartService.insert(memberCart)); } /** @@ -61,8 +58,8 @@ public class CartController { * @return 是否修改 */ @PostMapping("modify") - public ResponseEntity modify(@Valid @RequestBody UpdateMemberCartForm form) { - return ResponseEntity.ok(memberCartService.update(form)); + public ResponseEntity modify(@Valid @RequestBody MemberCart memberCart) { + return ResponseEntity.ok(memberCartService.update(memberCart)); } /** @@ -71,7 +68,7 @@ public class CartController { * @return 是否修改 */ @DeleteMapping("remove") - public ResponseEntity remove(@RequestBody List ids) { + public ResponseEntity remove(@RequestBody String ids) { return ResponseEntity.ok(memberCartService.deleteByIds(ids)); } @@ -80,12 +77,11 @@ public class CartController { * * @return 购物车列表 */ - @PostMapping("list") - public ResponseEntity> remove(@RequestBody MemberCartQuery query, Pageable pageable) { - List list = memberCartService.selectList(query, pageable); - com.github.pagehelper.Page p = (com.github.pagehelper.Page)list; - List resList = memberCartConvert.dos2Dtos(list); - memberCartService.injectSku(resList); - return ResponseEntity.ok(new PageImpl<>(resList, pageable, p.getTotal())); + @GetMapping("list") + public ResponseEntity> remove() { + Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); + MemberCartQuery query = new MemberCartQuery(); + query.setMemberId(member.getId()); + return ResponseEntity.ok(memberCartService.selectList(query, null)); } } diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/controller/CategoryController.java b/ruoyi-mall/src/main/java/com/cyl/h5/controller/CategoryController.java index 9a6a080..36e4a1c 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/controller/CategoryController.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/controller/CategoryController.java @@ -1,7 +1,7 @@ package com.cyl.h5.controller; -import com.cyl.pms.domain.ProductCategory; -import com.cyl.pms.service.ProductCategoryService; +import com.cyl.manager.pms.domain.ProductCategory; +import com.cyl.manager.pms.service.ProductCategoryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5CommonController.java b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5CommonController.java new file mode 100644 index 0000000..24eb6e4 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5CommonController.java @@ -0,0 +1,77 @@ +package com.cyl.h5.controller; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cyl.manager.ums.domain.Address; +import com.cyl.manager.ums.mapper.AddressMapper; +import com.cyl.manager.ums.pojo.dto.AddressDTO; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.redis.RedisService; +import com.ruoyi.common.utils.OssUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.*; +import java.util.stream.Collectors; + +@RestController +@RequestMapping("/h5") +public class H5CommonController { + + @Autowired + private OssUtils ossUtils; + @Autowired + private AddressMapper addressMapper; + @Autowired + private RedisService redisService; + + + @GetMapping("/area") + public AjaxResult getAddressList() { + String addresses = redisService.getAddressList(); + if (StringUtils.isNotEmpty(addresses)) { + return AjaxResult.success(JSON.parseArray(addresses, AddressDTO.class)); + } + QueryWrapper
addressQueryWrapper = new QueryWrapper<>(); + addressQueryWrapper.in("level", Arrays.asList(0,1,2)); + List
addressList = addressMapper.selectList(addressQueryWrapper); + Map> cityMap = addressList.stream().filter(it -> it.getLevel() == 1).collect(Collectors.groupingBy(it -> it.getParentCode())); + Map> districtMap = addressList.stream().filter(it -> it.getLevel() == 2).collect(Collectors.groupingBy(it -> it.getParentCode())); + List result = new ArrayList<>(); + addressList.stream().filter(it -> it.getLevel() == 0).forEach(it -> { + AddressDTO dto = new AddressDTO(); + dto.setId(it.getCode()); + dto.setLevel("province"); + dto.setName(it.getName()); + dto.setPid(0L); + //获取城市列表 + List child = new ArrayList<>(); + if (cityMap.containsKey(it.getCode())) { + cityMap.get(it.getCode()).forEach(city -> { + AddressDTO cityDto = new AddressDTO(); + cityDto.setId(city.getCode()); + cityDto.setLevel("city"); + cityDto.setName(city.getName()); + cityDto.setPid(city.getParentCode()); + cityDto.setChildren(districtMap.containsKey(city.getCode()) ? + districtMap.get(city.getCode()).stream().map(district -> { + AddressDTO districtDto = new AddressDTO(); + districtDto.setId(district.getCode()); + districtDto.setLevel("district"); + districtDto.setName(district.getName()); + districtDto.setPid(district.getParentCode()); + return districtDto; + }).collect(Collectors.toList()) : Collections.EMPTY_LIST); + child.add(cityDto); + }); + } + dto.setChildren(child); + result.add(dto); + }); + redisService.setAddressList(JSON.toJSONString(result)); + return AjaxResult.success(result); + } +} diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5MemberAddressController.java b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5MemberAddressController.java new file mode 100644 index 0000000..1587c28 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5MemberAddressController.java @@ -0,0 +1,48 @@ +package com.cyl.h5.controller; + +import com.cyl.h5.service.H5MemberAddressService; +import com.cyl.manager.ums.pojo.dto.MemberAddressDTO; +import com.cyl.manager.ums.pojo.vo.MemberAddressVO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/h5/member/address") +public class H5MemberAddressController { + + @Autowired + private H5MemberAddressService h5MemberAddressService; + + @GetMapping("/list") + public ResponseEntity> getList(){ + return ResponseEntity.ok(h5MemberAddressService.selectList()); + } + + @GetMapping("/default") + public ResponseEntity getDefault(){ + return ResponseEntity.ok(h5MemberAddressService.getDefault()); + } + + @PostMapping("/create") + public ResponseEntity create(@RequestBody MemberAddressDTO memberAddressDTO){ + return ResponseEntity.ok(h5MemberAddressService.insert(memberAddressDTO)); + } + + @PutMapping("/update") + public ResponseEntity update(@RequestBody MemberAddressDTO memberAddressDTO){ + return ResponseEntity.ok(h5MemberAddressService.update(memberAddressDTO)); + } + + @GetMapping("/{id}") + public ResponseEntity getInfo(@PathVariable Long id){ + return ResponseEntity.ok(h5MemberAddressService.selectById(id)); + } + + @DeleteMapping("/{id}") + public ResponseEntity remove(@PathVariable Long id) { + return ResponseEntity.ok(h5MemberAddressService.deleteById(id)); + } +} diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5MemberController.java b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5MemberController.java new file mode 100644 index 0000000..b893050 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5MemberController.java @@ -0,0 +1,50 @@ +package com.cyl.h5.controller; + +import com.cyl.h5.pojo.request.RegisterRequest; +import com.cyl.h5.pojo.response.RegisterResponse; +import com.cyl.h5.pojo.response.ValidatePhoneResponse; +import com.cyl.h5.pojo.response.H5LoginResponse; +import com.cyl.h5.service.H5MemberService; +import com.cyl.manager.ums.pojo.vo.MemberVO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/h5") +public class H5MemberController { + + @Autowired + private H5MemberService service; + + @ApiOperation("会员注册") + @PostMapping("/register") + public ResponseEntity register(@RequestBody RegisterRequest request){ + return ResponseEntity.ok(service.register(request)); + } + + @ApiOperation("注册验证码校验手机号") + @GetMapping("/validate/{phone}") + public ResponseEntity validate(@PathVariable String phone){ + return ResponseEntity.ok(service.validate(phone)); + } + + @ApiOperation("手机号密码登录") + @PostMapping("/account/login") + public ResponseEntity accountLogin(@RequestBody String data){ + return ResponseEntity.ok(service.accountLogin(data)); + } + + @ApiOperation("sms登录") + @PostMapping("/sms/login") + public ResponseEntity smsLogin(@RequestBody String data){ + return ResponseEntity.ok(service.smsLogin(data)); + } + + @ApiOperation("获取会员信息") + @GetMapping("/member/info") + public ResponseEntity getMemberInfo(){ + return ResponseEntity.ok(service.getMemberInfo()); + } +} diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5OrderController.java b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5OrderController.java new file mode 100644 index 0000000..65763f1 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5OrderController.java @@ -0,0 +1,63 @@ +package com.cyl.h5.controller; + +import com.cyl.h5.pojo.dto.OrderCreateDTO; +import com.cyl.h5.pojo.vo.OrderCalcVO; +import com.cyl.h5.pojo.vo.form.OrderSubmitForm; +import com.cyl.h5.pojo.vo.query.OrderH5Query; +import com.cyl.manager.oms.pojo.vo.OrderVO; +import com.cyl.manager.oms.service.OrderService; +import com.cyl.manager.ums.domain.Member; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.core.redis.RedisService; +import com.ruoyi.framework.config.LocalDataUtil; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/h5/order") +@Slf4j +public class H5OrderController { + @Autowired + private OrderService orderService; + @Autowired + private RedisService redisService; + + @PostMapping("/add") + public ResponseEntity submit(@RequestBody OrderSubmitForm form) { + Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); + Long memberId = member.getId(); + String redisKey = "h5_order_add" + memberId; + String redisValue = memberId + "_" + System.currentTimeMillis(); + try{ + redisService.lock(redisKey, redisValue, 60); + return ResponseEntity.ok(orderService.submit(form)); + }catch (Exception e){ + log.info("创建订单方法异常", e); + return null; + }finally { + try { + redisService.unLock(redisKey, redisValue); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + @PostMapping("orders") + public ResponseEntity> queryOrderPage(@RequestBody OrderH5Query query, Pageable pageReq) { + return ResponseEntity.ok(orderService.queryOrderPage(query, pageReq)); + } + + @ApiOperation("下单前校验") + @PostMapping("/addOrderCheck") + public ResponseEntity addOrderCheck(@RequestBody OrderCreateDTO orderCreateDTO){ + return ResponseEntity.ok(orderService.addOrderCheck(orderCreateDTO)); + } +} diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5ProductController.java b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5ProductController.java index 19edace..ac302aa 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5ProductController.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5ProductController.java @@ -2,10 +2,10 @@ package com.cyl.h5.controller; import com.cyl.h5.pojo.dto.ProductDTO; import com.cyl.h5.pojo.vo.ProductDetail; -import com.cyl.pms.convert.ProductConvert; -import com.cyl.pms.domain.Product; -import com.cyl.pms.pojo.query.ProductQuery; -import com.cyl.pms.service.ProductService; +import com.cyl.manager.pms.convert.ProductConvert; +import com.cyl.manager.pms.domain.Product; +import com.cyl.manager.pms.pojo.query.ProductQuery; +import com.cyl.manager.pms.service.ProductService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; @@ -28,8 +28,8 @@ public class H5ProductController { List pageRes = productService.selectList(query, page); return ResponseEntity.ok(new PageImpl<>(productConvert.dos2dtos(pageRes), page, ((com.github.pagehelper.Page) pageRes).getTotal())); } - @GetMapping("/detail") - public ResponseEntity queryDetail(@RequestParam Long id) { + @GetMapping("/detail/{id}") + public ResponseEntity queryDetail(@PathVariable Long id) { ProductDetail detail = productService.queryDetail(id); return ResponseEntity.ok(detail); } diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/controller/HomeController.java b/ruoyi-mall/src/main/java/com/cyl/h5/controller/HomeController.java index 37a45ef..b3de72f 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/controller/HomeController.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/controller/HomeController.java @@ -1,7 +1,7 @@ package com.cyl.h5.controller; import com.cyl.h5.pojo.vo.HomeConfigVO; -import com.cyl.pms.service.ProductCategoryService; +import com.cyl.manager.pms.service.ProductCategoryService; import com.ruoyi.system.service.ISysConfigService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/controller/Order1Controller.java b/ruoyi-mall/src/main/java/com/cyl/h5/controller/Order1Controller.java deleted file mode 100644 index 1a2ee60..0000000 --- a/ruoyi-mall/src/main/java/com/cyl/h5/controller/Order1Controller.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.cyl.h5.controller; - -import com.cyl.h5.pojo.vo.form.OrderSubmitForm; -import com.cyl.h5.pojo.vo.query.OrderH5Query; -import com.cyl.oms.pojo.vo.OrderVO; -import com.cyl.oms.service.OrderService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; - -@RestController -@RequestMapping("/h5-order") -public class Order1Controller { - @Autowired - private OrderService orderService; - @PostMapping("submit") - public ResponseEntity submit(@RequestBody OrderSubmitForm form) { - return ResponseEntity.ok(orderService.submit(form)); - } - @PostMapping("orders") - public ResponseEntity> queryOrderPage(@RequestBody OrderH5Query query, Pageable pageReq) { - return ResponseEntity.ok(orderService.queryOrderPage(query, pageReq)); - } -} diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/controller/UserController.java b/ruoyi-mall/src/main/java/com/cyl/h5/controller/UserController.java index 219e8dc..061b231 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/controller/UserController.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/controller/UserController.java @@ -1,8 +1,8 @@ package com.cyl.h5.controller; -import com.cyl.ums.domain.MemberAddress; -import com.cyl.ums.pojo.query.MemberAddressQuery; -import com.cyl.ums.service.MemberAddressService; +import com.cyl.manager.ums.domain.MemberAddress; +import com.cyl.manager.ums.pojo.query.MemberAddressQuery; +import com.cyl.manager.ums.service.MemberAddressService; import com.ruoyi.common.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/controller/WechatController.java b/ruoyi-mall/src/main/java/com/cyl/h5/controller/WechatController.java index 6b9e70a..95a53aa 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/controller/WechatController.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/controller/WechatController.java @@ -2,7 +2,7 @@ package com.cyl.h5.controller; import com.cyl.external.WechatUtil; import com.cyl.h5.pojo.vo.form.WechatLoginForm; -import com.cyl.ums.service.MemberWechatService; +import com.cyl.manager.ums.service.MemberWechatService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/dto/LoginDTO.java b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/dto/LoginDTO.java new file mode 100644 index 0000000..9778b48 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/dto/LoginDTO.java @@ -0,0 +1,14 @@ +package com.cyl.h5.pojo.dto; + +import lombok.Data; + +/** + * @Author: czc + * @Description: TODO + * @DateTime: 2023/6/16 14:58 + **/ +@Data +public class LoginDTO { + private String account; + private String password; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/dto/OrderCreateDTO.java b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/dto/OrderCreateDTO.java new file mode 100644 index 0000000..5b217ce --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/dto/OrderCreateDTO.java @@ -0,0 +1,36 @@ + package com.cyl.h5.pojo.dto; + + import io.swagger.annotations.ApiModel; + import io.swagger.annotations.ApiModelProperty; + import lombok.Data; + + import java.util.List; + + + /** + * 创建订单请求VO + * @author Jinxin + * + */ + @Data + @ApiModel(value = "创建订单请求VO") + public class OrderCreateDTO { + @ApiModelProperty(value = "商品购买明细",required = true) + private List skuList; + + @ApiModelProperty(value = "收货地址id") + private Long receiveAddressId; + + @ApiModelProperty(value = "收货方式 1:快递 2:自提 代理商只有1", required = false) + private Integer deliveryType = 1; + + @ApiModelProperty(value = "支付方式:1-支付宝,2-微信(默认)", required = false, allowableValues = "1,2") +// @NotNull(message = "支付方式不能为空") + private Integer payType; + + @ApiModelProperty(value = "订单备注") + private String note; + + @ApiModelProperty(value = "订单来源 购物车是 cart") + private String from; + } \ No newline at end of file diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/dto/OrderProductListDTO.java b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/dto/OrderProductListDTO.java new file mode 100644 index 0000000..0f96d07 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/dto/OrderProductListDTO.java @@ -0,0 +1,42 @@ + package com.cyl.h5.pojo.dto; + + import com.cyl.manager.pms.domain.Product; + import com.cyl.manager.pms.domain.Sku; + import io.swagger.annotations.ApiModel; + import io.swagger.annotations.ApiModelProperty; + import lombok.Data; + + import javax.validation.constraints.Min; + import javax.validation.constraints.NotNull; + import java.math.BigDecimal; + + + /** + * 创建订单请求VO + * @author Jinxin + * + */ + @Data + @ApiModel(value = "创建订单请求VO") + public class OrderProductListDTO { + @ApiModelProperty(value = "商品skuId", required = true) + @NotNull(message = "商品skuId不能为空") + private Long skuId; + + @ApiModelProperty(value = "数量", required = true) + @NotNull(message = "数量不能为空") + @Min(value = 1, message = "数量不能小于1") + private Integer quantity; + + @ApiModelProperty(value = "消费金", hidden = true) + private BigDecimal consumption; + + @ApiModelProperty(value = "运费", hidden = true) + private BigDecimal freightAmount; + + @ApiModelProperty(value = "隐藏 业务过程中的数据", hidden = true) + private Sku sku; + + @ApiModelProperty(value = "隐藏 业务过程中的数据", hidden = true) + private Product product; + } \ No newline at end of file diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/request/H5AccountLoginRequest.java b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/request/H5AccountLoginRequest.java new file mode 100644 index 0000000..e4ed87a --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/request/H5AccountLoginRequest.java @@ -0,0 +1,9 @@ +package com.cyl.h5.pojo.request; + +import lombok.Data; + +@Data +public class H5AccountLoginRequest extends H5LoginRequest{ + /** 密码 */ + private String password; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/request/H5LoginRequest.java b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/request/H5LoginRequest.java new file mode 100644 index 0000000..557b207 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/request/H5LoginRequest.java @@ -0,0 +1,9 @@ +package com.cyl.h5.pojo.request; + +import lombok.Data; + +@Data +public class H5LoginRequest { + /** 账号即手机号 */ + private String mobile; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/request/H5SmsLoginRequest.java b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/request/H5SmsLoginRequest.java new file mode 100644 index 0000000..4655ec1 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/request/H5SmsLoginRequest.java @@ -0,0 +1,11 @@ +package com.cyl.h5.pojo.request; + +import lombok.Data; + +@Data +public class H5SmsLoginRequest extends H5LoginRequest { + /** 验证码 */ + private String code; + /** uuid */ + private String uuid; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/request/RegisterRequest.java b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/request/RegisterRequest.java new file mode 100644 index 0000000..2d90442 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/request/RegisterRequest.java @@ -0,0 +1,27 @@ +package com.cyl.h5.pojo.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class RegisterRequest { + + @ApiModelProperty("手机号") + @NotBlank + private String mobile; + + @ApiModelProperty("密码") + @NotBlank + private String password; + + @ApiModelProperty("uuid") + @NotBlank + private String uuid; + + @ApiModelProperty("验证码") + @NotBlank + private String code; + +} diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/response/H5LoginResponse.java b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/response/H5LoginResponse.java new file mode 100644 index 0000000..7273f5d --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/response/H5LoginResponse.java @@ -0,0 +1,13 @@ +package com.cyl.h5.pojo.response; + +import lombok.Data; + +/** + * @Author: czc + * @Description: TODO + * @DateTime: 2023/6/16 14:54 + **/ +@Data +public class H5LoginResponse { + private String token; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/response/RegisterResponse.java b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/response/RegisterResponse.java new file mode 100644 index 0000000..8d6a854 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/response/RegisterResponse.java @@ -0,0 +1,9 @@ +package com.cyl.h5.pojo.response; + +import lombok.Data; + +@Data +public class RegisterResponse { + /** token */ + private String token; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/response/ValidatePhoneResponse.java b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/response/ValidatePhoneResponse.java new file mode 100644 index 0000000..523de06 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/response/ValidatePhoneResponse.java @@ -0,0 +1,11 @@ +package com.cyl.h5.pojo.response; + +import lombok.Data; + +@Data +public class ValidatePhoneResponse { + /** 是否成功 */ + private boolean ifSuccess; + /** 消息 */ + private String message; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/OrderCalcVO.java b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/OrderCalcVO.java new file mode 100644 index 0000000..31cf021 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/OrderCalcVO.java @@ -0,0 +1,19 @@ +package com.cyl.h5.pojo.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@ApiModel("下单前校验返回数据") +public class OrderCalcVO { + @ApiModelProperty("sku数据") + private List skuList; + @ApiModelProperty("商品总金额") + private BigDecimal productTotalAmount; + @ApiModelProperty("订单总金额") + private BigDecimal orderTotalAmount; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/ProductDetail.java b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/ProductDetail.java index a80f798..26314cf 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/ProductDetail.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/ProductDetail.java @@ -1,8 +1,8 @@ package com.cyl.h5.pojo.vo; -import com.cyl.pms.domain.Brand; -import com.cyl.pms.domain.Product; -import com.cyl.pms.domain.Sku; +import com.cyl.manager.pms.domain.Brand; +import com.cyl.manager.pms.domain.Product; +import com.cyl.manager.pms.domain.Sku; import lombok.Data; import java.util.List; diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/SkuViewDTO.java b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/SkuViewDTO.java new file mode 100644 index 0000000..95eff74 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/SkuViewDTO.java @@ -0,0 +1,30 @@ +package com.cyl.h5.pojo.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * sku渲染详情 + * + * @author Jinxin + */ +@Data +@ApiModel(value = "sku渲染详情") +public class SkuViewDTO { + private Long productId; + private Long skuId; + @ApiModelProperty(value = "商品名称") + private String productName; + @ApiModelProperty(value = "销售属性") + private String spData; + @ApiModelProperty(value = "购买数量") + private Integer quantity; + @ApiModelProperty(value = "主图") + private String pic; + @ApiModelProperty(value = "售价") + private BigDecimal price; +} \ No newline at end of file diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/form/OrderSubmitForm.java b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/form/OrderSubmitForm.java index 7230cc1..2a7e21f 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/form/OrderSubmitForm.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/form/OrderSubmitForm.java @@ -1,5 +1,6 @@ package com.cyl.h5.pojo.vo.form; +import com.cyl.h5.pojo.dto.OrderProductListDTO; import lombok.Data; import javax.validation.constraints.NotEmpty; @@ -11,8 +12,12 @@ public class OrderSubmitForm { @NotNull private Long addressId; private String note; + /** 支付方式 0:未支付 1:支付宝 2:微信 默认微信 */ + private Integer payType = 2; + /** 订单来源,购物车则为cart */ + private String from; @NotEmpty - private List skus; + private List skuList; @Data public static class SkuParam { private Long skuId; diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/service/H5MemberAddressService.java b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5MemberAddressService.java new file mode 100644 index 0000000..6172678 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5MemberAddressService.java @@ -0,0 +1,146 @@ +package com.cyl.h5.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cyl.manager.ums.domain.Member; +import com.cyl.manager.ums.domain.MemberAddress; +import com.cyl.manager.ums.mapper.MemberAddressMapper; +import com.cyl.manager.ums.pojo.dto.MemberAddressDTO; +import com.cyl.manager.ums.pojo.vo.MemberAddressVO; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.utils.AesCryptoUtils; +import com.ruoyi.common.utils.PhoneUtils; +import com.ruoyi.framework.config.LocalDataUtil; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.time.LocalDateTime; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 会员收货地址Service业务层处理 + * + * @author sjm + */ +@Service +@Transactional +public class H5MemberAddressService { + @Autowired + private MemberAddressMapper memberAddressMapper; + + @Value("${aes.key}") + private String aesKey; + + /** + * 查询会员收货地址 + * + * @param id 会员收货地址主键 + * @return 会员收货地址 + */ + + public MemberAddressVO selectById(Long id) { + MemberAddress memberAddress = memberAddressMapper.selectById(id); + MemberAddressVO memberAddressVO = new MemberAddressVO(); + BeanUtils.copyProperties(memberAddress, memberAddressVO); + memberAddressVO.setPhone(AesCryptoUtils.decrypt(aesKey, memberAddress.getPhoneEncrypted())); + return memberAddressVO; + } + + public List selectList() { + Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); + MemberAddress memberAddress = new MemberAddress(); + memberAddress.setMemberId(member.getId()); + List memberAddressesList = memberAddressMapper.selectByEntity(memberAddress); + return memberAddressesList.stream().map(it -> { + MemberAddressVO vo = new MemberAddressVO(); + BeanUtils.copyProperties(it, vo); + vo.setPhone(AesCryptoUtils.decrypt(aesKey, it.getPhoneEncrypted())); + return vo; + }).collect(Collectors.toList()); + } + + /** + * 新增会员收货地址 + * + * @param memberAddressDTO 会员收货地址 + * @return 结果 + */ + public int insert(MemberAddressDTO memberAddressDTO) { + Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); + if (memberAddressDTO.getIsDefault() == 1) { + //将别的设置为0 + memberAddressMapper.updateDefault(0,member.getId()); + } + MemberAddress memberAddress = new MemberAddress(); + BeanUtils.copyProperties(memberAddressDTO, memberAddress); + memberAddress.setPhoneHidden(PhoneUtils.hidePhone(memberAddressDTO.getPhone())); + memberAddress.setPhoneEncrypted(AesCryptoUtils.encrypt(aesKey, memberAddressDTO.getPhone())); + memberAddress.setMemberId(member.getId()); + memberAddress.setCreateTime(LocalDateTime.now()); + return memberAddressMapper.insert(memberAddress); + } + + /** + * 修改会员收货地址 + * + * @param memberAddressDTO 会员收货地址 + * @return 结果 + */ + + public int update(MemberAddressDTO memberAddressDTO) { + Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); + if (memberAddressDTO.getIsDefault() == 1) { + //将别的设置为0 + memberAddressMapper.updateDefault(0,member.getId()); + } + MemberAddress memberAddress = new MemberAddress(); + BeanUtils.copyProperties(memberAddressDTO, memberAddress); + memberAddress.setPhoneHidden(PhoneUtils.hidePhone(memberAddressDTO.getPhone())); + memberAddress.setPhoneEncrypted(AesCryptoUtils.encrypt(aesKey, memberAddressDTO.getPhone())); + memberAddress.setUpdateTime(LocalDateTime.now()); + memberAddress.setUpdateBy(member.getId()); + return memberAddressMapper.updateById(memberAddress); + } + + /** + * 批量删除会员收货地址 + * + * @param ids 需要删除的会员收货地址主键 + * @return 结果 + */ + + public int deleteByIds(Long[] ids) { + return memberAddressMapper.deleteBatchIds(Arrays.asList(ids)); + } + + /** + * 删除会员收货地址信息 + * + * @param id 会员收货地址主键 + * @return 结果 + */ + + public int deleteById(Long id) { + return memberAddressMapper.deleteById(id); + } + + public MemberAddressVO getDefault() { + Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("member_id",member.getId()); + queryWrapper.eq("is_default",1); + List list = memberAddressMapper.selectList(queryWrapper); + if (CollectionUtils.isEmpty(list)){ + return null; + } + MemberAddressVO memberAddressVO = new MemberAddressVO(); + BeanUtils.copyProperties(list.get(0), memberAddressVO); + memberAddressVO.setPhone(AesCryptoUtils.decrypt(aesKey, list.get(0).getPhoneEncrypted())); + return memberAddressVO; + } +} diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/service/H5MemberService.java b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5MemberService.java new file mode 100644 index 0000000..52e77a8 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5MemberService.java @@ -0,0 +1,184 @@ +package com.cyl.h5.service; + +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cyl.h5.pojo.request.H5AccountLoginRequest; +import com.cyl.h5.pojo.request.H5SmsLoginRequest; +import com.cyl.h5.pojo.request.RegisterRequest; +import com.cyl.h5.pojo.response.RegisterResponse; +import com.cyl.h5.pojo.response.ValidatePhoneResponse; +import com.cyl.h5.pojo.response.H5LoginResponse; +import com.cyl.manager.ums.domain.Member; +import com.cyl.manager.ums.mapper.MemberMapper; +import com.cyl.manager.ums.pojo.vo.MemberVO; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.core.domain.model.LoginMember; +import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.common.utils.AesCryptoUtils; +import com.ruoyi.common.utils.PhoneUtils; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.framework.config.LocalDataUtil; +import com.ruoyi.framework.web.service.TokenService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.util.Base64Utils; + +import java.time.LocalDateTime; +import java.util.Base64; + +@Service +@Slf4j +public class H5MemberService { + + @Autowired + private MemberMapper memberMapper; + + @Autowired + private RedisCache redisCache; + + @Autowired + private TokenService tokenService; + + @Value("${aes.key}") + private String aesKey; + + /** + * 注册 + * @param request 注册请求体 + * @return 结果 + */ + public RegisterResponse register(RegisterRequest request){ + RegisterResponse response = new RegisterResponse(); + //校验验证码 + this.validateVerifyCode(request.getUuid(), request.getMobile(), request.getCode()); + //创建会员 + Member member = new Member(); + member.setPhoneEncrypted(AesCryptoUtils.encrypt(aesKey, request.getMobile())); + member.setPhoneHidden(PhoneUtils.hidePhone(request.getMobile())); + member.setPassword(SecurityUtils.encryptPassword(request.getPassword())); + member.setNickname("用户" + request.getMobile().substring(7,11)); + member.setStatus(Constants.MEMBER_ACCOUNT_STATUS.NORMAL); + member.setGender(0); + member.setCreateTime(LocalDateTime.now()); + memberMapper.insert(member); + //注册成功直接返回token了 + H5LoginResponse loginResponse = getLoginResponse(member.getId()); + response.setToken(loginResponse.getToken()); + return response; + } + + public ValidatePhoneResponse validate(String phone) { + ValidatePhoneResponse response = new ValidatePhoneResponse(); + byte[] decodedBytes = Base64.getDecoder().decode(phone); + phone = new String(decodedBytes); + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("phone_encrypted", AesCryptoUtils.encrypt(aesKey, phone)); + Member member = memberMapper.selectOne(qw); + if (member != null){ + throw new RuntimeException("该手机号已被占用"); + } + response.setIfSuccess(true); + response.setMessage("该手机号可用"); + return response; + } + + /** + * 账号密码登录 + * @param data + * @return + */ + public H5LoginResponse accountLogin(String data) { + if (StringUtils.isEmpty(data)){ + throw new RuntimeException(Constants.LOGIN_INFO.WRONG); + } + // 解码 转 对象 + H5AccountLoginRequest request = JSON.parseObject(new String(Base64Utils.decodeFromString(data)), H5AccountLoginRequest.class); + log.info("account login request:{}", JSONUtil.toJsonStr(request)); + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("phone_encrypted", AesCryptoUtils.encrypt(aesKey, request.getMobile())); + Member member = memberMapper.selectOne(qw); + if (member == null){ + throw new RuntimeException(Constants.LOGIN_INFO.WRONG); + } + validateMemberStatus(member); + //check 密码 + if (!SecurityUtils.matchesPassword(request.getPassword(), member.getPassword())){ + throw new RuntimeException(Constants.LOGIN_INFO.WRONG); + } + return getLoginResponse(member.getId()); + } + + public H5LoginResponse smsLogin(String data){ + if (StringUtils.isEmpty(data)){ + throw new RuntimeException(Constants.LOGIN_INFO.WRONG); + } + H5SmsLoginRequest request = JSON.parseObject(new String(Base64Utils.decodeFromString(data)), H5SmsLoginRequest.class); + //校验验证码 + this.validateVerifyCode(request.getUuid(), request.getMobile(), request.getCode()); + //查会员 + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("phone_encrypted", AesCryptoUtils.encrypt(aesKey, request.getMobile())); + Member member = memberMapper.selectOne(qw); + if (member == null){ + throw new RuntimeException(Constants.LOGIN_INFO.TO_REGISTER); + } + //校验会员状态 + validateMemberStatus(member); + return getLoginResponse(member.getId()); + } + + /** + * 校验会员状态 + * @param member 会员信息 + */ + private void validateMemberStatus(Member member) { + if (Constants.MEMBER_ACCOUNT_STATUS.FORBIDDEN == member.getStatus()){ + throw new RuntimeException(Constants.LOGIN_INFO.FORBIDDEN); + } + } + + /** + * 校验验证码有效性 + * @param uuid 唯一标识 + * @param phone 手机号 + * @param inputCode 输入的验证码 + */ + private void validateVerifyCode(String uuid, String phone, String inputCode){ + String key = uuid + "_" + phone; + String redisCode = redisCache.getCacheObject(key); + if (redisCode == null){ + throw new RuntimeException(Constants.VERIFY_CODE_INFO.EXPIRED); + }else if (!redisCode.equals(inputCode)){ + throw new RuntimeException(Constants.VERIFY_CODE_INFO.WRONG); + } + //删除缓存 + redisCache.deleteObject(key); + } + + /** + * 封装登录响应 + * @param memberId 登录会员id + * @return 结果 + */ + private H5LoginResponse getLoginResponse(Long memberId){ + LoginMember loginMember = new LoginMember(); + loginMember.setMemberId(memberId); + String token = tokenService.createMemberToken(loginMember); + H5LoginResponse response = new H5LoginResponse(); + response.setToken(token); + return response; + } + + public MemberVO getMemberInfo() { + Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); + MemberVO memberVO = new MemberVO(); + BeanUtils.copyProperties(member, memberVO); + memberVO.setPhone(AesCryptoUtils.decrypt(aesKey, member.getPhoneEncrypted())); + return memberVO; + } +} diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/controller/AftersaleController.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/AftersaleController.java similarity index 92% rename from ruoyi-mall/src/main/java/com/cyl/oms/controller/AftersaleController.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/AftersaleController.java index 34759de..0dde72a 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/controller/AftersaleController.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/AftersaleController.java @@ -1,4 +1,4 @@ -package com.cyl.oms.controller; +package com.cyl.manager.oms.controller; import java.util.List; @@ -21,11 +21,11 @@ import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.enums.BusinessType; -import com.cyl.oms.convert.AftersaleConvert; -import com.cyl.oms.domain.Aftersale; -import com.cyl.oms.pojo.query.AftersaleQuery; -import com.cyl.oms.service.AftersaleService; -import com.cyl.oms.pojo.vo.AftersaleVO; +import com.cyl.manager.oms.convert.AftersaleConvert; +import com.cyl.manager.oms.domain.Aftersale; +import com.cyl.manager.oms.pojo.query.AftersaleQuery; +import com.cyl.manager.oms.service.AftersaleService; +import com.cyl.manager.oms.pojo.vo.AftersaleVO; import com.ruoyi.common.utils.poi.ExcelUtil; /** * 订单售后Controller diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/controller/AftersaleItemController.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/AftersaleItemController.java similarity index 92% rename from ruoyi-mall/src/main/java/com/cyl/oms/controller/AftersaleItemController.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/AftersaleItemController.java index f5046ba..8dcd656 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/controller/AftersaleItemController.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/AftersaleItemController.java @@ -1,4 +1,4 @@ -package com.cyl.oms.controller; +package com.cyl.manager.oms.controller; import java.util.List; @@ -21,11 +21,11 @@ import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.enums.BusinessType; -import com.cyl.oms.convert.AftersaleItemConvert; -import com.cyl.oms.domain.AftersaleItem; -import com.cyl.oms.pojo.query.AftersaleItemQuery; -import com.cyl.oms.service.AftersaleItemService; -import com.cyl.oms.pojo.vo.AftersaleItemVO; +import com.cyl.manager.oms.convert.AftersaleItemConvert; +import com.cyl.manager.oms.domain.AftersaleItem; +import com.cyl.manager.oms.pojo.query.AftersaleItemQuery; +import com.cyl.manager.oms.service.AftersaleItemService; +import com.cyl.manager.oms.pojo.vo.AftersaleItemVO; import com.ruoyi.common.utils.poi.ExcelUtil; /** * 订单售后Controller diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/controller/OrderController.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/OrderController.java similarity index 79% rename from ruoyi-mall/src/main/java/com/cyl/oms/controller/OrderController.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/OrderController.java index 8d534e2..0d1fb8a 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/controller/OrderController.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/OrderController.java @@ -1,7 +1,9 @@ -package com.cyl.oms.controller; +package com.cyl.manager.oms.controller; import java.util.List; +import com.cyl.manager.oms.pojo.request.ManagerOrderQueryRequest; +import com.cyl.manager.oms.pojo.vo.ManagerOrderVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.data.domain.PageImpl; @@ -21,11 +23,11 @@ import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.enums.BusinessType; -import com.cyl.oms.convert.OrderConvert; -import com.cyl.oms.domain.Order; -import com.cyl.oms.pojo.query.OrderQuery; -import com.cyl.oms.service.OrderService; -import com.cyl.oms.pojo.vo.OrderVO; +import com.cyl.manager.oms.convert.OrderConvert; +import com.cyl.manager.oms.domain.Order; +import com.cyl.manager.oms.pojo.query.OrderQuery; +import com.cyl.manager.oms.service.OrderService; +import com.cyl.manager.oms.pojo.vo.OrderVO; import com.ruoyi.common.utils.poi.ExcelUtil; /** * 订单表Controller @@ -45,8 +47,8 @@ public class OrderController extends BaseController { @ApiOperation("查询订单表列表") @PreAuthorize("@ss.hasPermi('oms:order:list')") @PostMapping("/list") - public ResponseEntity> list(@RequestBody OrderQuery query, Pageable page) { - List list = service.selectList(query, page); + public ResponseEntity> list(@RequestBody ManagerOrderQueryRequest query, Pageable page) { + List list = service.selectList(query, page); return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal())); } @@ -55,9 +57,10 @@ public class OrderController extends BaseController { @Log(title = "订单表", businessType = BusinessType.EXPORT) @GetMapping("/export") public ResponseEntity export(OrderQuery query) { - List list = service.selectList(query, null); - ExcelUtil util = new ExcelUtil<>(OrderVO.class); - return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "订单表数据")); +// List list = service.selectList(query, null); +// ExcelUtil util = new ExcelUtil<>(OrderVO.class); +// return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "订单表数据")); + return null; } @ApiOperation("获取订单表详细信息") diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/controller/OrderDeliveryHistoryController.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/OrderDeliveryHistoryController.java similarity index 91% rename from ruoyi-mall/src/main/java/com/cyl/oms/controller/OrderDeliveryHistoryController.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/OrderDeliveryHistoryController.java index dd6cec9..312d08d 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/controller/OrderDeliveryHistoryController.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/OrderDeliveryHistoryController.java @@ -1,4 +1,4 @@ -package com.cyl.oms.controller; +package com.cyl.manager.oms.controller; import java.util.List; @@ -21,11 +21,11 @@ import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.enums.BusinessType; -import com.cyl.oms.convert.OrderDeliveryHistoryConvert; -import com.cyl.oms.domain.OrderDeliveryHistory; -import com.cyl.oms.pojo.query.OrderDeliveryHistoryQuery; -import com.cyl.oms.service.OrderDeliveryHistoryService; -import com.cyl.oms.pojo.vo.OrderDeliveryHistoryVO; +import com.cyl.manager.oms.convert.OrderDeliveryHistoryConvert; +import com.cyl.manager.oms.domain.OrderDeliveryHistory; +import com.cyl.manager.oms.pojo.query.OrderDeliveryHistoryQuery; +import com.cyl.manager.oms.service.OrderDeliveryHistoryService; +import com.cyl.manager.oms.pojo.vo.OrderDeliveryHistoryVO; import com.ruoyi.common.utils.poi.ExcelUtil; /** * 订单发货记录Controller diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/controller/OrderItemController.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/OrderItemController.java similarity index 92% rename from ruoyi-mall/src/main/java/com/cyl/oms/controller/OrderItemController.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/OrderItemController.java index 6460591..0943b77 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/controller/OrderItemController.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/OrderItemController.java @@ -1,4 +1,4 @@ -package com.cyl.oms.controller; +package com.cyl.manager.oms.controller; import java.util.List; @@ -21,11 +21,11 @@ import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.enums.BusinessType; -import com.cyl.oms.convert.OrderItemConvert; -import com.cyl.oms.domain.OrderItem; -import com.cyl.oms.pojo.query.OrderItemQuery; -import com.cyl.oms.service.OrderItemService; -import com.cyl.oms.pojo.vo.OrderItemVO; +import com.cyl.manager.oms.convert.OrderItemConvert; +import com.cyl.manager.oms.domain.OrderItem; +import com.cyl.manager.oms.pojo.query.OrderItemQuery; +import com.cyl.manager.oms.service.OrderItemService; +import com.cyl.manager.oms.pojo.vo.OrderItemVO; import com.ruoyi.common.utils.poi.ExcelUtil; /** * 订单中所包含的商品Controller diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/controller/OrderOperateHistoryController.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/OrderOperateHistoryController.java similarity index 92% rename from ruoyi-mall/src/main/java/com/cyl/oms/controller/OrderOperateHistoryController.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/OrderOperateHistoryController.java index 0dc9af3..1496cd8 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/controller/OrderOperateHistoryController.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/controller/OrderOperateHistoryController.java @@ -1,4 +1,4 @@ -package com.cyl.oms.controller; +package com.cyl.manager.oms.controller; import java.util.List; @@ -21,11 +21,11 @@ import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.enums.BusinessType; -import com.cyl.oms.convert.OrderOperateHistoryConvert; -import com.cyl.oms.domain.OrderOperateHistory; -import com.cyl.oms.pojo.query.OrderOperateHistoryQuery; -import com.cyl.oms.service.OrderOperateHistoryService; -import com.cyl.oms.pojo.vo.OrderOperateHistoryVO; +import com.cyl.manager.oms.convert.OrderOperateHistoryConvert; +import com.cyl.manager.oms.domain.OrderOperateHistory; +import com.cyl.manager.oms.pojo.query.OrderOperateHistoryQuery; +import com.cyl.manager.oms.service.OrderOperateHistoryService; +import com.cyl.manager.oms.pojo.vo.OrderOperateHistoryVO; import com.ruoyi.common.utils.poi.ExcelUtil; /** * 订单操作历史记录Controller diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/convert/AftersaleConvert.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/convert/AftersaleConvert.java similarity index 66% rename from ruoyi-mall/src/main/java/com/cyl/oms/convert/AftersaleConvert.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/convert/AftersaleConvert.java index 3543329..49646d4 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/convert/AftersaleConvert.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/convert/AftersaleConvert.java @@ -1,8 +1,8 @@ -package com.cyl.oms.convert; +package com.cyl.manager.oms.convert; import org.mapstruct.Mapper; -import com.cyl.oms.domain.Aftersale; -import com.cyl.oms.pojo.vo.AftersaleVO; +import com.cyl.manager.oms.domain.Aftersale; +import com.cyl.manager.oms.pojo.vo.AftersaleVO; import java.util.List; /** * 订单售后 DO <=> DTO <=> VO / BO / Query diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/convert/AftersaleItemConvert.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/convert/AftersaleItemConvert.java similarity index 65% rename from ruoyi-mall/src/main/java/com/cyl/oms/convert/AftersaleItemConvert.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/convert/AftersaleItemConvert.java index dae2958..b26772b 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/convert/AftersaleItemConvert.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/convert/AftersaleItemConvert.java @@ -1,8 +1,8 @@ -package com.cyl.oms.convert; +package com.cyl.manager.oms.convert; import org.mapstruct.Mapper; -import com.cyl.oms.domain.AftersaleItem; -import com.cyl.oms.pojo.vo.AftersaleItemVO; +import com.cyl.manager.oms.domain.AftersaleItem; +import com.cyl.manager.oms.pojo.vo.AftersaleItemVO; import java.util.List; /** * 订单售后 DO <=> DTO <=> VO / BO / Query diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/convert/OrderConvert.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/convert/OrderConvert.java similarity index 69% rename from ruoyi-mall/src/main/java/com/cyl/oms/convert/OrderConvert.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/convert/OrderConvert.java index 1874554..dd1a51f 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/convert/OrderConvert.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/convert/OrderConvert.java @@ -1,8 +1,8 @@ -package com.cyl.oms.convert; +package com.cyl.manager.oms.convert; import org.mapstruct.Mapper; -import com.cyl.oms.domain.Order; -import com.cyl.oms.pojo.vo.OrderVO; +import com.cyl.manager.oms.domain.Order; +import com.cyl.manager.oms.pojo.vo.OrderVO; import java.util.List; /** * 订单表 DO <=> DTO <=> VO / BO / Query diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/convert/OrderDeliveryHistoryConvert.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/convert/OrderDeliveryHistoryConvert.java similarity index 65% rename from ruoyi-mall/src/main/java/com/cyl/oms/convert/OrderDeliveryHistoryConvert.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/convert/OrderDeliveryHistoryConvert.java index caae4e7..d7aa110 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/convert/OrderDeliveryHistoryConvert.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/convert/OrderDeliveryHistoryConvert.java @@ -1,8 +1,8 @@ -package com.cyl.oms.convert; +package com.cyl.manager.oms.convert; import org.mapstruct.Mapper; -import com.cyl.oms.domain.OrderDeliveryHistory; -import com.cyl.oms.pojo.vo.OrderDeliveryHistoryVO; +import com.cyl.manager.oms.domain.OrderDeliveryHistory; +import com.cyl.manager.oms.pojo.vo.OrderDeliveryHistoryVO; import java.util.List; /** * 订单发货记录 DO <=> DTO <=> VO / BO / Query diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/convert/OrderItemConvert.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/convert/OrderItemConvert.java similarity index 67% rename from ruoyi-mall/src/main/java/com/cyl/oms/convert/OrderItemConvert.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/convert/OrderItemConvert.java index 2b6c32b..ed05be5 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/convert/OrderItemConvert.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/convert/OrderItemConvert.java @@ -1,8 +1,8 @@ -package com.cyl.oms.convert; +package com.cyl.manager.oms.convert; import org.mapstruct.Mapper; -import com.cyl.oms.domain.OrderItem; -import com.cyl.oms.pojo.vo.OrderItemVO; +import com.cyl.manager.oms.domain.OrderItem; +import com.cyl.manager.oms.pojo.vo.OrderItemVO; import java.util.List; /** * 订单中所包含的商品 DO <=> DTO <=> VO / BO / Query diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/convert/OrderOperateHistoryConvert.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/convert/OrderOperateHistoryConvert.java similarity index 66% rename from ruoyi-mall/src/main/java/com/cyl/oms/convert/OrderOperateHistoryConvert.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/convert/OrderOperateHistoryConvert.java index a840561..f1ee3a2 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/convert/OrderOperateHistoryConvert.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/convert/OrderOperateHistoryConvert.java @@ -1,8 +1,8 @@ -package com.cyl.oms.convert; +package com.cyl.manager.oms.convert; import org.mapstruct.Mapper; -import com.cyl.oms.domain.OrderOperateHistory; -import com.cyl.oms.pojo.vo.OrderOperateHistoryVO; +import com.cyl.manager.oms.domain.OrderOperateHistory; +import com.cyl.manager.oms.pojo.vo.OrderOperateHistoryVO; import java.util.List; /** * 订单操作历史记录 DO <=> DTO <=> VO / BO / Query diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/domain/Aftersale.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/Aftersale.java similarity index 98% rename from ruoyi-mall/src/main/java/com/cyl/oms/domain/Aftersale.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/Aftersale.java index 288ce0b..f506de9 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/domain/Aftersale.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/Aftersale.java @@ -1,4 +1,4 @@ -package com.cyl.oms.domain; +package com.cyl.manager.oms.domain; import java.math.BigDecimal; import java.time.LocalDateTime; diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/domain/AftersaleItem.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/AftersaleItem.java similarity index 96% rename from ruoyi-mall/src/main/java/com/cyl/oms/domain/AftersaleItem.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/AftersaleItem.java index ce971ae..66b7dee 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/domain/AftersaleItem.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/AftersaleItem.java @@ -1,4 +1,4 @@ -package com.cyl.oms.domain; +package com.cyl.manager.oms.domain; import java.math.BigDecimal; import com.ruoyi.common.annotation.Excel; diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/domain/Order.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/Order.java similarity index 96% rename from ruoyi-mall/src/main/java/com/cyl/oms/domain/Order.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/Order.java index 59745ee..c90fd46 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/domain/Order.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/Order.java @@ -1,7 +1,10 @@ -package com.cyl.oms.domain; +package com.cyl.manager.oms.domain; import java.math.BigDecimal; import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; import com.ruoyi.common.annotation.Excel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -20,6 +23,7 @@ public class Order extends BaseAudit { private static final long serialVersionUID = 1L; @ApiModelProperty("订单id") + @TableId(type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty("MEMBER_ID") diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/domain/OrderDeliveryHistory.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/OrderDeliveryHistory.java similarity index 96% rename from ruoyi-mall/src/main/java/com/cyl/oms/domain/OrderDeliveryHistory.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/OrderDeliveryHistory.java index 386a652..efefcca 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/domain/OrderDeliveryHistory.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/OrderDeliveryHistory.java @@ -1,4 +1,4 @@ -package com.cyl.oms.domain; +package com.cyl.manager.oms.domain; import com.ruoyi.common.annotation.Excel; import io.swagger.annotations.ApiModel; diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/domain/OrderItem.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/OrderItem.java similarity index 92% rename from ruoyi-mall/src/main/java/com/cyl/oms/domain/OrderItem.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/OrderItem.java index 73ae487..461f0fa 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/domain/OrderItem.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/OrderItem.java @@ -1,6 +1,9 @@ -package com.cyl.oms.domain; +package com.cyl.manager.oms.domain; import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; import com.ruoyi.common.annotation.Excel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -19,6 +22,7 @@ public class OrderItem extends BaseAudit { private static final long serialVersionUID = 1L; @ApiModelProperty("ID") + @TableId(type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty("订单id") diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/domain/OrderOperateHistory.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/OrderOperateHistory.java similarity index 97% rename from ruoyi-mall/src/main/java/com/cyl/oms/domain/OrderOperateHistory.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/OrderOperateHistory.java index e49c1b3..d554bc4 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/domain/OrderOperateHistory.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/domain/OrderOperateHistory.java @@ -1,4 +1,4 @@ -package com.cyl.oms.domain; +package com.cyl.manager.oms.domain; import com.ruoyi.common.annotation.Excel; import io.swagger.annotations.ApiModel; diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/mapper/AftersaleItemMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/AftersaleItemMapper.java similarity index 78% rename from ruoyi-mall/src/main/java/com/cyl/oms/mapper/AftersaleItemMapper.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/AftersaleItemMapper.java index 36f24d3..b4f850e 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/mapper/AftersaleItemMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/AftersaleItemMapper.java @@ -1,9 +1,8 @@ -package com.cyl.oms.mapper; +package com.cyl.manager.oms.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import com.cyl.oms.domain.AftersaleItem; +import com.cyl.manager.oms.domain.AftersaleItem; /** * 订单售后Mapper接口 diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/mapper/AftersaleMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/AftersaleMapper.java similarity index 77% rename from ruoyi-mall/src/main/java/com/cyl/oms/mapper/AftersaleMapper.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/AftersaleMapper.java index 4cbc8b4..0c2e9d2 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/mapper/AftersaleMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/AftersaleMapper.java @@ -1,9 +1,8 @@ -package com.cyl.oms.mapper; +package com.cyl.manager.oms.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import com.cyl.oms.domain.Aftersale; +import com.cyl.manager.oms.domain.Aftersale; /** * 订单售后Mapper接口 diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/mapper/OrderDeliveryHistoryMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderDeliveryHistoryMapper.java similarity index 79% rename from ruoyi-mall/src/main/java/com/cyl/oms/mapper/OrderDeliveryHistoryMapper.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderDeliveryHistoryMapper.java index 7a34026..a4003f0 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/mapper/OrderDeliveryHistoryMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderDeliveryHistoryMapper.java @@ -1,9 +1,8 @@ -package com.cyl.oms.mapper; +package com.cyl.manager.oms.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import com.cyl.oms.domain.OrderDeliveryHistory; +import com.cyl.manager.oms.domain.OrderDeliveryHistory; /** * 订单发货记录Mapper接口 diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/mapper/OrderItemMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderItemMapper.java similarity index 80% rename from ruoyi-mall/src/main/java/com/cyl/oms/mapper/OrderItemMapper.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderItemMapper.java index 9371f13..f8ee2c4 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/mapper/OrderItemMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderItemMapper.java @@ -1,9 +1,8 @@ -package com.cyl.oms.mapper; +package com.cyl.manager.oms.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import com.cyl.oms.domain.OrderItem; +import com.cyl.manager.oms.domain.OrderItem; /** * 订单中所包含的商品Mapper接口 diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/mapper/OrderMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderMapper.java similarity index 55% rename from ruoyi-mall/src/main/java/com/cyl/oms/mapper/OrderMapper.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderMapper.java index 6bdeaf1..55c0286 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/mapper/OrderMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderMapper.java @@ -1,9 +1,10 @@ -package com.cyl.oms.mapper; +package com.cyl.manager.oms.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import com.cyl.oms.domain.Order; +import com.cyl.manager.oms.domain.Order; +import com.cyl.manager.oms.pojo.request.ManagerOrderQueryRequest; +import com.cyl.manager.oms.pojo.vo.ManagerOrderVO; /** * 订单表Mapper接口 @@ -18,4 +19,6 @@ public interface OrderMapper extends BaseMapper { * @return 订单表集合 */ List selectByEntity(Order order); + + List selectManagerOrderPage(ManagerOrderQueryRequest request); } diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/mapper/OrderOperateHistoryMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderOperateHistoryMapper.java similarity index 80% rename from ruoyi-mall/src/main/java/com/cyl/oms/mapper/OrderOperateHistoryMapper.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderOperateHistoryMapper.java index 3934ac2..e17ece1 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/mapper/OrderOperateHistoryMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderOperateHistoryMapper.java @@ -1,9 +1,8 @@ -package com.cyl.oms.mapper; +package com.cyl.manager.oms.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import com.cyl.oms.domain.OrderOperateHistory; +import com.cyl.manager.oms.domain.OrderOperateHistory; /** * 订单操作历史记录Mapper接口 diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/dto/SaveOrderItemDTO.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/dto/SaveOrderItemDTO.java new file mode 100644 index 0000000..0d99ae8 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/dto/SaveOrderItemDTO.java @@ -0,0 +1,4 @@ +package com.cyl.manager.oms.pojo.dto; + +public class SaveOrderItemDTO { +} diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/query/AftersaleItemQuery.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/query/AftersaleItemQuery.java similarity index 94% rename from ruoyi-mall/src/main/java/com/cyl/oms/pojo/query/AftersaleItemQuery.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/query/AftersaleItemQuery.java index a927705..a1359b9 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/query/AftersaleItemQuery.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/query/AftersaleItemQuery.java @@ -1,4 +1,4 @@ -package com.cyl.oms.pojo.query; +package com.cyl.manager.oms.pojo.query; import java.math.BigDecimal; import lombok.Data; diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/query/AftersaleQuery.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/query/AftersaleQuery.java similarity index 97% rename from ruoyi-mall/src/main/java/com/cyl/oms/pojo/query/AftersaleQuery.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/query/AftersaleQuery.java index 1558c17..f9c4183 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/query/AftersaleQuery.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/query/AftersaleQuery.java @@ -1,4 +1,4 @@ -package com.cyl.oms.pojo.query; +package com.cyl.manager.oms.pojo.query; import java.math.BigDecimal; import java.time.LocalDateTime; diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/query/OrderDeliveryHistoryQuery.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/query/OrderDeliveryHistoryQuery.java similarity index 92% rename from ruoyi-mall/src/main/java/com/cyl/oms/pojo/query/OrderDeliveryHistoryQuery.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/query/OrderDeliveryHistoryQuery.java index 2317bf1..94ca109 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/query/OrderDeliveryHistoryQuery.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/query/OrderDeliveryHistoryQuery.java @@ -1,4 +1,4 @@ -package com.cyl.oms.pojo.query; +package com.cyl.manager.oms.pojo.query; import lombok.Data; import io.swagger.annotations.ApiModel; diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/query/OrderItemQuery.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/query/OrderItemQuery.java similarity index 97% rename from ruoyi-mall/src/main/java/com/cyl/oms/pojo/query/OrderItemQuery.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/query/OrderItemQuery.java index e41ebf7..52c5dbe 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/query/OrderItemQuery.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/query/OrderItemQuery.java @@ -1,4 +1,4 @@ -package com.cyl.oms.pojo.query; +package com.cyl.manager.oms.pojo.query; import java.math.BigDecimal; import lombok.Data; diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/query/OrderOperateHistoryQuery.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/query/OrderOperateHistoryQuery.java similarity index 94% rename from ruoyi-mall/src/main/java/com/cyl/oms/pojo/query/OrderOperateHistoryQuery.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/query/OrderOperateHistoryQuery.java index adfeadb..962c342 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/query/OrderOperateHistoryQuery.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/query/OrderOperateHistoryQuery.java @@ -1,4 +1,4 @@ -package com.cyl.oms.pojo.query; +package com.cyl.manager.oms.pojo.query; import lombok.Data; import io.swagger.annotations.ApiModel; diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/query/OrderQuery.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/query/OrderQuery.java similarity index 93% rename from ruoyi-mall/src/main/java/com/cyl/oms/pojo/query/OrderQuery.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/query/OrderQuery.java index 0a51f80..09d9cbb 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/query/OrderQuery.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/query/OrderQuery.java @@ -1,4 +1,4 @@ -package com.cyl.oms.pojo.query; +package com.cyl.manager.oms.pojo.query; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -98,4 +98,9 @@ public class OrderQuery { @ApiModelProperty("确认收货时间 精确匹配") private LocalDateTime receiveTime; + @ApiModelProperty("创建订单开始时间") + private LocalDateTime startTime; + + @ApiModelProperty("创建订单结束时间") + private LocalDateTime endTime; } diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/request/ManagerOrderQueryRequest.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/request/ManagerOrderQueryRequest.java new file mode 100644 index 0000000..1c732d5 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/request/ManagerOrderQueryRequest.java @@ -0,0 +1,50 @@ +package com.cyl.manager.oms.pojo.request; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@ApiModel("后台订单查询请求体") +public class ManagerOrderQueryRequest { + @ApiModelProperty(name = "orderId", value = "订单id", required = true, dataType = "String") + private Long orderId; + + @ApiModelProperty(name = "productId", value = "商品id", required = true, dataType = "Long") + private Long productId; + + @ApiModelProperty(name = "productName", value = "商品名称", required = true, dataType = "String") + private String productName; + + @ApiModelProperty(name = "userPhone", value = "用户名称(手机号)", required = true, dataType = "String") + private String userPhone; + + @ApiModelProperty(name = "payType", value = "支付方式 0->未支付;1->支付宝;2->微信", required = true, dataType = "Integer") + private Integer payType; + + @ApiModelProperty(name = "status", value = "订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单", required = true, dataType = "String") + private Integer status; + + @ApiModelProperty("省份/直辖市id 精确匹配") + private Long receiverProvinceId; + + @ApiModelProperty("城市id 精确匹配") + private Long receiverCityId; + + @ApiModelProperty("区id 精确匹配") + private Long receiverDistrictId; + + @ApiModelProperty(name = "startTime", value = "开始时间", required = true, dataType = "Date") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ApiModelProperty(name = "endTime", value = "结束时间", required = true, dataType = "Date") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date endTime; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/vo/AftersaleItemVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/AftersaleItemVO.java similarity index 89% rename from ruoyi-mall/src/main/java/com/cyl/oms/pojo/vo/AftersaleItemVO.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/AftersaleItemVO.java index 4cd5c3c..75db0ab 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/vo/AftersaleItemVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/AftersaleItemVO.java @@ -1,8 +1,7 @@ -package com.cyl.oms.pojo.vo; +package com.cyl.manager.oms.pojo.vo; import java.math.BigDecimal; import com.ruoyi.common.annotation.Excel; -import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseAudit; import lombok.Data; /** diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/vo/AftersaleVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/AftersaleVO.java similarity index 97% rename from ruoyi-mall/src/main/java/com/cyl/oms/pojo/vo/AftersaleVO.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/AftersaleVO.java index 561a4d6..7b0d1d7 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/vo/AftersaleVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/AftersaleVO.java @@ -1,4 +1,4 @@ -package com.cyl.oms.pojo.vo; +package com.cyl.manager.oms.pojo.vo; import java.math.BigDecimal; import java.time.LocalDateTime; diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerOrderVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerOrderVO.java new file mode 100644 index 0000000..4ab3561 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/ManagerOrderVO.java @@ -0,0 +1,81 @@ +package com.cyl.manager.oms.pojo.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@ApiModel(value = "管理后台订单VO") +public class ManagerOrderVO { + @ApiModelProperty(name = "id",value = "订单id",required = true,dataType = "String") + private String id; + + @ApiModelProperty(name = "productId",value = "商品id",required = true,dataType = "Long") + private Long productId; + + @ApiModelProperty(name = "productName",value = "商品名称",required = true,dataType = "String") + private String productName; + + @ApiModelProperty(name = "userPhone",value = "用户账号",required = true,dataType = "String") + private String userPhone; + + @ApiModelProperty(name = "nickName",value = "用户昵称",required = true,dataType = "String") + private String nickName; + + @ApiModelProperty(name = "avatar",value = "用户头像",required = true,dataType = "String") + private String avatar; + + @ApiModelProperty(name = "status",value = "订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单",required = true,dataType = "Integer") + private Integer status; + + @ApiModelProperty("退款状态,枚举值:1:无售后或售后关闭,2:售后处理中,3:退款中,4: 退款成功") + private Integer aftersaleStatus; + + @ApiModelProperty(name = "pic",value = "商品图片",required = true,dataType = "String") + private String pic; + + @ApiModelProperty(name = "userName",value = "用户名称",required = true,dataType = "String") + private String userName; + + @ApiModelProperty(name = "buyNum",value = "购买数量",required = true,dataType = "Integer") + private Integer buyNum; + + @ApiModelProperty(name = "totalAmount",value = "订单总金额",required = true,dataType = "BigDecimal") + private BigDecimal totalAmount; + + @ApiModelProperty(name = "payAmount",value = "应付金额",required = true,dataType = "BigDecimal") + private BigDecimal payAmount; + + @ApiModelProperty(name = "createTime",value = "下单时间",required = true,dataType = "Date") + private Date createTime; + + @ApiModelProperty(name = "payTime",value = "支付时间",required = true,dataType = "Date") + private Date payTime; + + @ApiModelProperty(name = "payType",value = "支付方式 支付方式:0->未支付;1->支付宝;2->微信",required = true,dataType = "Integer") + private Integer payType; + + @ApiModelProperty(name = "receiveTime",value = "确认收货时间",required = true,dataType = "Date") + private Date receiveTime; + + @ApiModelProperty(name = "note",value = "备注",required = true,dataType = "String") + private String note; + + @ApiModelProperty(name = "spData",value = "商品sku属性",required = true,dataType = "String") + private String spData; + + private String receiverName; + + private String receiverPhone; + + private String receiverProvince; + + private String receiverCity; + + private String receiverDistrict; + + private String receiverDetailAddress; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/vo/OrderDeliveryHistoryVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/OrderDeliveryHistoryVO.java similarity index 87% rename from ruoyi-mall/src/main/java/com/cyl/oms/pojo/vo/OrderDeliveryHistoryVO.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/OrderDeliveryHistoryVO.java index a80edb3..532d94c 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/vo/OrderDeliveryHistoryVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/OrderDeliveryHistoryVO.java @@ -1,7 +1,6 @@ -package com.cyl.oms.pojo.vo; +package com.cyl.manager.oms.pojo.vo; import com.ruoyi.common.annotation.Excel; -import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseAudit; import lombok.Data; /** diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/vo/OrderItemVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/OrderItemVO.java similarity index 95% rename from ruoyi-mall/src/main/java/com/cyl/oms/pojo/vo/OrderItemVO.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/OrderItemVO.java index e9e527f..543dd9c 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/vo/OrderItemVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/OrderItemVO.java @@ -1,8 +1,7 @@ -package com.cyl.oms.pojo.vo; +package com.cyl.manager.oms.pojo.vo; import java.math.BigDecimal; import com.ruoyi.common.annotation.Excel; -import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseAudit; import lombok.Data; /** diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/vo/OrderOperateHistoryVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/OrderOperateHistoryVO.java similarity index 91% rename from ruoyi-mall/src/main/java/com/cyl/oms/pojo/vo/OrderOperateHistoryVO.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/OrderOperateHistoryVO.java index f5d7693..1eb5d9b 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/vo/OrderOperateHistoryVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/OrderOperateHistoryVO.java @@ -1,7 +1,6 @@ -package com.cyl.oms.pojo.vo; +package com.cyl.manager.oms.pojo.vo; import com.ruoyi.common.annotation.Excel; -import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseAudit; import lombok.Data; /** diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/vo/OrderVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/OrderVO.java similarity index 95% rename from ruoyi-mall/src/main/java/com/cyl/oms/pojo/vo/OrderVO.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/OrderVO.java index 6bf29cc..ac9fff7 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/pojo/vo/OrderVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/pojo/vo/OrderVO.java @@ -1,12 +1,10 @@ -package com.cyl.oms.pojo.vo; +package com.cyl.manager.oms.pojo.vo; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; -import com.cyl.oms.domain.OrderItem; -import com.cyl.pay.domain.PayOrder; -import com.cyl.pay.pojo.vo.PayOrderVO; +import com.cyl.manager.oms.domain.OrderItem; import com.ruoyi.common.annotation.Excel; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseAudit; @@ -108,5 +106,4 @@ public class OrderVO extends BaseAudit { @Excel(name = "确认收货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private LocalDateTime receiveTime; private List items; - private PayOrderVO payOrder; } diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/service/AftersaleItemService.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/AftersaleItemService.java similarity index 91% rename from ruoyi-mall/src/main/java/com/cyl/oms/service/AftersaleItemService.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/service/AftersaleItemService.java index 35f1f05..641396f 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/service/AftersaleItemService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/AftersaleItemService.java @@ -1,18 +1,16 @@ -package com.cyl.oms.service; +package com.cyl.manager.oms.service; import java.math.BigDecimal; -import java.util.Arrays; import java.util.List; import java.time.LocalDateTime; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; -import com.cyl.oms.mapper.AftersaleItemMapper; -import com.cyl.oms.domain.AftersaleItem; -import com.cyl.oms.pojo.query.AftersaleItemQuery; +import com.cyl.manager.oms.mapper.AftersaleItemMapper; +import com.cyl.manager.oms.domain.AftersaleItem; +import com.cyl.manager.oms.pojo.query.AftersaleItemQuery; /** * 订单售后Service业务层处理 diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/service/AftersaleService.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/AftersaleService.java similarity index 94% rename from ruoyi-mall/src/main/java/com/cyl/oms/service/AftersaleService.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/service/AftersaleService.java index d65d892..ebd92fd 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/service/AftersaleService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/AftersaleService.java @@ -1,19 +1,18 @@ -package com.cyl.oms.service; +package com.cyl.manager.oms.service; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.Arrays; import java.util.List; -import java.time.LocalDateTime; + import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; -import com.cyl.oms.mapper.AftersaleMapper; -import com.cyl.oms.domain.Aftersale; -import com.cyl.oms.pojo.query.AftersaleQuery; +import com.cyl.manager.oms.mapper.AftersaleMapper; +import com.cyl.manager.oms.domain.Aftersale; +import com.cyl.manager.oms.pojo.query.AftersaleQuery; /** * 订单售后Service业务层处理 diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/service/OrderDeliveryHistoryService.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OrderDeliveryHistoryService.java similarity index 92% rename from ruoyi-mall/src/main/java/com/cyl/oms/service/OrderDeliveryHistoryService.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OrderDeliveryHistoryService.java index 741f56a..28ee548 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/service/OrderDeliveryHistoryService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OrderDeliveryHistoryService.java @@ -1,6 +1,5 @@ -package com.cyl.oms.service; +package com.cyl.manager.oms.service; -import java.util.Arrays; import java.util.List; import java.time.LocalDateTime; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -9,9 +8,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; -import com.cyl.oms.mapper.OrderDeliveryHistoryMapper; -import com.cyl.oms.domain.OrderDeliveryHistory; -import com.cyl.oms.pojo.query.OrderDeliveryHistoryQuery; +import com.cyl.manager.oms.mapper.OrderDeliveryHistoryMapper; +import com.cyl.manager.oms.domain.OrderDeliveryHistory; +import com.cyl.manager.oms.pojo.query.OrderDeliveryHistoryQuery; /** * 订单发货记录Service业务层处理 diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/service/OrderItemService.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OrderItemService.java similarity index 68% rename from ruoyi-mall/src/main/java/com/cyl/oms/service/OrderItemService.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OrderItemService.java index e23d18c..2e3e5f5 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/service/OrderItemService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OrderItemService.java @@ -1,18 +1,23 @@ -package com.cyl.oms.service; +package com.cyl.manager.oms.service; import java.math.BigDecimal; -import java.util.Arrays; +import java.util.ArrayList; import java.util.List; import java.time.LocalDateTime; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cyl.h5.pojo.dto.OrderProductListDTO; +import com.cyl.manager.ums.domain.Member; import com.github.pagehelper.PageHelper; +import com.ruoyi.common.utils.IDGenerator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; -import com.cyl.oms.mapper.OrderItemMapper; -import com.cyl.oms.domain.OrderItem; -import com.cyl.oms.pojo.query.OrderItemQuery; +import com.cyl.manager.oms.mapper.OrderItemMapper; +import com.cyl.manager.oms.domain.OrderItem; +import com.cyl.manager.oms.pojo.query.OrderItemQuery; +import org.springframework.transaction.annotation.Transactional; /** * 订单中所包含的商品Service业务层处理 @@ -21,7 +26,7 @@ import com.cyl.oms.pojo.query.OrderItemQuery; * @author zcc */ @Service -public class OrderItemService { +public class OrderItemService extends ServiceImpl { @Autowired private OrderItemMapper orderItemMapper; @@ -136,4 +141,32 @@ public class OrderItemService { public int deleteById(Long id) { return orderItemMapper.deleteById(id); } + + @Transactional + public void saveOrderItem(Member member, LocalDateTime optTime, + Long orderId, List list){ + List addOrderItemList = new ArrayList<>(); + list.forEach(item -> { + OrderItem orderItem = new OrderItem(); + orderItem.setId(IDGenerator.generateId()); + orderItem.setOrderId(orderId); + orderItem.setProductId(item.getProduct().getId()); + orderItem.setOutProductId(item.getProduct().getOutProductId()); + orderItem.setSkuId(item.getSku().getId()); + orderItem.setOutSkuId(item.getSku().getOutSkuId()); + orderItem.setPic(item.getSku().getPic()); + orderItem.setProductName(item.getProduct().getName()); + orderItem.setSalePrice(item.getSku().getPrice()); + orderItem.setQuantity(item.getQuantity()); + orderItem.setProductCategoryId(item.getProduct().getCategoryId()); + orderItem.setSpData(item.getSku().getSpData()); + orderItem.setCreateBy(member.getId()); + orderItem.setCreateTime(optTime); + addOrderItemList.add(orderItem); + }); + boolean flag = saveBatch(addOrderItemList); + if (!flag){ + throw new RuntimeException("新增订单item失败"); + } + } } diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/service/OrderOperateHistoryService.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OrderOperateHistoryService.java similarity index 92% rename from ruoyi-mall/src/main/java/com/cyl/oms/service/OrderOperateHistoryService.java rename to ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OrderOperateHistoryService.java index 53af983..575cb14 100644 --- a/ruoyi-mall/src/main/java/com/cyl/oms/service/OrderOperateHistoryService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OrderOperateHistoryService.java @@ -1,6 +1,5 @@ -package com.cyl.oms.service; +package com.cyl.manager.oms.service; -import java.util.Arrays; import java.util.List; import java.time.LocalDateTime; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -9,9 +8,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; -import com.cyl.oms.mapper.OrderOperateHistoryMapper; -import com.cyl.oms.domain.OrderOperateHistory; -import com.cyl.oms.pojo.query.OrderOperateHistoryQuery; +import com.cyl.manager.oms.mapper.OrderOperateHistoryMapper; +import com.cyl.manager.oms.domain.OrderOperateHistory; +import com.cyl.manager.oms.pojo.query.OrderOperateHistoryQuery; /** * 订单操作历史记录Service业务层处理 diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OrderService.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OrderService.java new file mode 100644 index 0000000..d6d44e6 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OrderService.java @@ -0,0 +1,348 @@ +package com.cyl.manager.oms.service; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.cyl.h5.pojo.dto.OrderCreateDTO; +import com.cyl.h5.pojo.dto.OrderProductListDTO; +import com.cyl.h5.pojo.vo.OrderCalcVO; +import com.cyl.h5.pojo.vo.SkuViewDTO; +import com.cyl.h5.pojo.vo.form.OrderSubmitForm; +import com.cyl.h5.pojo.vo.query.OrderH5Query; +import com.cyl.manager.oms.convert.OrderConvert; +import com.cyl.manager.oms.domain.OrderItem; +import com.cyl.manager.oms.domain.OrderOperateHistory; +import com.cyl.manager.oms.mapper.OrderItemMapper; +import com.cyl.manager.oms.mapper.OrderOperateHistoryMapper; +import com.cyl.manager.oms.pojo.request.ManagerOrderQueryRequest; +import com.cyl.manager.oms.pojo.vo.ManagerOrderVO; +import com.cyl.manager.oms.pojo.vo.OrderVO; +import com.cyl.manager.pms.convert.SkuConvert; +import com.cyl.manager.pms.domain.Product; +import com.cyl.manager.pms.domain.Sku; +import com.cyl.manager.pms.mapper.ProductMapper; +import com.cyl.manager.pms.mapper.SkuMapper; +import com.cyl.manager.ums.domain.Member; +import com.cyl.manager.ums.domain.MemberAddress; +import com.cyl.manager.ums.domain.MemberCart; +import com.cyl.manager.ums.mapper.MemberAddressMapper; +import com.cyl.manager.ums.mapper.MemberCartMapper; +import com.github.pagehelper.PageHelper; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.utils.AesCryptoUtils; +import com.ruoyi.common.utils.IDGenerator; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.framework.config.LocalDataUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import com.cyl.manager.oms.mapper.OrderMapper; +import com.cyl.manager.oms.domain.Order; +import com.cyl.manager.oms.pojo.query.OrderQuery; +import org.springframework.transaction.annotation.Transactional; + +/** + * 订单表Service业务层处理 + * + * + * @author zcc + */ +@Service +public class OrderService { + @Autowired + private OrderMapper orderMapper; + @Autowired + private OrderConvert orderConvert; + @Autowired + private OrderItemMapper orderItemMapper; + @Autowired + private MemberAddressMapper memberAddressMapper; + @Autowired + private SkuMapper skuMapper; + @Autowired + private ProductMapper productMapper; + @Autowired + private SkuConvert skuConvert; + @Autowired + private OrderItemService orderItemService; + @Autowired + private OrderOperateHistoryMapper orderOperateHistoryMapper; + @Autowired + private MemberCartMapper memberCartMapper; + @Value("${aes.key}") + private String aesKey; + + /** + * 查询订单表 + * + * @param id 订单表主键 + * @return 订单表 + */ + public Order selectById(Long id) { + return orderMapper.selectById(id); + } + + /** + * 查询订单表列表 + * + * @param query 查询条件 + * @param page 分页条件 + * @return 订单表 + */ + public List selectList(ManagerOrderQueryRequest query, Pageable page) { + if (page != null) { + PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize()); + } + if (!StringUtils.isEmpty(query.getUserPhone())){ + query.setUserPhone(AesCryptoUtils.encrypt(aesKey, query.getUserPhone())); + } + return orderMapper.selectManagerOrderPage(query); + } + + /** + * 新增订单表 + * + * @param order 订单表 + * @return 结果 + */ + public int insert(Order order) { + order.setCreateTime(LocalDateTime.now()); + return orderMapper.insert(order); + } + + /** + * 修改订单表 + * + * @param order 订单表 + * @return 结果 + */ + public int update(Order order) { + return orderMapper.updateById(order); + } + + /** + * 删除订单表信息 + * + * @param id 订单表主键 + * @return 结果 + */ + public int deleteById(Long id) { + return orderMapper.deleteById(id); + } + + @Transactional + public Long submit(OrderSubmitForm form) { + Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); + //只支持快递 + Long addressId = form.getAddressId(); + if (addressId == null){ + throw new RuntimeException("收获地址不能为空"); + } + MemberAddress memberAddress = memberAddressMapper.selectById(addressId); + if (memberAddress == null){ + throw new RuntimeException("收货地址不能为空"); + } + //sku不能为空 + List skuList = form.getSkuList(); + if (CollectionUtil.isEmpty(skuList)){ + throw new RuntimeException("商品SKU信息不能为空"); + } + //将sku信息转换为 key:skuId ,value:购买数量 + Map skuQuantityMap = skuList.stream().collect(Collectors.toMap(OrderProductListDTO::getSkuId, OrderProductListDTO::getQuantity)); + //查询所有sku信息 + Map querySkuMap = skuMapper + .selectBatchIds(skuList.stream().map(OrderProductListDTO::getSkuId).collect(Collectors.toList())) + .stream().collect(Collectors.toMap(Sku::getId, it -> it)); + //计算商品总额、订单总额(订单总金额=商品总金额,因为暂时没有运费等概念) + BigDecimal productTotalAmount = BigDecimal.ZERO; + BigDecimal orderTotalAmount = BigDecimal.ZERO; + for (OrderProductListDTO dto : skuList){ + if (!querySkuMap.containsKey(dto.getSkuId())){ + throw new RuntimeException("商品SKU不存在"); + } + Sku sku = querySkuMap.get(dto.getSkuId()); + Product product = productMapper.selectById(sku.getProductId()); + if (product == null){ + throw new RuntimeException("商品不存在"); + } + if (Constants.PublishStatus.UNDERCARRIAGE.equals(product.getPublishStatus())){ + throw new RuntimeException("商品" + product.getName() + "已下架"); + } + productTotalAmount = productTotalAmount.add(sku.getPrice().multiply(BigDecimal.valueOf(skuQuantityMap.get(sku.getId())))); + orderTotalAmount = orderTotalAmount.add(sku.getPrice().multiply(BigDecimal.valueOf(skuQuantityMap.get(sku.getId())))); + dto.setSku(sku); + dto.setProduct(product); + } + LocalDateTime optTime = LocalDateTime.now(); + + //生成一个统一的订单号 + Long orderId = IDGenerator.generateId(); + //创建订单 + Order order = new Order(); + order.setId(orderId); + order.setMemberId(member.getId()); + order.setMemberUsername(member.getNickname()); + order.setPayType(Constants.PayType.WECHAT); + order.setTotalAmount(orderTotalAmount); + order.setPurchasePrice(BigDecimal.ZERO); + order.setFreightAmount(BigDecimal.ZERO); + order.setPayAmount(orderTotalAmount); + //暂时为接入支付,直接设置为待发货 + order.setStatus(Constants.OrderStatus.SEND); + order.setAftersaleStatus(1); + order.setReceiverName(memberAddress.getName()); + order.setReceiverPhone(memberAddress.getPhoneHidden()); + order.setReceiverPostCode(memberAddress.getPostCode()); + order.setReceiverProvince(memberAddress.getProvince()); + order.setReceiverCity(memberAddress.getCity()); + order.setReceiverDistrict(memberAddress.getDistrict()); + order.setReceiverProvinceId(memberAddress.getProvinceId()); + order.setReceiverCityId(memberAddress.getCityId()); + order.setReceiverDistrictId(memberAddress.getDistrictId()); + order.setReceiverDetailAddress(memberAddress.getDetailAddress()); + order.setNote(form.getNote()); + order.setConfirmStatus(0); + order.setDeleteStatus(0); + order.setPaymentTime(optTime); + order.setCreateTime(optTime); + order.setCreateBy(member.getId()); + int rows = orderMapper.insert(order); + if (rows < 1){ + throw new RuntimeException("订单新增失败"); + } + // 保存orderItem + orderItemService.saveOrderItem(member, optTime, orderId, skuList); + // 保存订单操作记录 + OrderOperateHistory orderOperateHistory = new OrderOperateHistory(); + orderOperateHistory.setOrderId(orderId); + orderOperateHistory.setOperateMan(member.getId() + ""); + orderOperateHistory.setOrderStatus(Constants.OrderStatus.SEND); + orderOperateHistory.setCreateTime(optTime); + orderOperateHistory.setCreateBy(member.getId()); + rows = orderOperateHistoryMapper.insert(orderOperateHistory); + if (rows < 1){ + throw new RuntimeException("保存订单操作记录失败"); + } + //若来源为购物车,删除购物车 + if (Constants.OrderFrom.CART.equals(form.getFrom())){ + List skuIdList = skuList.stream().map(OrderProductListDTO::getSkuId).collect(Collectors.toList()); + LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate(); + wrapper.eq(MemberCart::getMemberId, member.getId()); + wrapper.in(MemberCart::getSkuId, skuIdList); + rows = memberCartMapper.delete(wrapper); + if (rows < 1){ + throw new RuntimeException("删除购物车失败"); + } + } + //当前返回成功消息,接入支付后可返回payId + return orderId; + } + + public Page queryOrderPage(OrderH5Query query, Pageable pageReq) { + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("member_id", SecurityUtils.getUserId()); + IPage page = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(); + page.setCurrent(pageReq.getPageNumber()) + .setSize(pageReq.getPageSize()); + if (CollUtil.isEmpty(pageReq.getSort())) { + pageReq.getSort().forEach(it -> { + qw.orderBy(true, it.getDirection().isAscending(), it.getProperty()); + }); + } + Integer tab = query.getTab(); + if (tab != null) { + qw.eq("delete_status", 0); + if (tab == 1) { + qw.eq("status", 0); + } else if (tab == 2) { + qw.eq("status", 1); + qw.eq("aftersale_status", 1); + } else if (tab == 3) { + qw.eq("status", 2); + qw.eq("confirm_status", 0); + } else if (tab == 4) { + qw.eq("status", 2); + qw.eq("confirm_status", 1); + } + } + orderMapper.selectPage(page, qw); + List orders = page.getRecords(); + long total = page.getPages(); + if (CollUtil.isEmpty(orders)) { + return new PageImpl<>(Collections.emptyList(), pageReq, total); + } + LambdaQueryWrapper qw1 = new LambdaQueryWrapper<>(); + qw1.in(OrderItem::getOrderId, orders.stream().map(Order::getId).collect(Collectors.toList())); + Map> oid2items = orderItemMapper.selectList(qw1) + .stream().collect(Collectors.groupingBy(OrderItem::getOrderId)); + List res = orderConvert.dos2vos(orders); + res.forEach(it -> { + it.setItems(oid2items.get(it.getId())); + }); + return new PageImpl<>(res, pageReq, total); + } + + public OrderCalcVO addOrderCheck(OrderCreateDTO orderCreateDTO) { + OrderCalcVO res = new OrderCalcVO(); + List skuList = new ArrayList<>(); + List list = orderCreateDTO.getSkuList(); + if (CollectionUtil.isEmpty(list)){ + throw new RuntimeException("商品SKU信息不能为空"); + } + //将购买的sku信息转化为key:skuId value:数量 + Map quantityMap = list.stream(). + collect(Collectors.toMap(OrderProductListDTO::getSkuId, OrderProductListDTO::getQuantity, (v1, v2) -> v2)); + //查询所有sku信息 + Set collect = list.stream().map(OrderProductListDTO::getSkuId).collect(Collectors.toSet()); + Map querySkuMap = skuMapper.selectBatchIds(collect).stream().collect(Collectors.toMap(Sku::getId, it -> it)); + //计算商品总金额、订单总金额 + BigDecimal productTotalAmount = BigDecimal.ZERO; + BigDecimal orderTotalAmount = BigDecimal.ZERO; + for (OrderProductListDTO dto : list){ + if (!querySkuMap.containsKey(dto.getSkuId())){ + throw new RuntimeException("商品SKU不存在"); + } + Sku sku = querySkuMap.get(dto.getSkuId()); + //查product + Product product = productMapper.selectById(sku.getProductId()); + if (product == null){ + throw new RuntimeException("商品不存在"); + } + if (Constants.PublishStatus.UNDERCARRIAGE.equals(product.getPublishStatus())){ + throw new RuntimeException("商品" + product.getName() + "已下架"); + } + BigDecimal addAmount = sku.getPrice().multiply(BigDecimal.valueOf(dto.getQuantity())); + //由于目前没有运费等数据,暂时订单总金额=商品总金额了 + productTotalAmount = productTotalAmount.add(addAmount); + orderTotalAmount = orderTotalAmount.add(addAmount); + //封装sku信息 + SkuViewDTO skuViewDTO = new SkuViewDTO(); + skuViewDTO.setPic(product.getPic()); + skuViewDTO.setPrice(sku.getPrice()); + skuViewDTO.setProductId(product.getId()); + skuViewDTO.setProductName(product.getName()); + skuViewDTO.setQuantity(quantityMap.get(sku.getId())); + skuViewDTO.setSkuId(sku.getId()); + skuViewDTO.setSpData(sku.getSpData()); + skuList.add(skuViewDTO); + } + res.setSkuList(skuList); + res.setOrderTotalAmount(orderTotalAmount); + res.setProductTotalAmount(productTotalAmount); + return res; + } + +} diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/controller/BrandController.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/controller/BrandController.java similarity index 93% rename from ruoyi-mall/src/main/java/com/cyl/pms/controller/BrandController.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/controller/BrandController.java index c36e09b..6a4b07a 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/controller/BrandController.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/controller/BrandController.java @@ -1,4 +1,4 @@ -package com.cyl.pms.controller; +package com.cyl.manager.pms.controller; import java.util.List; @@ -21,11 +21,11 @@ import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.enums.BusinessType; -import com.cyl.pms.convert.BrandConvert; -import com.cyl.pms.domain.Brand; -import com.cyl.pms.pojo.query.BrandQuery; -import com.cyl.pms.service.BrandService; -import com.cyl.pms.pojo.vo.BrandVO; +import com.cyl.manager.pms.convert.BrandConvert; +import com.cyl.manager.pms.domain.Brand; +import com.cyl.manager.pms.pojo.query.BrandQuery; +import com.cyl.manager.pms.service.BrandService; +import com.cyl.manager.pms.pojo.vo.BrandVO; import com.ruoyi.common.utils.poi.ExcelUtil; /** * 品牌管理Controller diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/controller/ProductCategoryController.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/controller/ProductCategoryController.java similarity index 86% rename from ruoyi-mall/src/main/java/com/cyl/pms/controller/ProductCategoryController.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/controller/ProductCategoryController.java index 47272bf..1459644 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/controller/ProductCategoryController.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/controller/ProductCategoryController.java @@ -1,12 +1,9 @@ -package com.cyl.pms.controller; +package com.cyl.manager.pms.controller; import java.util.List; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.springframework.data.domain.PageImpl; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Page; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; @@ -21,12 +18,12 @@ import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.enums.BusinessType; -import com.cyl.pms.convert.ProductCategoryConvert; -import com.cyl.pms.domain.ProductCategory; -import com.cyl.pms.pojo.query.ProductCategoryQuery; -import com.cyl.pms.service.ProductCategoryService; -import com.cyl.pms.pojo.vo.ProductCategoryVO; -import com.ruoyi.common.utils.poi.ExcelUtil; +import com.cyl.manager.pms.convert.ProductCategoryConvert; +import com.cyl.manager.pms.domain.ProductCategory; +import com.cyl.manager.pms.pojo.query.ProductCategoryQuery; +import com.cyl.manager.pms.service.ProductCategoryService; +import com.cyl.manager.pms.pojo.vo.ProductCategoryVO; + /** * 商品分类Controller * diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/controller/ProductController.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/controller/ProductController.java similarity index 92% rename from ruoyi-mall/src/main/java/com/cyl/pms/controller/ProductController.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/controller/ProductController.java index d68d890..2d4230d 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/controller/ProductController.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/controller/ProductController.java @@ -1,4 +1,4 @@ -package com.cyl.pms.controller; +package com.cyl.manager.pms.controller; import java.util.List; @@ -21,11 +21,11 @@ import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.enums.BusinessType; -import com.cyl.pms.convert.ProductConvert; -import com.cyl.pms.domain.Product; -import com.cyl.pms.pojo.query.ProductQuery; -import com.cyl.pms.service.ProductService; -import com.cyl.pms.pojo.vo.ProductVO; +import com.cyl.manager.pms.convert.ProductConvert; +import com.cyl.manager.pms.domain.Product; +import com.cyl.manager.pms.pojo.query.ProductQuery; +import com.cyl.manager.pms.service.ProductService; +import com.cyl.manager.pms.pojo.vo.ProductVO; import com.ruoyi.common.utils.poi.ExcelUtil; /** * 商品信息Controller diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/controller/SkuController.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/controller/SkuController.java similarity index 92% rename from ruoyi-mall/src/main/java/com/cyl/pms/controller/SkuController.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/controller/SkuController.java index 53b62d4..463223f 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/controller/SkuController.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/controller/SkuController.java @@ -1,4 +1,4 @@ -package com.cyl.pms.controller; +package com.cyl.manager.pms.controller; import java.util.List; @@ -21,11 +21,11 @@ import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.enums.BusinessType; -import com.cyl.pms.convert.SkuConvert; -import com.cyl.pms.domain.Sku; -import com.cyl.pms.pojo.query.SkuQuery; -import com.cyl.pms.service.SkuService; -import com.cyl.pms.pojo.vo.SkuVO; +import com.cyl.manager.pms.convert.SkuConvert; +import com.cyl.manager.pms.domain.Sku; +import com.cyl.manager.pms.pojo.query.SkuQuery; +import com.cyl.manager.pms.service.SkuService; +import com.cyl.manager.pms.pojo.vo.SkuVO; import com.ruoyi.common.utils.poi.ExcelUtil; /** * sku信息Controller diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/convert/BrandConvert.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/convert/BrandConvert.java similarity index 66% rename from ruoyi-mall/src/main/java/com/cyl/pms/convert/BrandConvert.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/convert/BrandConvert.java index 0fe7772..7d31c4c 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/convert/BrandConvert.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/convert/BrandConvert.java @@ -1,8 +1,8 @@ -package com.cyl.pms.convert; +package com.cyl.manager.pms.convert; import org.mapstruct.Mapper; -import com.cyl.pms.domain.Brand; -import com.cyl.pms.pojo.vo.BrandVO; +import com.cyl.manager.pms.domain.Brand; +import com.cyl.manager.pms.pojo.vo.BrandVO; import java.util.List; /** * 品牌管理 DO <=> DTO <=> VO / BO / Query diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/convert/ProductCategoryConvert.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/convert/ProductCategoryConvert.java similarity index 71% rename from ruoyi-mall/src/main/java/com/cyl/pms/convert/ProductCategoryConvert.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/convert/ProductCategoryConvert.java index d92457f..0e04f73 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/convert/ProductCategoryConvert.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/convert/ProductCategoryConvert.java @@ -1,9 +1,9 @@ -package com.cyl.pms.convert; +package com.cyl.manager.pms.convert; import com.cyl.h5.pojo.dto.CategoryDTO; import org.mapstruct.Mapper; -import com.cyl.pms.domain.ProductCategory; -import com.cyl.pms.pojo.vo.ProductCategoryVO; +import com.cyl.manager.pms.domain.ProductCategory; +import com.cyl.manager.pms.pojo.vo.ProductCategoryVO; import java.util.List; /** * 商品分类 DO <=> DTO <=> VO / BO / Query diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/convert/ProductConvert.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/convert/ProductConvert.java similarity index 77% rename from ruoyi-mall/src/main/java/com/cyl/pms/convert/ProductConvert.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/convert/ProductConvert.java index 4754f63..0650167 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/convert/ProductConvert.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/convert/ProductConvert.java @@ -1,9 +1,9 @@ -package com.cyl.pms.convert; +package com.cyl.manager.pms.convert; import com.cyl.h5.pojo.dto.ProductDTO; import org.mapstruct.Mapper; -import com.cyl.pms.domain.Product; -import com.cyl.pms.pojo.vo.ProductVO; +import com.cyl.manager.pms.domain.Product; +import com.cyl.manager.pms.pojo.vo.ProductVO; import java.util.List; /** * 商品信息 DO <=> DTO <=> VO / BO / Query diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/convert/SkuConvert.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/convert/SkuConvert.java similarity index 66% rename from ruoyi-mall/src/main/java/com/cyl/pms/convert/SkuConvert.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/convert/SkuConvert.java index 4b1460f..b2c5104 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/convert/SkuConvert.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/convert/SkuConvert.java @@ -1,8 +1,8 @@ -package com.cyl.pms.convert; +package com.cyl.manager.pms.convert; import org.mapstruct.Mapper; -import com.cyl.pms.domain.Sku; -import com.cyl.pms.pojo.vo.SkuVO; +import com.cyl.manager.pms.domain.Sku; +import com.cyl.manager.pms.pojo.vo.SkuVO; import java.util.List; /** * sku信息 DO <=> DTO <=> VO / BO / Query diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/domain/Brand.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/domain/Brand.java similarity index 96% rename from ruoyi-mall/src/main/java/com/cyl/pms/domain/Brand.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/domain/Brand.java index d359920..ce7a0dd 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/domain/Brand.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/domain/Brand.java @@ -1,4 +1,4 @@ -package com.cyl.pms.domain; +package com.cyl.manager.pms.domain; import com.ruoyi.common.annotation.Excel; import io.swagger.annotations.ApiModel; diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/domain/Product.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/domain/Product.java similarity index 98% rename from ruoyi-mall/src/main/java/com/cyl/pms/domain/Product.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/domain/Product.java index 82d04b0..d3b8059 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/domain/Product.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/domain/Product.java @@ -1,4 +1,4 @@ -package com.cyl.pms.domain; +package com.cyl.manager.pms.domain; import java.math.BigDecimal; import com.ruoyi.common.annotation.Excel; diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/domain/ProductCategory.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/domain/ProductCategory.java similarity index 97% rename from ruoyi-mall/src/main/java/com/cyl/pms/domain/ProductCategory.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/domain/ProductCategory.java index 067c2da..2efa4f1 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/domain/ProductCategory.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/domain/ProductCategory.java @@ -1,4 +1,4 @@ -package com.cyl.pms.domain; +package com.cyl.manager.pms.domain; import com.ruoyi.common.annotation.Excel; import io.swagger.annotations.ApiModel; diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/domain/Sku.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/domain/Sku.java similarity index 96% rename from ruoyi-mall/src/main/java/com/cyl/pms/domain/Sku.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/domain/Sku.java index 81fbc47..0047865 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/domain/Sku.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/domain/Sku.java @@ -1,4 +1,4 @@ -package com.cyl.pms.domain; +package com.cyl.manager.pms.domain; import java.math.BigDecimal; import com.ruoyi.common.annotation.Excel; diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/mapper/BrandMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/mapper/BrandMapper.java similarity index 77% rename from ruoyi-mall/src/main/java/com/cyl/pms/mapper/BrandMapper.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/mapper/BrandMapper.java index 75abf69..23fa853 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/mapper/BrandMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/mapper/BrandMapper.java @@ -1,9 +1,8 @@ -package com.cyl.pms.mapper; +package com.cyl.manager.pms.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import com.cyl.pms.domain.Brand; +import com.cyl.manager.pms.domain.Brand; /** * 品牌管理Mapper接口 diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/mapper/ProductCategoryMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/mapper/ProductCategoryMapper.java similarity index 78% rename from ruoyi-mall/src/main/java/com/cyl/pms/mapper/ProductCategoryMapper.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/mapper/ProductCategoryMapper.java index 2d95b2f..8a6db5e 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/mapper/ProductCategoryMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/mapper/ProductCategoryMapper.java @@ -1,9 +1,8 @@ -package com.cyl.pms.mapper; +package com.cyl.manager.pms.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import com.cyl.pms.domain.ProductCategory; +import com.cyl.manager.pms.domain.ProductCategory; /** * 商品分类Mapper接口 diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/mapper/ProductMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/mapper/ProductMapper.java similarity index 77% rename from ruoyi-mall/src/main/java/com/cyl/pms/mapper/ProductMapper.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/mapper/ProductMapper.java index 751acec..44d9a64 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/mapper/ProductMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/mapper/ProductMapper.java @@ -1,9 +1,8 @@ -package com.cyl.pms.mapper; +package com.cyl.manager.pms.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import com.cyl.pms.domain.Product; +import com.cyl.manager.pms.domain.Product; /** * 商品信息Mapper接口 diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/mapper/SkuMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/mapper/SkuMapper.java similarity index 76% rename from ruoyi-mall/src/main/java/com/cyl/pms/mapper/SkuMapper.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/mapper/SkuMapper.java index 691d172..66a5702 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/mapper/SkuMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/mapper/SkuMapper.java @@ -1,9 +1,8 @@ -package com.cyl.pms.mapper; +package com.cyl.manager.pms.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import com.cyl.pms.domain.Sku; +import com.cyl.manager.pms.domain.Sku; /** * sku信息Mapper接口 diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/dto/MemberCartDTO.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/dto/MemberCartDTO.java similarity index 62% rename from ruoyi-mall/src/main/java/com/cyl/pms/pojo/dto/MemberCartDTO.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/dto/MemberCartDTO.java index eaf6676..cdc41e6 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/dto/MemberCartDTO.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/dto/MemberCartDTO.java @@ -1,6 +1,6 @@ -package com.cyl.pms.pojo.dto; +package com.cyl.manager.pms.pojo.dto; -import com.cyl.ums.domain.MemberCart; +import com.cyl.manager.ums.domain.MemberCart; import lombok.Data; import java.math.BigDecimal; diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/query/BrandQuery.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/query/BrandQuery.java similarity index 93% rename from ruoyi-mall/src/main/java/com/cyl/pms/pojo/query/BrandQuery.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/query/BrandQuery.java index 8b4316d..052559e 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/query/BrandQuery.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/query/BrandQuery.java @@ -1,4 +1,4 @@ -package com.cyl.pms.pojo.query; +package com.cyl.manager.pms.pojo.query; import lombok.Data; import io.swagger.annotations.ApiModel; diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/query/ProductCategoryQuery.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/query/ProductCategoryQuery.java similarity index 95% rename from ruoyi-mall/src/main/java/com/cyl/pms/pojo/query/ProductCategoryQuery.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/query/ProductCategoryQuery.java index 0aadaf8..df96e2a 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/query/ProductCategoryQuery.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/query/ProductCategoryQuery.java @@ -1,4 +1,4 @@ -package com.cyl.pms.pojo.query; +package com.cyl.manager.pms.pojo.query; import lombok.Data; import io.swagger.annotations.ApiModel; diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/query/ProductQuery.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/query/ProductQuery.java similarity index 86% rename from ruoyi-mall/src/main/java/com/cyl/pms/pojo/query/ProductQuery.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/query/ProductQuery.java index cd567e3..f3421cd 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/query/ProductQuery.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/query/ProductQuery.java @@ -1,8 +1,7 @@ -package com.cyl.pms.pojo.query; +package com.cyl.manager.pms.pojo.query; import java.math.BigDecimal; -import com.ruoyi.common.annotation.Excel; import lombok.Data; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -63,4 +62,13 @@ public class ProductQuery { @ApiModelProperty("商品分类名称 精确匹配") private String productCategoryNameLike; + @ApiModelProperty("排序字段") + private String orderField = "sort"; + + @ApiModelProperty("排序规则") + private String orderSort = "desc"; + + @ApiModelProperty("搜索关键字") + private String search; + } diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/query/SkuQuery.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/query/SkuQuery.java similarity index 94% rename from ruoyi-mall/src/main/java/com/cyl/pms/pojo/query/SkuQuery.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/query/SkuQuery.java index 676e5aa..daa66a7 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/query/SkuQuery.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/query/SkuQuery.java @@ -1,4 +1,4 @@ -package com.cyl.pms.pojo.query; +package com.cyl.manager.pms.pojo.query; import java.math.BigDecimal; import lombok.Data; diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/vo/BrandVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/vo/BrandVO.java similarity index 87% rename from ruoyi-mall/src/main/java/com/cyl/pms/pojo/vo/BrandVO.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/vo/BrandVO.java index f3ac386..8c725be 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/vo/BrandVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/vo/BrandVO.java @@ -1,7 +1,6 @@ -package com.cyl.pms.pojo.vo; +package com.cyl.manager.pms.pojo.vo; import com.ruoyi.common.annotation.Excel; -import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseAudit; import lombok.Data; /** diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/vo/ProductCategoryVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/vo/ProductCategoryVO.java similarity index 79% rename from ruoyi-mall/src/main/java/com/cyl/pms/pojo/vo/ProductCategoryVO.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/vo/ProductCategoryVO.java index b9ab95c..7cabdfa 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/vo/ProductCategoryVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/vo/ProductCategoryVO.java @@ -1,8 +1,5 @@ -package com.cyl.pms.pojo.vo; +package com.cyl.manager.pms.pojo.vo; -import com.cyl.pms.domain.ProductCategory; -import com.ruoyi.common.annotation.Excel; -import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseAudit; import lombok.Data; diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/vo/ProductVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/vo/ProductVO.java similarity index 94% rename from ruoyi-mall/src/main/java/com/cyl/pms/pojo/vo/ProductVO.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/vo/ProductVO.java index 4cc3501..8a75f30 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/vo/ProductVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/vo/ProductVO.java @@ -1,11 +1,10 @@ -package com.cyl.pms.pojo.vo; +package com.cyl.manager.pms.pojo.vo; import java.math.BigDecimal; import java.util.List; -import com.cyl.pms.domain.Sku; +import com.cyl.manager.pms.domain.Sku; import com.ruoyi.common.annotation.Excel; -import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseAudit; import lombok.Data; /** diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/vo/SkuVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/vo/SkuVO.java similarity index 89% rename from ruoyi-mall/src/main/java/com/cyl/pms/pojo/vo/SkuVO.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/vo/SkuVO.java index 895bf38..30ff119 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/pojo/vo/SkuVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/pojo/vo/SkuVO.java @@ -1,8 +1,7 @@ -package com.cyl.pms.pojo.vo; +package com.cyl.manager.pms.pojo.vo; import java.math.BigDecimal; import com.ruoyi.common.annotation.Excel; -import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseAudit; import lombok.Data; /** diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/service/BrandService.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/service/BrandService.java similarity index 93% rename from ruoyi-mall/src/main/java/com/cyl/pms/service/BrandService.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/service/BrandService.java index 0c5adcb..d60217d 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/service/BrandService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/service/BrandService.java @@ -1,6 +1,5 @@ -package com.cyl.pms.service; +package com.cyl.manager.pms.service; -import java.util.Arrays; import java.util.List; import java.time.LocalDateTime; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -9,9 +8,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; -import com.cyl.pms.mapper.BrandMapper; -import com.cyl.pms.domain.Brand; -import com.cyl.pms.pojo.query.BrandQuery; +import com.cyl.manager.pms.mapper.BrandMapper; +import com.cyl.manager.pms.domain.Brand; +import com.cyl.manager.pms.pojo.query.BrandQuery; /** * 品牌管理Service业务层处理 diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/service/ProductCategoryService.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/service/ProductCategoryService.java similarity index 94% rename from ruoyi-mall/src/main/java/com/cyl/pms/service/ProductCategoryService.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/service/ProductCategoryService.java index b4d16ff..6a5d6d9 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/service/ProductCategoryService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/service/ProductCategoryService.java @@ -1,4 +1,4 @@ -package com.cyl.pms.service; +package com.cyl.manager.pms.service; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -6,14 +6,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.cyl.h5.pojo.dto.CategoryDTO; -import com.cyl.pms.convert.ProductCategoryConvert; -import com.cyl.pms.convert.ProductConvert; -import com.cyl.pms.domain.Product; -import com.cyl.pms.domain.ProductCategory; -import com.cyl.pms.mapper.ProductCategoryMapper; -import com.cyl.pms.mapper.ProductMapper; -import com.cyl.pms.pojo.query.ProductCategoryQuery; -import com.cyl.pms.pojo.vo.ProductCategoryVO; +import com.cyl.manager.pms.convert.ProductCategoryConvert; +import com.cyl.manager.pms.convert.ProductConvert; +import com.cyl.manager.pms.domain.Product; +import com.cyl.manager.pms.domain.ProductCategory; +import com.cyl.manager.pms.mapper.ProductCategoryMapper; +import com.cyl.manager.pms.mapper.ProductMapper; +import com.cyl.manager.pms.pojo.query.ProductCategoryQuery; +import com.cyl.manager.pms.pojo.vo.ProductCategoryVO; import com.github.pagehelper.PageHelper; import com.ruoyi.common.exception.base.BaseException; import org.apache.commons.lang3.StringUtils; @@ -215,7 +215,7 @@ public class ProductCategoryService { QueryWrapper qw = new QueryWrapper<>(); qw.select("id", "parent_id", "name", "level", "sort", "icon"); qw.eq("show_status", 1); - qw.le("level", 2); +// qw.le("level", 2); return productCategoryMapper.selectList(qw); } diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/service/ProductService.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/service/ProductService.java similarity index 61% rename from ruoyi-mall/src/main/java/com/cyl/pms/service/ProductService.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/service/ProductService.java index 697e455..b47ba19 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/service/ProductService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/service/ProductService.java @@ -1,29 +1,24 @@ -package com.cyl.pms.service; +package com.cyl.manager.pms.service; -import java.math.BigDecimal; import java.util.*; import java.time.LocalDateTime; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments; import com.cyl.h5.pojo.vo.ProductDetail; -import com.cyl.pms.convert.ProductConvert; -import com.cyl.pms.domain.Brand; -import com.cyl.pms.domain.Sku; -import com.cyl.pms.mapper.BrandMapper; -import com.cyl.pms.mapper.SkuMapper; -import com.cyl.pms.pojo.vo.ProductVO; +import com.cyl.manager.pms.convert.ProductConvert; +import com.cyl.manager.pms.domain.Sku; +import com.cyl.manager.pms.mapper.BrandMapper; +import com.cyl.manager.pms.mapper.SkuMapper; +import com.cyl.manager.pms.pojo.vo.ProductVO; import com.github.pagehelper.PageHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.apache.commons.lang3.StringUtils; -import org.springframework.security.core.parameters.P; import org.springframework.stereotype.Service; -import com.cyl.pms.mapper.ProductMapper; -import com.cyl.pms.domain.Product; -import com.cyl.pms.pojo.query.ProductQuery; +import com.cyl.manager.pms.mapper.ProductMapper; +import com.cyl.manager.pms.domain.Product; +import com.cyl.manager.pms.pojo.query.ProductQuery; import org.springframework.transaction.annotation.Transactional; /** @@ -72,67 +67,27 @@ public class ProductService { PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize()); } QueryWrapper qw = new QueryWrapper<>(); - qw.orderByDesc("publish_status"); - qw.orderByAsc("sort"); - Long brandId = query.getBrandId(); - if (brandId != null) { - qw.eq("brand_id", brandId); + if (StringUtils.isNoneEmpty(query.getOrderField())){ + if (StringUtils.isNotEmpty(query.getOrderSort()) && "desc".equalsIgnoreCase(query.getOrderSort())) { + qw.orderByDesc(query.getOrderField()); + } else { + qw.orderByAsc(query.getOrderField()); + } + }else { + qw.orderByDesc("publish_status"); + qw.orderByAsc("sort"); } Long categoryId = query.getCategoryId(); if (categoryId != null) { qw.eq("category_id", categoryId); } - String outProductId = query.getOutProductId(); - if (!StringUtils.isEmpty(outProductId)) { - qw.eq("out_product_id", outProductId); - } - String nameLike = query.getNameLike(); - if (!StringUtils.isEmpty(nameLike)) { - qw.like("name", nameLike); - } - String pic = query.getPic(); - if (!StringUtils.isEmpty(pic)) { - qw.eq("pic", pic); - } - String albumPics = query.getAlbumPics(); - if (!StringUtils.isEmpty(albumPics)) { - qw.eq("album_pics", albumPics); - } Integer publishStatus = query.getPublishStatus(); if (publishStatus != null) { qw.eq("publish_status", publishStatus); } - Integer sort = query.getSort(); - if (sort != null) { - qw.eq("sort", sort); - } - BigDecimal price = query.getPrice(); - if (price != null) { - qw.eq("price", price); - } - String unit = query.getUnit(); - if (!StringUtils.isEmpty(unit)) { - qw.eq("unit", unit); - } - BigDecimal weight = query.getWeight(); - if (weight != null) { - qw.eq("weight", weight); - } - String detailHtml = query.getDetailHtml(); - if (!StringUtils.isEmpty(detailHtml)) { - qw.eq("detail_html", detailHtml); - } - String detailMobileHtml = query.getDetailMobileHtml(); - if (!StringUtils.isEmpty(detailMobileHtml)) { - qw.eq("detail_mobile_html", detailMobileHtml); - } - String brandNameLike = query.getBrandNameLike(); - if (!StringUtils.isEmpty(brandNameLike)) { - qw.like("brand_name", brandNameLike); - } - String productCategoryNameLike = query.getProductCategoryNameLike(); - if (!StringUtils.isEmpty(productCategoryNameLike)) { - qw.like("product_category_name", productCategoryNameLike); + String search = query.getSearch(); + if (StringUtils.isNoneEmpty(search)){ + qw.like("name", "%".concat(query.getSearch().trim()).concat("%")); } return productMapper.selectList(qw); } diff --git a/ruoyi-mall/src/main/java/com/cyl/pms/service/SkuService.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/service/SkuService.java similarity index 93% rename from ruoyi-mall/src/main/java/com/cyl/pms/service/SkuService.java rename to ruoyi-mall/src/main/java/com/cyl/manager/pms/service/SkuService.java index 3bf8b9e..8a38e9f 100644 --- a/ruoyi-mall/src/main/java/com/cyl/pms/service/SkuService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/service/SkuService.java @@ -1,7 +1,6 @@ -package com.cyl.pms.service; +package com.cyl.manager.pms.service; import java.math.BigDecimal; -import java.util.Arrays; import java.util.List; import java.time.LocalDateTime; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -10,9 +9,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; -import com.cyl.pms.mapper.SkuMapper; -import com.cyl.pms.domain.Sku; -import com.cyl.pms.pojo.query.SkuQuery; +import com.cyl.manager.pms.mapper.SkuMapper; +import com.cyl.manager.pms.domain.Sku; +import com.cyl.manager.pms.pojo.query.SkuQuery; /** * sku信息Service业务层处理 diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/controller/MemberAddressController.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/controller/MemberAddressController.java similarity index 78% rename from ruoyi-mall/src/main/java/com/cyl/ums/controller/MemberAddressController.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/controller/MemberAddressController.java index 25eac34..fc40518 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/controller/MemberAddressController.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/controller/MemberAddressController.java @@ -1,4 +1,4 @@ -package com.cyl.ums.controller; +package com.cyl.manager.ums.controller; import java.util.List; @@ -21,12 +21,12 @@ import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.enums.BusinessType; -import com.cyl.ums.convert.MemberAddressConvert; -import com.cyl.ums.domain.MemberAddress; -import com.cyl.ums.pojo.query.MemberAddressQuery; -import com.cyl.ums.service.MemberAddressService; -import com.cyl.ums.pojo.vo.MemberAddressVO; -import com.ruoyi.common.utils.poi.ExcelUtil; +import com.cyl.manager.ums.convert.MemberAddressConvert; +import com.cyl.manager.ums.domain.MemberAddress; +import com.cyl.manager.ums.pojo.query.MemberAddressQuery; +import com.cyl.manager.ums.service.MemberAddressService; +import com.cyl.manager.ums.pojo.vo.MemberAddressVO; + /** * 会员收货地址Controller * @@ -45,9 +45,10 @@ public class MemberAddressController extends BaseController { @ApiOperation("查询会员收货地址列表") @PreAuthorize("@ss.hasPermi('ums:memberAddress:list')") @PostMapping("/list") - public ResponseEntity> list(@RequestBody MemberAddressQuery query, Pageable page) { + public ResponseEntity> list(@RequestBody MemberAddressQuery query, Pageable page) { List list = service.selectList(query, page); - return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal())); + List resList = convert.dos2vos(list); + return ResponseEntity.ok(new PageImpl<>(resList, page, ((com.github.pagehelper.Page)list).getTotal())); } @ApiOperation("导出会员收货地址列表") @@ -55,9 +56,10 @@ public class MemberAddressController extends BaseController { @Log(title = "会员收货地址", businessType = BusinessType.EXPORT) @GetMapping("/export") public ResponseEntity export(MemberAddressQuery query) { - List list = service.selectList(query, null); - ExcelUtil util = new ExcelUtil<>(MemberAddressVO.class); - return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "会员收货地址数据")); +// List list = service.selectList(query, null); +// ExcelUtil util = new ExcelUtil<>(MemberAddressVO.class); +// return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "会员收货地址数据")); + return null; } @ApiOperation("获取会员收货地址详细信息") diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/controller/MemberCartController.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/controller/MemberCartController.java similarity index 79% rename from ruoyi-mall/src/main/java/com/cyl/ums/controller/MemberCartController.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/controller/MemberCartController.java index 7d0ee6e..23ed06c 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/controller/MemberCartController.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/controller/MemberCartController.java @@ -1,10 +1,7 @@ -package com.cyl.ums.controller; - -import java.util.List; +package com.cyl.manager.ums.controller; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Page; import org.springframework.http.ResponseEntity; @@ -21,12 +18,11 @@ import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.enums.BusinessType; -import com.cyl.ums.convert.MemberCartConvert; -import com.cyl.ums.domain.MemberCart; -import com.cyl.ums.pojo.query.MemberCartQuery; -import com.cyl.ums.service.MemberCartService; -import com.cyl.ums.pojo.vo.MemberCartVO; -import com.ruoyi.common.utils.poi.ExcelUtil; +import com.cyl.manager.ums.convert.MemberCartConvert; +import com.cyl.manager.ums.domain.MemberCart; +import com.cyl.manager.ums.pojo.query.MemberCartQuery; +import com.cyl.manager.ums.service.MemberCartService; + /** * 购物车Controller * @@ -46,8 +42,9 @@ public class MemberCartController extends BaseController { @PreAuthorize("@ss.hasPermi('ums:memberCart:list')") @PostMapping("/list") public ResponseEntity> list(@RequestBody MemberCartQuery query, Pageable page) { - List list = service.selectList(query, page); - return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal())); +// List list = service.selectList(query, page); +// return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal())); + return null; } @ApiOperation("导出购物车列表") @@ -55,9 +52,10 @@ public class MemberCartController extends BaseController { @Log(title = "购物车", businessType = BusinessType.EXPORT) @GetMapping("/export") public ResponseEntity export(MemberCartQuery query) { - List list = service.selectList(query, null); - ExcelUtil util = new ExcelUtil<>(MemberCartVO.class); - return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "购物车数据")); +// List list = service.selectList(query, null); +// ExcelUtil util = new ExcelUtil<>(MemberCartVO.class); +// return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "购物车数据")); + return null; } @ApiOperation("获取购物车详细信息") diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/controller/MemberController.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/controller/MemberController.java similarity index 84% rename from ruoyi-mall/src/main/java/com/cyl/ums/controller/MemberController.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/controller/MemberController.java index f1bcdab..fc86a75 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/controller/MemberController.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/controller/MemberController.java @@ -1,7 +1,8 @@ -package com.cyl.ums.controller; +package com.cyl.manager.ums.controller; import java.util.List; +import com.cyl.manager.ums.pojo.dto.ChangeMemberStatusDTO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.data.domain.PageImpl; @@ -21,11 +22,11 @@ import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.enums.BusinessType; -import com.cyl.ums.convert.MemberConvert; -import com.cyl.ums.domain.Member; -import com.cyl.ums.pojo.query.MemberQuery; -import com.cyl.ums.service.MemberService; -import com.cyl.ums.pojo.vo.MemberVO; +import com.cyl.manager.ums.convert.MemberConvert; +import com.cyl.manager.ums.domain.Member; +import com.cyl.manager.ums.pojo.query.MemberQuery; +import com.cyl.manager.ums.service.MemberService; +import com.cyl.manager.ums.pojo.vo.MemberVO; import com.ruoyi.common.utils.poi.ExcelUtil; /** * 会员信息Controller @@ -90,4 +91,11 @@ public class MemberController extends BaseController { public ResponseEntity remove(@PathVariable Long id) { return ResponseEntity.ok(service.deleteById(id)); } + + @ApiOperation(("修改会员账户状态")) + @Log(title = "会员信息", businessType = BusinessType.UPDATE) + @PostMapping("/status/change") + public ResponseEntity changeStatus(@RequestBody ChangeMemberStatusDTO dto){ + return ResponseEntity.ok(service.changeStatus(dto)); + } } diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/controller/MemberWechatController.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/controller/MemberWechatController.java similarity index 92% rename from ruoyi-mall/src/main/java/com/cyl/ums/controller/MemberWechatController.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/controller/MemberWechatController.java index 90a2c79..5df331a 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/controller/MemberWechatController.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/controller/MemberWechatController.java @@ -1,4 +1,4 @@ -package com.cyl.ums.controller; +package com.cyl.manager.ums.controller; import java.util.List; @@ -21,11 +21,11 @@ import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.enums.BusinessType; -import com.cyl.ums.convert.MemberWechatConvert; -import com.cyl.ums.domain.MemberWechat; -import com.cyl.ums.pojo.query.MemberWechatQuery; -import com.cyl.ums.service.MemberWechatService; -import com.cyl.ums.pojo.vo.MemberWechatVO; +import com.cyl.manager.ums.convert.MemberWechatConvert; +import com.cyl.manager.ums.domain.MemberWechat; +import com.cyl.manager.ums.pojo.query.MemberWechatQuery; +import com.cyl.manager.ums.service.MemberWechatService; +import com.cyl.manager.ums.pojo.vo.MemberWechatVO; import com.ruoyi.common.utils.poi.ExcelUtil; /** * 用户微信信息Controller diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/convert/MemberAddressConvert.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/convert/MemberAddressConvert.java similarity index 66% rename from ruoyi-mall/src/main/java/com/cyl/ums/convert/MemberAddressConvert.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/convert/MemberAddressConvert.java index aa147ee..344215a 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/convert/MemberAddressConvert.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/convert/MemberAddressConvert.java @@ -1,8 +1,8 @@ -package com.cyl.ums.convert; +package com.cyl.manager.ums.convert; import org.mapstruct.Mapper; -import com.cyl.ums.domain.MemberAddress; -import com.cyl.ums.pojo.vo.MemberAddressVO; +import com.cyl.manager.ums.domain.MemberAddress; +import com.cyl.manager.ums.pojo.vo.MemberAddressVO; import java.util.List; /** * 会员收货地址 DO <=> DTO <=> VO / BO / Query diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/convert/MemberCartConvert.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/convert/MemberCartConvert.java similarity index 72% rename from ruoyi-mall/src/main/java/com/cyl/ums/convert/MemberCartConvert.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/convert/MemberCartConvert.java index f03b092..cbfc0ae 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/convert/MemberCartConvert.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/convert/MemberCartConvert.java @@ -1,12 +1,12 @@ -package com.cyl.ums.convert; +package com.cyl.manager.ums.convert; -import com.cyl.pms.domain.Product; -import com.cyl.pms.domain.Sku; -import com.cyl.pms.pojo.dto.MemberCartDTO; +import com.cyl.manager.pms.domain.Product; +import com.cyl.manager.pms.domain.Sku; +import com.cyl.manager.pms.pojo.dto.MemberCartDTO; import org.mapstruct.BeanMapping; import org.mapstruct.Mapper; -import com.cyl.ums.domain.MemberCart; -import com.cyl.ums.pojo.vo.MemberCartVO; +import com.cyl.manager.ums.domain.MemberCart; +import com.cyl.manager.ums.pojo.vo.MemberCartVO; import org.mapstruct.Mapping; import org.mapstruct.MappingTarget; diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/convert/MemberConvert.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/convert/MemberConvert.java similarity index 66% rename from ruoyi-mall/src/main/java/com/cyl/ums/convert/MemberConvert.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/convert/MemberConvert.java index 89ceaee..9a89d4e 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/convert/MemberConvert.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/convert/MemberConvert.java @@ -1,8 +1,8 @@ -package com.cyl.ums.convert; +package com.cyl.manager.ums.convert; import org.mapstruct.Mapper; -import com.cyl.ums.domain.Member; -import com.cyl.ums.pojo.vo.MemberVO; +import com.cyl.manager.ums.domain.Member; +import com.cyl.manager.ums.pojo.vo.MemberVO; import java.util.List; /** * 会员信息 DO <=> DTO <=> VO / BO / Query diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/convert/MemberWechatConvert.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/convert/MemberWechatConvert.java similarity index 70% rename from ruoyi-mall/src/main/java/com/cyl/ums/convert/MemberWechatConvert.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/convert/MemberWechatConvert.java index a33ccfd..a1db14b 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/convert/MemberWechatConvert.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/convert/MemberWechatConvert.java @@ -1,10 +1,9 @@ -package com.cyl.ums.convert; +package com.cyl.manager.ums.convert; import com.cyl.external.resp.AccessTokenResp; -import com.cyl.external.resp.UserInfoResp; import org.mapstruct.Mapper; -import com.cyl.ums.domain.MemberWechat; -import com.cyl.ums.pojo.vo.MemberWechatVO; +import com.cyl.manager.ums.domain.MemberWechat; +import com.cyl.manager.ums.pojo.vo.MemberWechatVO; import java.util.List; /** * 用户微信信息 DO <=> DTO <=> VO / BO / Query diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/Address.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/Address.java new file mode 100644 index 0000000..3e955b3 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/Address.java @@ -0,0 +1,50 @@ +package com.cyl.manager.ums.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.common.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 地址对象 + * + */ +@ApiModel(description="地址对象") +@Data +@TableName("address") +public class Address { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("ID") + private Integer id; + + @ApiModelProperty("地区邮编") + @Excel(name = "地区邮编") + private Long code; + + @ApiModelProperty("父地区邮编") + @Excel(name = "父地区邮编") + private Long parentCode; + + @ApiModelProperty("地区名") + @Excel(name = "地区名") + private String name; + + @ApiModelProperty("地区层级") + @Excel(name = "地区层级") + private Integer level; + + @ApiModelProperty("CREATED_AT") + @Excel(name = "CREATED_AT") + private String createdAt; + + @ApiModelProperty("UPDATED_AT") + @Excel(name = "UPDATED_AT") + private String updatedAt; + + @ApiModelProperty("DELETED_AT") + @Excel(name = "DELETED_AT") + private String deletedAt; + +} diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/domain/Member.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/Member.java similarity index 92% rename from ruoyi-mall/src/main/java/com/cyl/ums/domain/Member.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/Member.java index 2d75d50..ca16e17 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/domain/Member.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/Member.java @@ -1,4 +1,4 @@ -package com.cyl.ums.domain; +package com.cyl.manager.ums.domain; import java.math.BigDecimal; import java.time.LocalDate; @@ -31,9 +31,11 @@ public class Member extends BaseAudit { @Excel(name = "密码") private String password; - @ApiModelProperty("手机号码") - @Excel(name = "手机号码") - private String phone; + @ApiModelProperty("加密手机号") + private String phoneEncrypted; + + @ApiModelProperty("隐藏前三位后四位的手机号") + private String phoneHidden; @ApiModelProperty("用户备注") @Excel(name = "用户备注") diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/domain/MemberAddress.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/MemberAddress.java similarity index 71% rename from ruoyi-mall/src/main/java/com/cyl/ums/domain/MemberAddress.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/MemberAddress.java index b561ddf..c44bdc4 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/domain/MemberAddress.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/MemberAddress.java @@ -1,4 +1,4 @@ -package com.cyl.ums.domain; +package com.cyl.manager.ums.domain; import com.ruoyi.common.annotation.Excel; import io.swagger.annotations.ApiModel; @@ -28,9 +28,13 @@ public class MemberAddress extends BaseAudit { @Excel(name = "收货人名称") private String name; - @ApiModelProperty("PHONE") - @Excel(name = "PHONE") - private String phone; + @ApiModelProperty("隐藏前三位后四位的手机号") + @Excel(name = "隐藏前三位后四位的手机号") + private String phoneHidden; + + @ApiModelProperty("加密的手机号") + @Excel(name = "加密的手机号") + private String phoneEncrypted; @ApiModelProperty("是否为默认") @Excel(name = "是否为默认") @@ -52,6 +56,18 @@ public class MemberAddress extends BaseAudit { @Excel(name = "区") private String district; + @ApiModelProperty("省份/直辖市id") + @Excel(name = "省份/直辖市id") + private Long provinceId; + + @ApiModelProperty("城市id") + @Excel(name = "城市id") + private Long cityId; + + @ApiModelProperty("区id") + @Excel(name = "区id") + private Long districtId; + @ApiModelProperty("详细地址(街道)") @Excel(name = "详细地址(街道)") private String detailAddress; diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/domain/MemberCart.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/MemberCart.java similarity index 97% rename from ruoyi-mall/src/main/java/com/cyl/ums/domain/MemberCart.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/MemberCart.java index 3c2d73d..a8a53cd 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/domain/MemberCart.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/MemberCart.java @@ -1,4 +1,4 @@ -package com.cyl.ums.domain; +package com.cyl.manager.ums.domain; import com.ruoyi.common.annotation.Excel; import io.swagger.annotations.ApiModel; diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/domain/MemberWechat.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/MemberWechat.java similarity index 98% rename from ruoyi-mall/src/main/java/com/cyl/ums/domain/MemberWechat.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/MemberWechat.java index 106995f..7a0cea9 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/domain/MemberWechat.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/MemberWechat.java @@ -1,4 +1,4 @@ -package com.cyl.ums.domain; +package com.cyl.manager.ums.domain; import java.time.LocalDateTime; import com.ruoyi.common.annotation.Excel; diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/AddressMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/AddressMapper.java new file mode 100644 index 0000000..6c8de80 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/AddressMapper.java @@ -0,0 +1,22 @@ +package com.cyl.manager.ums.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.cyl.manager.ums.domain.Address; + +import java.util.List; + +/** + * 【请填写功能名称】Mapper接口 + * + * @author sjm + */ +public interface AddressMapper extends BaseMapper
{ + /** + * 查询【请填写功能名称】列表 + * + * @param address 【请填写功能名称】 + * @return 【请填写功能名称】集合 + */ + List
selectByEntity(Address address); + +} diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/mapper/MemberAddressMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberAddressMapper.java similarity index 78% rename from ruoyi-mall/src/main/java/com/cyl/ums/mapper/MemberAddressMapper.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberAddressMapper.java index a42f48c..ee7b859 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/mapper/MemberAddressMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberAddressMapper.java @@ -1,9 +1,8 @@ -package com.cyl.ums.mapper; +package com.cyl.manager.ums.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import com.cyl.ums.domain.MemberAddress; +import com.cyl.manager.ums.domain.MemberAddress; /** * 会员收货地址Mapper接口 @@ -20,4 +19,6 @@ public interface MemberAddressMapper extends BaseMapper { List selectByEntity(MemberAddress memberAddress); int updateByPrimaryKeySelective(MemberAddress address); + + void updateDefault(int IsDefault, Long id); } diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/mapper/MemberCartMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberCartMapper.java similarity index 77% rename from ruoyi-mall/src/main/java/com/cyl/ums/mapper/MemberCartMapper.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberCartMapper.java index 8a0ffa6..5dcec8d 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/mapper/MemberCartMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberCartMapper.java @@ -1,9 +1,8 @@ -package com.cyl.ums.mapper; +package com.cyl.manager.ums.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import com.cyl.ums.domain.MemberCart; +import com.cyl.manager.ums.domain.MemberCart; /** * 购物车Mapper接口 diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/mapper/MemberMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberMapper.java similarity index 77% rename from ruoyi-mall/src/main/java/com/cyl/ums/mapper/MemberMapper.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberMapper.java index c238f5c..97abb8b 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/mapper/MemberMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberMapper.java @@ -1,9 +1,8 @@ -package com.cyl.ums.mapper; +package com.cyl.manager.ums.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import com.cyl.ums.domain.Member; +import com.cyl.manager.ums.domain.Member; /** * 会员信息Mapper接口 diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/mapper/MemberWechatMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberWechatMapper.java similarity index 79% rename from ruoyi-mall/src/main/java/com/cyl/ums/mapper/MemberWechatMapper.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberWechatMapper.java index 6bd2873..4de45c6 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/mapper/MemberWechatMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberWechatMapper.java @@ -1,9 +1,8 @@ -package com.cyl.ums.mapper; +package com.cyl.manager.ums.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import com.cyl.ums.domain.MemberWechat; +import com.cyl.manager.ums.domain.MemberWechat; /** * 用户微信信息Mapper接口 diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/dto/AddressDTO.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/dto/AddressDTO.java new file mode 100644 index 0000000..97a62dc --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/dto/AddressDTO.java @@ -0,0 +1,19 @@ +package com.cyl.manager.ums.pojo.dto; + +import lombok.Data; + +import java.util.List; + +/** + * 【请填写功能名称】 DTO 对象 + * + * @author sjm + */ +@Data +public class AddressDTO { + private Long id; + private Long pid; + private String name; + private String level; + private List children; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/dto/ChangeMemberStatusDTO.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/dto/ChangeMemberStatusDTO.java new file mode 100644 index 0000000..2fdd1e1 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/dto/ChangeMemberStatusDTO.java @@ -0,0 +1,9 @@ +package com.cyl.manager.ums.pojo.dto; + +import lombok.Data; + +@Data +public class ChangeMemberStatusDTO { + private Long memberId; + private Integer status; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/dto/MemberAddressDTO.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/dto/MemberAddressDTO.java new file mode 100644 index 0000000..484dc81 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/dto/MemberAddressDTO.java @@ -0,0 +1,18 @@ +package com.cyl.manager.ums.pojo.dto; + +import lombok.Data; + +@Data +public class MemberAddressDTO { + private Long id; + private Long memberId; + private String name; + private String phone; + private Integer defaultStatus; + private String postCode; + private String province; + private String city; + private String district; + private String detailAddress; + private Integer isDefault; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/query/MemberAddressQuery.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/query/MemberAddressQuery.java similarity index 96% rename from ruoyi-mall/src/main/java/com/cyl/ums/pojo/query/MemberAddressQuery.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/query/MemberAddressQuery.java index f6dece8..50ea9f0 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/query/MemberAddressQuery.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/query/MemberAddressQuery.java @@ -1,4 +1,4 @@ -package com.cyl.ums.pojo.query; +package com.cyl.manager.ums.pojo.query; import lombok.Data; import io.swagger.annotations.ApiModel; diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/query/MemberCartQuery.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/query/MemberCartQuery.java similarity index 95% rename from ruoyi-mall/src/main/java/com/cyl/ums/pojo/query/MemberCartQuery.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/query/MemberCartQuery.java index 85bae6d..f1635a0 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/query/MemberCartQuery.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/query/MemberCartQuery.java @@ -1,4 +1,4 @@ -package com.cyl.ums.pojo.query; +package com.cyl.manager.ums.pojo.query; import lombok.Data; import io.swagger.annotations.ApiModel; diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/query/MemberQuery.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/query/MemberQuery.java similarity index 92% rename from ruoyi-mall/src/main/java/com/cyl/ums/pojo/query/MemberQuery.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/query/MemberQuery.java index 7bcce38..20943af 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/query/MemberQuery.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/query/MemberQuery.java @@ -1,4 +1,4 @@ -package com.cyl.ums.pojo.query; +package com.cyl.manager.ums.pojo.query; import java.math.BigDecimal; import java.time.LocalDate; @@ -16,7 +16,7 @@ import io.swagger.annotations.ApiModelProperty; @Data public class MemberQuery { @ApiModelProperty("昵称 精确匹配") - private String nicknameLike; + private String nickname; @ApiModelProperty("密码 精确匹配") private String password; @@ -60,4 +60,7 @@ public class MemberQuery { @ApiModelProperty("用户剩余积分 精确匹配") private BigDecimal integral; + private String beginTime; + + private String endTime; } diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/query/MemberWechatQuery.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/query/MemberWechatQuery.java similarity index 97% rename from ruoyi-mall/src/main/java/com/cyl/ums/pojo/query/MemberWechatQuery.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/query/MemberWechatQuery.java index 5f2a356..66d1c51 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/query/MemberWechatQuery.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/query/MemberWechatQuery.java @@ -1,4 +1,4 @@ -package com.cyl.ums.pojo.query; +package com.cyl.manager.ums.pojo.query; import java.time.LocalDateTime; import lombok.Data; diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/MemberAddressVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberAddressVO.java similarity index 89% rename from ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/MemberAddressVO.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberAddressVO.java index be11b6e..9fd10f7 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/MemberAddressVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberAddressVO.java @@ -1,7 +1,6 @@ -package com.cyl.ums.pojo.vo; +package com.cyl.manager.ums.pojo.vo; import com.ruoyi.common.annotation.Excel; -import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseAudit; import lombok.Data; /** @@ -22,6 +21,8 @@ public class MemberAddressVO extends BaseAudit { /** PHONE */ @Excel(name = "PHONE") private String phone; + @Excel(name = "隐藏前三位后四位的手机号") + private String phoneHidden; /** 是否为默认 */ @Excel(name = "是否为默认") private Integer defaultStatus; diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/MemberCartVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberCartVO.java similarity index 84% rename from ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/MemberCartVO.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberCartVO.java index 3fdcc04..fa72123 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/MemberCartVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberCartVO.java @@ -1,9 +1,11 @@ -package com.cyl.ums.pojo.vo; +package com.cyl.manager.ums.pojo.vo; import com.ruoyi.common.annotation.Excel; -import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseAudit; import lombok.Data; + +import java.math.BigDecimal; + /** * 购物车 数据视图对象 * @@ -37,4 +39,8 @@ public class MemberCartVO extends BaseAudit { /** 商品数量 */ @Excel(name = "商品数量") private Integer quantity; + /** sku价格 */ + private BigDecimal price; + /** sku是否存在 */ + private Integer skuIfExist; } diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/MemberVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberVO.java similarity index 93% rename from ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/MemberVO.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberVO.java index 0df9d81..14e132b 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/MemberVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberVO.java @@ -1,4 +1,4 @@ -package com.cyl.ums.pojo.vo; +package com.cyl.manager.ums.pojo.vo; import java.math.BigDecimal; import java.time.LocalDate; @@ -19,12 +19,10 @@ public class MemberVO extends BaseAudit { /** 昵称 */ @Excel(name = "昵称") private String nickname; - /** 密码 */ - @Excel(name = "密码") - private String password; - /** 手机号码 */ - @Excel(name = "手机号码") + /** 手机号 */ private String phone; + /** 隐藏前三位后四位的手机号 */ + private String phoneHidden; /** 用户备注 */ @Excel(name = "用户备注") private String mark; diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/MemberWechatVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberWechatVO.java similarity index 98% rename from ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/MemberWechatVO.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberWechatVO.java index 60b5a11..1309efd 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/MemberWechatVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberWechatVO.java @@ -1,4 +1,4 @@ -package com.cyl.ums.pojo.vo; +package com.cyl.manager.ums.pojo.vo; import java.time.LocalDateTime; import com.ruoyi.common.annotation.Excel; diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/form/AddMemberCartForm.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/form/AddMemberCartForm.java new file mode 100644 index 0000000..bc89550 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/form/AddMemberCartForm.java @@ -0,0 +1,23 @@ +package com.cyl.manager.ums.pojo.vo.form; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class AddMemberCartForm { + /** + * 规格id + */ + @NotNull(message = "规格必填!") + private Long skuId; + /** + * 数量 + */ + private Integer buyNum; + private Long productId; + private String pic; + private String productName; + private String spData; + private Integer quantity; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/form/UpdateMemberCartForm.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/form/UpdateMemberCartForm.java similarity index 91% rename from ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/form/UpdateMemberCartForm.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/form/UpdateMemberCartForm.java index 760ee38..52c3d2a 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/form/UpdateMemberCartForm.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/form/UpdateMemberCartForm.java @@ -1,4 +1,4 @@ -package com.cyl.ums.pojo.vo.form; +package com.cyl.manager.ums.pojo.vo.form; import lombok.Data; diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/service/MemberAddressService.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberAddressService.java similarity index 84% rename from ruoyi-mall/src/main/java/com/cyl/ums/service/MemberAddressService.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberAddressService.java index 1983dde..97b45be 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/service/MemberAddressService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberAddressService.java @@ -1,14 +1,17 @@ -package com.cyl.ums.service; +package com.cyl.manager.ums.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.cyl.ums.domain.MemberAddress; -import com.cyl.ums.mapper.MemberAddressMapper; -import com.cyl.ums.pojo.query.MemberAddressQuery; +import com.cyl.manager.ums.convert.MemberAddressConvert; +import com.cyl.manager.ums.domain.MemberAddress; +import com.cyl.manager.ums.mapper.MemberAddressMapper; +import com.cyl.manager.ums.pojo.query.MemberAddressQuery; import com.github.pagehelper.PageHelper; +import com.ruoyi.common.utils.AesCryptoUtils; import com.ruoyi.common.utils.SecurityUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @@ -24,6 +27,10 @@ import java.util.List; public class MemberAddressService { @Autowired private MemberAddressMapper memberAddressMapper; + @Autowired + private MemberAddressConvert memberAddressConvert; + @Value("${aes.key}") + private String aesKey; /** * 查询会员收货地址 @@ -47,21 +54,13 @@ public class MemberAddressService { PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize()); } QueryWrapper qw = new QueryWrapper<>(); - Long memberId = query.getMemberId(); - if (memberId != null) { - qw.eq("member_id", memberId); - } String nameLike = query.getNameLike(); if (!StringUtils.isEmpty(nameLike)) { qw.like("name", nameLike); } String phone = query.getPhone(); if (!StringUtils.isEmpty(phone)) { - qw.eq("phone", phone); - } - Integer defaultStatus = query.getDefaultStatus(); - if (defaultStatus != null) { - qw.eq("default_status", defaultStatus); + qw.eq("phone_encrypted", AesCryptoUtils.encrypt(aesKey, phone)); } String postCode = query.getPostCode(); if (!StringUtils.isEmpty(postCode)) { @@ -81,11 +80,7 @@ public class MemberAddressService { } String detailAddress = query.getDetailAddress(); if (!StringUtils.isEmpty(detailAddress)) { - qw.eq("detail_address", detailAddress); - } - Integer isDefault = query.getIsDefault(); - if (isDefault != null) { - qw.eq("is_default", isDefault); + qw.like("detail_address", detailAddress); } return memberAddressMapper.selectList(qw); } diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/service/MemberCartService.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberCartService.java similarity index 53% rename from ruoyi-mall/src/main/java/com/cyl/ums/service/MemberCartService.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberCartService.java index 60040c9..29eeec5 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/service/MemberCartService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberCartService.java @@ -1,32 +1,35 @@ -package com.cyl.ums.service; +package com.cyl.manager.ums.service; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.cyl.pms.domain.Product; -import com.cyl.pms.domain.Sku; -import com.cyl.pms.mapper.ProductMapper; -import com.cyl.pms.mapper.SkuMapper; -import com.cyl.pms.pojo.dto.MemberCartDTO; -import com.cyl.ums.convert.MemberCartConvert; -import com.cyl.ums.domain.MemberCart; -import com.cyl.ums.mapper.MemberCartMapper; -import com.cyl.ums.pojo.query.MemberCartQuery; -import com.cyl.ums.pojo.vo.form.AddMemberCartForm; -import com.cyl.ums.pojo.vo.form.UpdateMemberCartForm; +import com.cyl.h5.config.SecurityUtil; +import com.cyl.manager.pms.domain.Sku; +import com.cyl.manager.pms.mapper.ProductMapper; +import com.cyl.manager.pms.mapper.SkuMapper; +import com.cyl.manager.pms.pojo.dto.MemberCartDTO; +import com.cyl.manager.ums.convert.MemberCartConvert; +import com.cyl.manager.ums.domain.Member; +import com.cyl.manager.ums.domain.MemberCart; +import com.cyl.manager.ums.mapper.MemberCartMapper; +import com.cyl.manager.ums.pojo.query.MemberCartQuery; +import com.cyl.manager.ums.pojo.vo.MemberCartVO; +import com.cyl.manager.ums.pojo.vo.form.UpdateMemberCartForm; import com.github.pagehelper.PageHelper; +import com.ruoyi.common.constant.Constants; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SortUtil; -import org.apache.commons.lang3.StringUtils; +import com.ruoyi.framework.config.LocalDataUtil; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.time.LocalDateTime; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -62,46 +65,38 @@ public class MemberCartService { * @param page 分页条件 * @return 购物车 */ - public List selectList(MemberCartQuery query, Pageable page) { + public List selectList(MemberCartQuery query, Pageable page) { if (page != null) { PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize(), SortUtil.sort2string(page.getSort(),"id desc")); } QueryWrapper qw = new QueryWrapper<>(); - Integer status = query.getStatus(); - if (status != null) { - qw.eq("status", status); + if (query.getMemberId() != null){ + qw.eq("member_id", query.getMemberId()); } - Long memberId = query.getMemberId(); - if (memberId != null) { - qw.eq("member_id", memberId); - } else { - qw.eq("member_id", SecurityUtils.getUserId()); + List memberCartList = memberCartMapper.selectList(qw); + if (CollectionUtil.isEmpty(memberCartList)){ + return Collections.emptyList(); } - Long productId = query.getProductId(); - if (productId != null) { - qw.eq("product_id", productId); - } - String pic = query.getPic(); - if (!StringUtils.isEmpty(pic)) { - qw.eq("pic", pic); - } - Long skuId = query.getSkuId(); - if (skuId != null) { - qw.eq("sku_id", skuId); - } - String productNameLike = query.getProductNameLike(); - if (!StringUtils.isEmpty(productNameLike)) { - qw.like("product_name", productNameLike); - } - String spData = query.getSpData(); - if (!StringUtils.isEmpty(spData)) { - qw.eq("sp_data", spData); - } - Integer quantity = query.getQuantity(); - if (quantity != null) { - qw.eq("quantity", quantity); - } - return memberCartMapper.selectList(qw); + //查sku + List skuIdList = memberCartList.stream().map(MemberCart::getSkuId).collect(Collectors.toList()); + QueryWrapper skuQw = new QueryWrapper<>(); + skuQw.in("id", skuIdList); + Map skuMap = skuMapper.selectList(skuQw).stream().collect(Collectors.toMap(Sku::getId, it -> it)); + List resList = new ArrayList<>(); + memberCartList.forEach(item -> { + MemberCartVO memberCartVO = new MemberCartVO(); + BeanUtils.copyProperties(item, memberCartVO); + if (!skuMap.containsKey(item.getSkuId())){ + memberCartVO.setStatus(0); + memberCartVO.setSkuIfExist(0); + }else { + Sku sku = skuMap.get(item.getSkuId()); + memberCartVO.setPrice(sku.getPrice()); + memberCartVO.setSkuIfExist(1); + } + resList.add(memberCartVO); + }); + return resList; } /** @@ -111,27 +106,24 @@ public class MemberCartService { * @return 结果 */ public int insert(MemberCart memberCart) { - memberCart.setCreateTime(LocalDateTime.now()); - return memberCartMapper.insert(memberCart); - } - - /** - * 新增购物车 - * - * @param form 添加购物车表单 - * @return 结果 - */ - public MemberCart insert(AddMemberCartForm form) { - // 查询规格 - Sku sku = skuMapper.selectById(form.getSkuId()); - MemberCart memberCart = memberCartConvert.sku2Cart(sku); - Product p = productMapper.selectById(sku.getProductId()); - memberCartConvert.injectProduct(memberCart, p); - memberCart.setQuantity(form.getNum()); - memberCart.setMemberId(SecurityUtils.getUserId()); - memberCart.setStatus(1) ; - memberCartMapper.insert(memberCart); - return memberCart; + Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); + memberCart.setMemberId(member.getId()); + //判断cart是否存在 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("member_id",member.getId()); + queryWrapper.eq("sku_id",memberCart.getSkuId()); + queryWrapper.eq("product_id",memberCart.getProductId()); + List memberCarts = memberCartMapper.selectList(queryWrapper); + if (CollectionUtils.isEmpty(memberCarts)) { + memberCart.setStatus(1); + memberCart.setCreateTime(LocalDateTime.now()); + memberCart.setCreateBy(member.getId()); + return memberCartMapper.insert(memberCart); + } + MemberCart dbCart = memberCarts.get(0); + dbCart.setUpdateTime(LocalDateTime.now()); + dbCart.setQuantity(dbCart.getQuantity() + memberCart.getQuantity()); + return memberCartMapper.updateById(dbCart); } /** @@ -141,7 +133,14 @@ public class MemberCartService { * @return 结果 */ public int update(MemberCart memberCart) { - return memberCartMapper.updateById(memberCart); + MemberCart cart = memberCartMapper.selectById(memberCart.getId()); + if (cart == null){ + return 0; + } + cart.setQuantity(memberCart.getQuantity()); + cart.setUpdateTime(LocalDateTime.now()); + cart.setUpdateBy(SecurityUtil.getLocalMember().getId()); + return memberCartMapper.updateById(cart); } public int update(UpdateMemberCartForm form) { if (form.getNum() == null || form.getId() == null) { @@ -175,12 +174,9 @@ public class MemberCartService { * @param ids 购物车主键 * @return 结果 */ - public int deleteByIds(List ids) { - Long userId = SecurityUtils.getUserId(); - LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); - qw.eq(MemberCart::getMemberId, userId); - qw.in(MemberCart::getId, ids); - return memberCartMapper.delete(qw); + public int deleteByIds(String ids) { + List idList = Arrays.stream(ids.split(",")).map(it -> Long.parseLong(it)).collect(Collectors.toList()); + return memberCartMapper.deleteBatchIds(idList); } public Integer mineCartNum() { diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberService.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberService.java new file mode 100644 index 0000000..dd262f2 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberService.java @@ -0,0 +1,110 @@ +package com.cyl.manager.ums.service; + +import java.time.LocalDateTime; +import java.util.List; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.cyl.manager.ums.pojo.dto.ChangeMemberStatusDTO; +import com.github.pagehelper.PageHelper; +import com.ruoyi.common.utils.AesCryptoUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Pageable; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import com.cyl.manager.ums.mapper.MemberMapper; +import com.cyl.manager.ums.domain.Member; +import com.cyl.manager.ums.pojo.query.MemberQuery; + +/** + * 会员信息Service业务层处理 + * + * + * @author zcc + */ +@Service +public class MemberService { + @Autowired + private MemberMapper memberMapper; + @Value("${aes.key}") + private String aesKey; + + /** + * 查询会员信息 + * + * @param id 会员信息主键 + * @return 会员信息 + */ + public Member selectById(Long id) { + return memberMapper.selectById(id); + } + + /** + * 查询会员信息列表 + * + * @param query 查询条件 + * @param page 分页条件 + * @return 会员信息 + */ + public List selectList(MemberQuery query, Pageable page) { + if (page != null) { + PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize()); + } + QueryWrapper qw = new QueryWrapper<>(); + String nicknameLike = query.getNickname(); + if (!StringUtils.isEmpty(nicknameLike)) { + qw.like("nickname", nicknameLike); + } + String phone = query.getPhone(); + if (!StringUtils.isEmpty(phone)) { + qw.eq("phone_encrypted", AesCryptoUtils.encrypt(aesKey, phone)); + } + if (!StringUtils.isEmpty(query.getBeginTime()) && !StringUtils.isEmpty(query.getEndTime())){ + qw.ge("create_time", query.getBeginTime()); + qw.lt("create_time", query.getEndTime()); + } + if (query.getStatus() != null){ + qw.eq("status", query.getStatus()); + } + return memberMapper.selectList(qw); + } + + /** + * 新增会员信息 + * + * @param member 会员信息 + * @return 结果 + */ + public int insert(Member member) { + member.setCreateTime(LocalDateTime.now()); + return memberMapper.insert(member); + } + + /** + * 修改会员信息 + * + * @param member 会员信息 + * @return 结果 + */ + public int update(Member member) { + return memberMapper.updateById(member); + } + + /** + * 删除会员信息信息 + * + * @param id 会员信息主键 + * @return 结果 + */ + public int deleteById(Long id) { + return memberMapper.deleteById(id); + } + + public Integer changeStatus(ChangeMemberStatusDTO dto) { + UpdateWrapper wrapper = new UpdateWrapper<>(); + wrapper.eq("id", dto.getMemberId()); + wrapper.set("status", dto.getStatus()); + return memberMapper.update(null, wrapper); + } +} diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/service/MemberWechatService.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberWechatService.java similarity index 94% rename from ruoyi-mall/src/main/java/com/cyl/ums/service/MemberWechatService.java rename to ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberWechatService.java index b51a33b..4f1c1b2 100644 --- a/ruoyi-mall/src/main/java/com/cyl/ums/service/MemberWechatService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberWechatService.java @@ -1,13 +1,9 @@ -package com.cyl.ums.service; +package com.cyl.manager.ums.service; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; -import java.util.Arrays; import java.util.List; -import java.time.LocalDateTime; -import java.util.concurrent.TimeUnit; -import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -16,23 +12,21 @@ import com.cyl.external.WechatUtil; import com.cyl.external.resp.AccessTokenResp; import com.cyl.external.resp.UserInfoResp; import com.cyl.h5.pojo.vo.form.WechatLoginForm; -import com.cyl.ums.convert.MemberWechatConvert; +import com.cyl.manager.ums.convert.MemberWechatConvert; import com.github.pagehelper.PageHelper; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.ExtraUserBody; import com.ruoyi.framework.web.service.SysLoginService; import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.system.service.ISysUserService; -import lombok.extern.java.Log; -import lombok.extern.log4j.Log4j; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; -import com.cyl.ums.mapper.MemberWechatMapper; -import com.cyl.ums.domain.MemberWechat; -import com.cyl.ums.pojo.query.MemberWechatQuery; +import com.cyl.manager.ums.mapper.MemberWechatMapper; +import com.cyl.manager.ums.domain.MemberWechat; +import com.cyl.manager.ums.pojo.query.MemberWechatQuery; /** * 用户微信信息Service业务层处理 diff --git a/ruoyi-mall/src/main/java/com/cyl/oms/service/OrderService.java b/ruoyi-mall/src/main/java/com/cyl/oms/service/OrderService.java deleted file mode 100644 index c6c2be2..0000000 --- a/ruoyi-mall/src/main/java/com/cyl/oms/service/OrderService.java +++ /dev/null @@ -1,344 +0,0 @@ -package com.cyl.oms.service; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.*; -import java.time.LocalDateTime; -import java.util.stream.Collectors; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.crypto.SecureUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.cyl.h5.pojo.vo.form.OrderSubmitForm; -import com.cyl.h5.pojo.vo.query.OrderH5Query; -import com.cyl.oms.convert.OrderConvert; -import com.cyl.oms.domain.OrderItem; -import com.cyl.oms.mapper.OrderItemMapper; -import com.cyl.oms.pojo.vo.OrderVO; -import com.cyl.pms.domain.Product; -import com.cyl.pms.domain.Sku; -import com.cyl.pms.mapper.ProductMapper; -import com.cyl.pms.mapper.SkuMapper; -import com.cyl.ums.domain.MemberAddress; -import com.cyl.ums.mapper.MemberAddressMapper; -import com.github.pagehelper.PageHelper; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.common.core.domain.model.LoginUser; -import com.ruoyi.common.exception.base.BaseException; -import com.ruoyi.common.utils.SecurityUtils; -import com.ruoyi.system.mapper.SysUserMapper; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; -import org.springframework.data.domain.Pageable; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Service; -import com.cyl.oms.mapper.OrderMapper; -import com.cyl.oms.domain.Order; -import com.cyl.oms.pojo.query.OrderQuery; - -/** - * 订单表Service业务层处理 - * - * - * @author zcc - */ -@Service -public class OrderService { - @Autowired - private OrderMapper orderMapper; - @Autowired - private OrderConvert orderConvert; - @Autowired - private OrderItemMapper orderItemMapper; - @Autowired - private MemberAddressMapper memberAddressMapper; - @Autowired - private SkuMapper skuMapper; - @Autowired - private ProductMapper productMapper; - - /** - * 查询订单表 - * - * @param id 订单表主键 - * @return 订单表 - */ - public Order selectById(Long id) { - return orderMapper.selectById(id); - } - - /** - * 查询订单表列表 - * - * @param query 查询条件 - * @param page 分页条件 - * @return 订单表 - */ - public List selectList(OrderQuery query, Pageable page) { - if (page != null) { - PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize()); - } - QueryWrapper qw = new QueryWrapper<>(); - Long memberId = query.getMemberId(); - if (memberId != null) { - qw.eq("member_id", memberId); - } - String memberUsernameLike = query.getMemberUsernameLike(); - if (!StringUtils.isEmpty(memberUsernameLike)) { - qw.like("member_username", memberUsernameLike); - } - BigDecimal totalAmount = query.getTotalAmount(); - if (totalAmount != null) { - qw.eq("total_amount", totalAmount); - } - BigDecimal purchasePrice = query.getPurchasePrice(); - if (purchasePrice != null) { - qw.eq("purchase_price", purchasePrice); - } - BigDecimal payAmount = query.getPayAmount(); - if (payAmount != null) { - qw.eq("pay_amount", payAmount); - } - BigDecimal freightAmount = query.getFreightAmount(); - if (freightAmount != null) { - qw.eq("freight_amount", freightAmount); - } - Integer payType = query.getPayType(); - if (payType != null) { - qw.eq("pay_type", payType); - } - Integer status = query.getStatus(); - if (status != null) { - qw.eq("status", status); - } - Integer aftersaleStatus = query.getAftersaleStatus(); - if (aftersaleStatus != null) { - qw.eq("aftersale_status", aftersaleStatus); - } - String deliveryCompany = query.getDeliveryCompany(); - if (!StringUtils.isEmpty(deliveryCompany)) { - qw.eq("delivery_company", deliveryCompany); - } - String deliverySn = query.getDeliverySn(); - if (!StringUtils.isEmpty(deliverySn)) { - qw.eq("delivery_sn", deliverySn); - } - Integer autoConfirmDay = query.getAutoConfirmDay(); - if (autoConfirmDay != null) { - qw.eq("auto_confirm_day", autoConfirmDay); - } - String receiverNameLike = query.getReceiverNameLike(); - if (!StringUtils.isEmpty(receiverNameLike)) { - qw.like("receiver_name", receiverNameLike); - } - String receiverPhone = query.getReceiverPhone(); - if (!StringUtils.isEmpty(receiverPhone)) { - qw.eq("receiver_phone", receiverPhone); - } - String receiverPostCode = query.getReceiverPostCode(); - if (!StringUtils.isEmpty(receiverPostCode)) { - qw.eq("receiver_post_code", receiverPostCode); - } - String receiverProvince = query.getReceiverProvince(); - if (!StringUtils.isEmpty(receiverProvince)) { - qw.eq("receiver_province", receiverProvince); - } - String receiverCity = query.getReceiverCity(); - if (!StringUtils.isEmpty(receiverCity)) { - qw.eq("receiver_city", receiverCity); - } - String receiverDistrict = query.getReceiverDistrict(); - if (!StringUtils.isEmpty(receiverDistrict)) { - qw.eq("receiver_district", receiverDistrict); - } - Long receiverProvinceId = query.getReceiverProvinceId(); - if (receiverProvinceId != null) { - qw.eq("receiver_province_id", receiverProvinceId); - } - Long receiverCityId = query.getReceiverCityId(); - if (receiverCityId != null) { - qw.eq("receiver_city_id", receiverCityId); - } - Long receiverDistrictId = query.getReceiverDistrictId(); - if (receiverDistrictId != null) { - qw.eq("receiver_district_id", receiverDistrictId); - } - String receiverDetailAddress = query.getReceiverDetailAddress(); - if (!StringUtils.isEmpty(receiverDetailAddress)) { - qw.eq("receiver_detail_address", receiverDetailAddress); - } - String note = query.getNote(); - if (!StringUtils.isEmpty(note)) { - qw.eq("note", note); - } - Integer confirmStatus = query.getConfirmStatus(); - if (confirmStatus != null) { - qw.eq("confirm_status", confirmStatus); - } - Integer deleteStatus = query.getDeleteStatus(); - if (deleteStatus != null) { - qw.eq("delete_status", deleteStatus); - } - LocalDateTime paymentTime = query.getPaymentTime(); - if (paymentTime != null) { - qw.eq("payment_time", paymentTime); - } - LocalDateTime deliveryTime = query.getDeliveryTime(); - if (deliveryTime != null) { - qw.eq("delivery_time", deliveryTime); - } - LocalDateTime receiveTime = query.getReceiveTime(); - if (receiveTime != null) { - qw.eq("receive_time", receiveTime); - } - return orderMapper.selectList(qw); - } - - /** - * 新增订单表 - * - * @param order 订单表 - * @return 结果 - */ - public int insert(Order order) { - order.setCreateTime(LocalDateTime.now()); - return orderMapper.insert(order); - } - - /** - * 修改订单表 - * - * @param order 订单表 - * @return 结果 - */ - public int update(Order order) { - return orderMapper.updateById(order); - } - - /** - * 删除订单表信息 - * - * @param id 订单表主键 - * @return 结果 - */ - public int deleteById(Long id) { - return orderMapper.deleteById(id); - } - - public OrderVO submit(OrderSubmitForm form) { - MemberAddress addr = memberAddressMapper.selectById(form.getAddressId()); - if (addr == null) { - throw new BaseException("参数错误"); - } - List skuIds = form.getSkus().stream().map(OrderSubmitForm.SkuParam::getSkuId).distinct().collect(Collectors.toList()); - List skus = skuMapper.selectBatchIds(skuIds); - if (skuIds.size() != skus.size()) { - throw new BaseException("参数错误"); - } - Map id2sku = skus.stream().collect(Collectors.toMap(Sku::getId, it -> it)); - - Map id2Product = productMapper.selectBatchIds( - skus.stream().map(Sku::getProductId).distinct().collect(Collectors.toList()) - ).stream().collect(Collectors.toMap(Product::getId, it -> it)); - - // 1. 生成订单商品快照 - Order order = new Order(); - order.setTotalAmount(BigDecimal.ZERO); - List items = new ArrayList<>(); - form.getSkus().forEach(it -> { - Sku s = id2sku.get(it.getSkuId()); - Product p = id2Product.get(s.getProductId()); - - OrderItem item = new OrderItem(); - item.setProductId(s.getProductId()); - item.setOutProductId(p.getOutProductId()); - item.setSkuId(it.getSkuId()); - item.setOutSkuId(s.getOutSkuId()); - item.setProductSnapshotId(p.getId()); - item.setSkuSnapshotId(s.getId()); - item.setPic(StrUtil.isNotEmpty(s.getPic()) ? s.getPic() : p.getPic()); - item.setProductName(p.getName()); - item.setSalePrice(s.getPrice()); - item.setQuantity(it.getQuantity()); - item.setProductCategoryId(p.getCategoryId()); - item.setSpData(s.getSpData()); - items.add(item); - order.setTotalAmount(order.getTotalAmount().add(s.getPrice().multiply(BigDecimal.valueOf(it.getQuantity())))); - }); - LoginUser user = SecurityUtils.getLoginUser(); - - // 2. 生成订单 - order.setMemberId(user.getUserId()); - order.setMemberUsername(user.getUsername()); - order.setStatus(0); - order.setAftersaleStatus(1); - order.setAutoConfirmDay(7); - order.setReceiverName(addr.getName()); - order.setReceiverPhone(addr.getPhone()); - order.setReceiverProvince(addr.getProvince()); - order.setReceiverDistrict(addr.getDistrict()); - order.setReceiverDetailAddress(addr.getDetailAddress()); - order.setNote(form.getNote()); - order.setConfirmStatus(0); - order.setDeleteStatus(0); - orderMapper.insert(order); - items.forEach(it -> it.setOrderId(order.getId())); - items.forEach(orderItemMapper::insert); - - // 3. 判断是否付费,生成支付订单 - if (BigDecimal.ZERO.compareTo(order.getTotalAmount()) > 0) { - // todo 生成支付订单 - } - OrderVO vo = orderConvert.do2vo(order); - vo.setItems(items); - return vo; - } - - public Page queryOrderPage(OrderH5Query query, Pageable pageReq) { - QueryWrapper qw = new QueryWrapper<>(); - qw.eq("member_id", SecurityUtils.getUserId()); - IPage page = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(); - page.setCurrent(pageReq.getPageNumber()) - .setSize(pageReq.getPageSize()); - if (CollUtil.isEmpty(pageReq.getSort())) { - pageReq.getSort().forEach(it -> { - qw.orderBy(true, it.getDirection().isAscending(), it.getProperty()); - }); - } - Integer tab = query.getTab(); - if (tab != null) { - qw.eq("delete_status", 0); - if (tab == 1) { - qw.eq("status", 0); - } else if (tab == 2) { - qw.eq("status", 1); - qw.eq("aftersale_status", 1); - } else if (tab == 3) { - qw.eq("status", 2); - qw.eq("confirm_status", 0); - } else if (tab == 4) { - qw.eq("status", 2); - qw.eq("confirm_status", 1); - } - } - orderMapper.selectPage(page, qw); - List orders = page.getRecords(); - long total = page.getPages(); - if (CollUtil.isEmpty(orders)) { - return new PageImpl<>(Collections.emptyList(), pageReq, total); - } - LambdaQueryWrapper qw1 = new LambdaQueryWrapper<>(); - qw1.in(OrderItem::getOrderId, orders.stream().map(Order::getId).collect(Collectors.toList())); - Map> oid2items = orderItemMapper.selectList(qw1) - .stream().collect(Collectors.groupingBy(OrderItem::getOrderId)); - List res = orderConvert.dos2vos(orders); - res.forEach(it -> { - it.setItems(oid2items.get(it.getId())); - }); - return new PageImpl<>(res, pageReq, total); - } -} diff --git a/ruoyi-mall/src/main/java/com/cyl/pay/domain/PayOrder.java b/ruoyi-mall/src/main/java/com/cyl/pay/domain/PayOrder.java deleted file mode 100644 index 5b384b8..0000000 --- a/ruoyi-mall/src/main/java/com/cyl/pay/domain/PayOrder.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.cyl.pay.domain; - -public class PayOrder { -} diff --git a/ruoyi-mall/src/main/java/com/cyl/pay/pojo/vo/PayOrderVO.java b/ruoyi-mall/src/main/java/com/cyl/pay/pojo/vo/PayOrderVO.java deleted file mode 100644 index 0a51c00..0000000 --- a/ruoyi-mall/src/main/java/com/cyl/pay/pojo/vo/PayOrderVO.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.cyl.pay.pojo.vo; - -public class PayOrderVO { -} diff --git a/ruoyi-mall/src/main/java/com/cyl/sms/controller/SmsController.java b/ruoyi-mall/src/main/java/com/cyl/sms/controller/SmsController.java new file mode 100644 index 0000000..ffc2870 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/sms/controller/SmsController.java @@ -0,0 +1,26 @@ +package com.cyl.sms.controller; + +import com.cyl.sms.service.SmsService; +import com.ruoyi.common.core.domain.model.SmsResult; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + + + +@RestController +@RequestMapping("/no-auth/sms") +public class SmsController { + + @Autowired + private SmsService smsService; + + /** + * 阿里云短信服务 + */ + @GetMapping("/sendAliyun/{phones}") + public ResponseEntity sendAliyun(@PathVariable String phones){ + return smsService.sendAliyun(phones); + } + +} diff --git a/ruoyi-mall/src/main/java/com/cyl/sms/service/SmsService.java b/ruoyi-mall/src/main/java/com/cyl/sms/service/SmsService.java new file mode 100644 index 0000000..ec3885d --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/sms/service/SmsService.java @@ -0,0 +1,64 @@ +package com.cyl.sms.service; + +import com.ruoyi.common.config.properties.SmsProperties; +import com.ruoyi.common.core.domain.model.SmsResult; +import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.common.core.sms.AliyunSmsTemplate; +import com.ruoyi.common.core.sms.SmsTemplate; +import com.ruoyi.common.utils.SmsUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +import java.util.Base64; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +@Service +@Slf4j +public class SmsService { + + @Autowired + private RedisCache redisCache; + + @Autowired + private SmsProperties smsProperties; + + private final String templateId = "SMS_146125046"; + + public ResponseEntity sendAliyun(String phones){ + if (!smsProperties.getEnabled()){ + return ResponseEntity.ok( + SmsResult.builder() + .isSuccess(false) + .message("当前系统没有开启短信服务") + .build() + ); + + } + byte[] decodedBytes = Base64.getDecoder().decode(phones); + phones = new String(decodedBytes); + String code = SmsUtils.createRandom(true, 4); + Map map = new HashMap<>(); + map.put("code", code); + SmsTemplate smsTemplate = new AliyunSmsTemplate(smsProperties); + SmsResult send = smsTemplate.send(phones, templateId, map); + // 验证码存redis,当前只用于注册和登录,手机号只有一个 + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + send.setUuid(uuid); + try{ + redisCache.setCacheObject(uuid + "_" + phones, code, 5, TimeUnit.MINUTES); + }catch (Exception e){ + return ResponseEntity.ok( + SmsResult.builder() + .isSuccess(false) + .message("服务繁忙,请稍后再试") + .build() + ); + } + return ResponseEntity.ok(send); + } +} diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/form/AddMemberCartForm.java b/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/form/AddMemberCartForm.java deleted file mode 100644 index 1c2896a..0000000 --- a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/form/AddMemberCartForm.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.cyl.ums.pojo.vo.form; - -import lombok.Data; - -import javax.validation.constraints.Max; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotNull; - -@Data -public class AddMemberCartForm { - /** - * 规格id - */ - @NotNull(message = "规格必填!") - private Long skuId; - /** - * 数量 - */ - @NotNull(message = "数量必填!") - @Min(value = 1, message = "数量不小于1") - @Max(value = Integer.MAX_VALUE, message = "数量不大于" + Integer.MAX_VALUE) - private Integer num; -} diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/service/MemberService.java b/ruoyi-mall/src/main/java/com/cyl/ums/service/MemberService.java deleted file mode 100644 index 096011a..0000000 --- a/ruoyi-mall/src/main/java/com/cyl/ums/service/MemberService.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.cyl.ums.service; - -import java.math.BigDecimal; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.util.Arrays; -import java.util.List; -import java.time.LocalDate; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.github.pagehelper.PageHelper; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Pageable; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Service; -import com.cyl.ums.mapper.MemberMapper; -import com.cyl.ums.domain.Member; -import com.cyl.ums.pojo.query.MemberQuery; - -/** - * 会员信息Service业务层处理 - * - * - * @author zcc - */ -@Service -public class MemberService { - @Autowired - private MemberMapper memberMapper; - - /** - * 查询会员信息 - * - * @param id 会员信息主键 - * @return 会员信息 - */ - public Member selectById(Long id) { - return memberMapper.selectById(id); - } - - /** - * 查询会员信息列表 - * - * @param query 查询条件 - * @param page 分页条件 - * @return 会员信息 - */ - public List selectList(MemberQuery query, Pageable page) { - if (page != null) { - PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize()); - } - QueryWrapper qw = new QueryWrapper<>(); - String nicknameLike = query.getNicknameLike(); - if (!StringUtils.isEmpty(nicknameLike)) { - qw.like("nickname", nicknameLike); - } - String password = query.getPassword(); - if (!StringUtils.isEmpty(password)) { - qw.eq("password", password); - } - String phone = query.getPhone(); - if (!StringUtils.isEmpty(phone)) { - qw.eq("phone", phone); - } - String mark = query.getMark(); - if (!StringUtils.isEmpty(mark)) { - qw.eq("mark", mark); - } - Integer status = query.getStatus(); - if (status != null) { - qw.eq("status", status); - } - String avatar = query.getAvatar(); - if (!StringUtils.isEmpty(avatar)) { - qw.eq("avatar", avatar); - } - Integer gender = query.getGender(); - if (gender != null) { - qw.eq("gender", gender); - } - String city = query.getCity(); - if (!StringUtils.isEmpty(city)) { - qw.eq("city", city); - } - String province = query.getProvince(); - if (!StringUtils.isEmpty(province)) { - qw.eq("province", province); - } - String country = query.getCountry(); - if (!StringUtils.isEmpty(country)) { - qw.eq("country", country); - } - LocalDate birthday = query.getBirthday(); - if (birthday != null) { - qw.eq("birthday", birthday); - } - Long spreadUid = query.getSpreadUid(); - if (spreadUid != null) { - qw.eq("spread_uid", spreadUid); - } - LocalDateTime spreadTime = query.getSpreadTime(); - if (spreadTime != null) { - qw.eq("spread_time", spreadTime); - } - Integer level = query.getLevel(); - if (level != null) { - qw.eq("level", level); - } - BigDecimal integral = query.getIntegral(); - if (integral != null) { - qw.eq("integral", integral); - } - return memberMapper.selectList(qw); - } - - /** - * 新增会员信息 - * - * @param member 会员信息 - * @return 结果 - */ - public int insert(Member member) { - member.setCreateTime(LocalDateTime.now()); - return memberMapper.insert(member); - } - - /** - * 修改会员信息 - * - * @param member 会员信息 - * @return 结果 - */ - public int update(Member member) { - return memberMapper.updateById(member); - } - - /** - * 删除会员信息信息 - * - * @param id 会员信息主键 - * @return 结果 - */ - public int deleteById(Long id) { - return memberMapper.deleteById(id); - } -} diff --git a/ruoyi-mall/src/main/resources/mapper/oms/AftersaleItemMapper.xml b/ruoyi-mall/src/main/resources/mapper/oms/AftersaleItemMapper.xml index 1d1033b..4bc38f4 100644 --- a/ruoyi-mall/src/main/resources/mapper/oms/AftersaleItemMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/oms/AftersaleItemMapper.xml @@ -2,7 +2,7 @@ - + diff --git a/ruoyi-mall/src/main/resources/mapper/oms/AftersaleMapper.xml b/ruoyi-mall/src/main/resources/mapper/oms/AftersaleMapper.xml index e00b5a8..0ae4417 100644 --- a/ruoyi-mall/src/main/resources/mapper/oms/AftersaleMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/oms/AftersaleMapper.xml @@ -2,7 +2,7 @@ - + diff --git a/ruoyi-mall/src/main/resources/mapper/oms/OrderDeliveryHistoryMapper.xml b/ruoyi-mall/src/main/resources/mapper/oms/OrderDeliveryHistoryMapper.xml index ea23795..e1d2b61 100644 --- a/ruoyi-mall/src/main/resources/mapper/oms/OrderDeliveryHistoryMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/oms/OrderDeliveryHistoryMapper.xml @@ -2,7 +2,7 @@ - + diff --git a/ruoyi-mall/src/main/resources/mapper/oms/OrderItemMapper.xml b/ruoyi-mall/src/main/resources/mapper/oms/OrderItemMapper.xml index f6aa70e..1b647a7 100644 --- a/ruoyi-mall/src/main/resources/mapper/oms/OrderItemMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/oms/OrderItemMapper.xml @@ -2,7 +2,7 @@ - + diff --git a/ruoyi-mall/src/main/resources/mapper/oms/OrderMapper.xml b/ruoyi-mall/src/main/resources/mapper/oms/OrderMapper.xml index e9c9413..0524421 100644 --- a/ruoyi-mall/src/main/resources/mapper/oms/OrderMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/oms/OrderMapper.xml @@ -2,7 +2,7 @@ - + @@ -81,4 +81,63 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and receive_time = #{receiveTime} + diff --git a/ruoyi-mall/src/main/resources/mapper/oms/OrderOperateHistoryMapper.xml b/ruoyi-mall/src/main/resources/mapper/oms/OrderOperateHistoryMapper.xml index 554d54d..71c87ea 100644 --- a/ruoyi-mall/src/main/resources/mapper/oms/OrderOperateHistoryMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/oms/OrderOperateHistoryMapper.xml @@ -2,7 +2,7 @@ - + diff --git a/ruoyi-mall/src/main/resources/mapper/pms/BrandMapper.xml b/ruoyi-mall/src/main/resources/mapper/pms/BrandMapper.xml index a2d796d..aff89d0 100644 --- a/ruoyi-mall/src/main/resources/mapper/pms/BrandMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/pms/BrandMapper.xml @@ -2,7 +2,7 @@ - + diff --git a/ruoyi-mall/src/main/resources/mapper/pms/ProductCategoryMapper.xml b/ruoyi-mall/src/main/resources/mapper/pms/ProductCategoryMapper.xml index c68f07c..c5cb90b 100644 --- a/ruoyi-mall/src/main/resources/mapper/pms/ProductCategoryMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/pms/ProductCategoryMapper.xml @@ -2,7 +2,7 @@ - + diff --git a/ruoyi-mall/src/main/resources/mapper/pms/ProductMapper.xml b/ruoyi-mall/src/main/resources/mapper/pms/ProductMapper.xml index 48ecab9..1dfdbbe 100644 --- a/ruoyi-mall/src/main/resources/mapper/pms/ProductMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/pms/ProductMapper.xml @@ -2,7 +2,7 @@ - + diff --git a/ruoyi-mall/src/main/resources/mapper/pms/SkuMapper.xml b/ruoyi-mall/src/main/resources/mapper/pms/SkuMapper.xml index 8196986..ca6dc10 100644 --- a/ruoyi-mall/src/main/resources/mapper/pms/SkuMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/pms/SkuMapper.xml @@ -2,7 +2,7 @@ - + diff --git a/ruoyi-mall/src/main/resources/mapper/ums/AddressMapper.xml b/ruoyi-mall/src/main/resources/mapper/ums/AddressMapper.xml new file mode 100644 index 0000000..e19506e --- /dev/null +++ b/ruoyi-mall/src/main/resources/mapper/ums/AddressMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + select id, code, parent_code, name, level, created_at, updated_at, deleted_at from address + + + + diff --git a/ruoyi-mall/src/main/resources/mapper/ums/MemberAddressMapper.xml b/ruoyi-mall/src/main/resources/mapper/ums/MemberAddressMapper.xml index 1cce875..e53837c 100644 --- a/ruoyi-mall/src/main/resources/mapper/ums/MemberAddressMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/ums/MemberAddressMapper.xml @@ -2,13 +2,14 @@ - + - + + @@ -27,7 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, member_id, name, phone, default_status, post_code, province, city, district, detail_address, is_default, create_by, create_time, update_by, update_time from ums_member_address + select id, member_id, name, phone_hidden,phone_encrypted, default_status, post_code, province, city, district, detail_address, is_default, create_by, create_time, update_by, update_time from ums_member_address