From e7ee3ad759d1dc390de11c536504a78c17dde848 Mon Sep 17 00:00:00 2001 From: jiangqs <343695869@qq.com> Date: 星期三, 03 五月 2023 02:59:57 +0800 Subject: [PATCH] 购买商品 --- ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/UserCouponMapper.java | 10 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppSureOrderDto.java | 24 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppBuyGoodsDto.java | 27 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java | 55 +++ ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/goods/GoodsServiceImpl.java | 21 + ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/UserCouponService.java | 10 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java | 10 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderGoodsVo.java | 62 ++++ ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml | 10 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java | 21 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderVo.java | 39 ++ ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java | 87 ++++++ ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteMemberService.java | 9 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/goods/GoodsFileServiceImpl.java | 37 ++ ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/UserCouponServiceImpl.java | 18 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/goods/GoodsFileService.java | 17 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppHomeController.java | 3 ruoyi-modules/ruoyi-file/pom.xml | 7 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppGoodsController.java | 8 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java | 8 ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/UserCouponMapper.xml | 43 ++ ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/coupon/Coupon.java | 8 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/UserCoupon.java | 10 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 156 +++++++++++ ruoyi-modules/ruoyi-member/pom.xml | 6 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java | 6 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/RuoYiOrderApplication.java | 6 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/RuoYiShopApplication.java | 6 ruoyi-modules/ruoyi-system/src/main/resources/mapper/coupon/CouponMapper.xml | 22 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/AppUserCouponVo.java | 50 +++ ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java | 19 + 31 files changed, 767 insertions(+), 48 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteMemberService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteMemberService.java index 44c8f33..69f606e 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteMemberService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteMemberService.java @@ -3,12 +3,15 @@ import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.poji.member.Member; +import com.ruoyi.system.api.domain.vo.AppUserCouponVo; import com.ruoyi.system.api.factory.RemoteUserFallbackFactory; import com.ruoyi.system.api.model.AppMiniLoginDto; import com.ruoyi.system.api.model.AppMiniLoginVo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; @FeignClient(contextId = "remoteMemberService", value = ServiceNameConstants.MEMBER_SERVICE, fallbackFactory = RemoteUserFallbackFactory.class) public interface RemoteMemberService { @@ -21,7 +24,11 @@ * @param appMiniLoginDto * @return */ - @PostMapping("/user/miniLogin") + @PostMapping("/member/miniLogin") public R<AppMiniLoginVo> miniLogin(@RequestBody AppMiniLoginDto appMiniLoginDto); + + @PostMapping("/member/listVoUserCouponByUserId") + public R<List<AppUserCouponVo>> listVoUserCouponByUserId(@RequestBody Long userId); + } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/AppUserCouponVo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/AppUserCouponVo.java new file mode 100644 index 0000000..c45c7c3 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/AppUserCouponVo.java @@ -0,0 +1,50 @@ +package com.ruoyi.system.api.domain.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author jqs34 + * @version 1.0 + * @classname AppUserCouponVo + * @description: TODO + * @date 2023 2023/5/2 21:53 + */ +@Data +public class AppUserCouponVo { + + @ApiModelProperty(value = "优惠券id") + private Long userCouponId; + + + @ApiModelProperty(value = "商品id") + private String goodsId; + + @ApiModelProperty("优惠券类型1.满减2.折扣3.代金4.商品") + private Integer couponType; + + @ApiModelProperty("优惠券名称") + private String couponName; + + @ApiModelProperty("门槛金额") + private BigDecimal moneyThreshold; + + @ApiModelProperty("折扣金额") + private BigDecimal discountMoney; + + @ApiModelProperty("折扣百分比") + private BigDecimal discountPercent; + + @ApiModelProperty("有效开始时间") + private Date validStartTime; + + @ApiModelProperty("使用有效期") + private Date deadlineTime; + + @ApiModelProperty("关联商品ids") + private String relGoodsIds; +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java index 002019c..e0eb4e0 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java @@ -6,6 +6,7 @@ import com.ruoyi.system.api.domain.poji.member.Member; import com.ruoyi.system.api.domain.poji.sys.SysFile; import com.ruoyi.system.api.domain.poji.sys.SysUser; +import com.ruoyi.system.api.domain.vo.AppUserCouponVo; import com.ruoyi.system.api.model.AppMiniLoginDto; import com.ruoyi.system.api.model.AppMiniLoginVo; import com.ruoyi.system.api.model.LoginUser; @@ -14,6 +15,8 @@ import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; + +import java.util.List; /** * 会员服务 @@ -42,6 +45,11 @@ { return R.fail("登录用户失败:" + throwable.getMessage()); } + + @Override + public R<List<AppUserCouponVo>> listVoUserCouponByUserId(Long userId) { + return R.fail("获取用户优惠券失败:" + throwable.getMessage()); + } }; } } diff --git a/ruoyi-modules/ruoyi-file/pom.xml b/ruoyi-modules/ruoyi-file/pom.xml index 1d41d8f..5bc9e09 100644 --- a/ruoyi-modules/ruoyi-file/pom.xml +++ b/ruoyi-modules/ruoyi-file/pom.xml @@ -65,6 +65,13 @@ <groupId>com.ruoyi</groupId> <artifactId>ruoyi-common-swagger</artifactId> </dependency> + + <!-- 阿里云OBS --> + <dependency> + <groupId>com.aliyun.oss</groupId> + <artifactId>aliyun-sdk-oss</artifactId> + <version>3.15.1</version> + </dependency> </dependencies> diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java index 2a0bbcc..bce2262 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java @@ -1,5 +1,6 @@ package com.ruoyi.file.controller; +import com.ruoyi.file.utils.OBSUploadUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -45,4 +46,24 @@ return R.fail(e.getMessage()); } } + + /** + * 文件上传请求 + */ + @PostMapping("uploadOSS") + public R<String> uploadOSS(MultipartFile file) + { + try + { + // 上传并返回访问地址 + String url = OBSUploadUtils.uploadFile(file); + return R.ok(url); + } + catch (Exception e) + { + log.error("上传文件失败", e); + return R.fail(e.getMessage()); + } + } + } \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java new file mode 100644 index 0000000..ea09488 --- /dev/null +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java @@ -0,0 +1,87 @@ +package com.ruoyi.file.utils; + +import com.aliyun.oss.ClientException; +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.OSSException; +import com.aliyun.oss.model.PutObjectRequest; +import com.aliyun.oss.model.PutObjectResult; +import com.ruoyi.common.core.utils.uuid.IdUtils; +import org.springframework.web.multipart.MultipartFile; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.util.Calendar; + +/** + * @author jqs34 + * @version 1.0 + * @classname OBSUploadUtils + * @description: TODO + * @date 2023 2023/5/1 15:40 + */ +public class OBSUploadUtils { + + + protected static OSS createOss(){ + // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。 + String endpoint = "https://oss-cn-beijing.aliyuncs.com"; + // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 + String accessKeyId = "LTAI5tAfKFuhyKFH12CTkXFj"; + String accessKeySecret = "tIBRuonHuQQPdcYrmlCdXlexOSwVXe"; + // 填写Bucket名称,例如examplebucket。 + String bucketName = "hongruitang"; + OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); + return ossClient; + } + + public static String uploadFile (MultipartFile file) throws Exception { + + // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。 + String bucketName = "hongruitang"; + Calendar calendar = Calendar.getInstance(); + // 获取当前年 + String year = String.valueOf(calendar.get(Calendar.YEAR)); + // 获取当前月 + String month = String.valueOf(calendar.get(Calendar.MONTH) + 1); + // 获取当前日 + String day = String.valueOf(calendar.get(Calendar.DATE)); + String filePath = year+"/"+month+"/"+day+"/"; + String uuid = IdUtils.fastSimpleUUID(); + // 创建OSSClient实例。 + OSS ossClient = createOss(); + PutObjectResult result = null; + try { + String fileName = FileUploadUtils.extractFilename(file); + String objectName = filePath + uuid; + InputStream inputStream = file.getInputStream(); + // 创建PutObjectRequest对象。 + PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream); + // 设置该属性可以返回response。如果不设置,则返回的response为空。 + putObjectRequest.setProcess("true"); + // 创建PutObject请求。 + result = ossClient.putObject(putObjectRequest); + // 如果上传成功,则返回200。 + System.out.println(result.getResponse().getStatusCode()); + return result.getResponse().getUri(); + } catch (OSSException oe) { + System.out.println("Caught an OSSException, which means your request made it to OSS, " + + "but was rejected with an error response for some reason."); + System.out.println("Error Message:" + oe.getErrorMessage()); + System.out.println("Error Code:" + oe.getErrorCode()); + System.out.println("Request ID:" + oe.getRequestId()); + System.out.println("Host ID:" + oe.getHostId()); + } catch (ClientException ce) { + System.out.println("Caught an ClientException, which means the client encountered " + + "a serious internal problem while trying to communicate with OSS, " + + "such as not being able to access the network."); + System.out.println("Error Message:" + ce.getMessage()); + } finally { + if (ossClient != null) { + ossClient.shutdown(); + } + return result.getResponse().getErrorResponseAsString(); + } + } + +} diff --git a/ruoyi-modules/ruoyi-member/pom.xml b/ruoyi-modules/ruoyi-member/pom.xml index b8f5ad9..0ee7e42 100644 --- a/ruoyi-modules/ruoyi-member/pom.xml +++ b/ruoyi-modules/ruoyi-member/pom.xml @@ -107,6 +107,12 @@ <version>2.3</version> </dependency> + <!-- 小程序统一服务 --> + <dependency> + <groupId>com.github.binarywang</groupId> + <artifactId>weixin-java-miniapp</artifactId> + <version>4.1.0</version> + </dependency> </dependencies> <build> diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiSystemApplication.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java similarity index 86% rename from ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiSystemApplication.java rename to ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java index d466584..b0d8793 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiSystemApplication.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java @@ -15,12 +15,12 @@ @EnableCustomSwagger2 @EnableRyFeignClients @SpringBootApplication -public class RuoYiSystemApplication +public class RuoYiMemberApplication { public static void main(String[] args) { - SpringApplication.run(RuoYiSystemApplication.class, args); - System.out.println("(♥◠‿◠)ノ゙ 系统模块启动成功 ლ(´ڡ`ლ)゙ \n" + + SpringApplication.run(RuoYiMemberApplication.class, args); + System.out.println("(♥◠‿◠)ノ゙ 会员模块启动成功 ლ(´ڡ`ლ)゙ \n" + " .-------. ____ __ \n" + " | _ _ \\ \\ \\ / / \n" + " | ( ' ) | \\ _. / ' \n" + diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java index 551f484..3737778 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java @@ -4,12 +4,16 @@ import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.security.annotation.InnerAuth; import com.ruoyi.member.service.member.MemberService; +import com.ruoyi.member.service.member.UserCouponService; import com.ruoyi.system.api.domain.poji.member.Member; +import com.ruoyi.system.api.domain.vo.AppUserCouponVo; import com.ruoyi.system.api.model.AppMiniLoginDto; import com.ruoyi.system.api.model.AppMiniLoginVo; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; + +import java.util.List; @RestController @RequestMapping("/member") @@ -17,6 +21,9 @@ @Autowired private MemberService memberService; + + @Autowired + private UserCouponService userCouponService; /** * @description: getMember @@ -50,4 +57,16 @@ } return R.ok(appMiniLoginVo); } + + /** + * @description: TODO + * @author jqs34 + * @date 2023/5/3 1:45 + * @version 1.0 + */ + @PostMapping("/listVoUserCouponByUserId") + public R<List<AppUserCouponVo>> listVoUserCouponByUserId(@RequestBody Long userId){ + List<AppUserCouponVo> appUserCouponVoList = userCouponService.listVoUserCouponByUserId(userId); + return R.ok(appUserCouponVoList); + } } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/UserCoupon.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/UserCoupon.java index 7acbc2e..cfebaed 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/UserCoupon.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/UserCoupon.java @@ -84,13 +84,13 @@ /** * 折扣金额 */ - @TableField("dicount_money") - private BigDecimal dicountMoney; + @TableField("discount_money") + private BigDecimal discountMoney; /** * 折扣百分比 */ - @TableField("discout_percent") - private BigDecimal discoutPercent; + @TableField("discount_percent") + private BigDecimal discountPercent; /** * 使用范围1.全场2.指定商品 */ @@ -132,6 +132,8 @@ @TableField("deadline_time") private Date deadlineTime; + @TableField("rel_goods_ids") + private String relGoodsIds; @Override protected Serializable pkVal() { diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/UserCouponMapper.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/UserCouponMapper.java index 8f6f5ce..5825710 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/UserCouponMapper.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/UserCouponMapper.java @@ -2,6 +2,9 @@ import com.ruoyi.member.domain.pojo.member.UserCoupon; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.system.api.domain.vo.AppUserCouponVo; + +import java.util.List; /** * <p> @@ -13,4 +16,11 @@ */ public interface UserCouponMapper extends BaseMapper<UserCoupon> { + /** + * @description: TODO + * @author jqs34 + * @date 2023/5/3 1:47 + * @version 1.0 + */ + List<AppUserCouponVo> listVoUserCouponByUserId(Long userId); } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/UserCouponServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/UserCouponServiceImpl.java index 0552636..a073f61 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/UserCouponServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/UserCouponServiceImpl.java @@ -4,7 +4,11 @@ import com.ruoyi.member.mapper.member.UserCouponMapper; import com.ruoyi.member.service.member.UserCouponService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.system.api.domain.vo.AppUserCouponVo; import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; /** * <p> @@ -17,4 +21,18 @@ @Service public class UserCouponServiceImpl extends ServiceImpl<UserCouponMapper, UserCoupon> implements UserCouponService { + @Resource + private UserCouponMapper userCouponMapper; + + /** + * @description: TODO + * @author jqs34 + * @date 2023/5/3 1:47 + * @version 1.0 + */ + @Override + public List<AppUserCouponVo> listVoUserCouponByUserId(Long userId){ + List<AppUserCouponVo> appUserCouponVoList = userCouponMapper.listVoUserCouponByUserId(userId); + return appUserCouponVoList; + } } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/UserCouponService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/UserCouponService.java index d45a4dc..22563ef 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/UserCouponService.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/UserCouponService.java @@ -2,6 +2,9 @@ import com.ruoyi.member.domain.pojo.member.UserCoupon; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.system.api.domain.vo.AppUserCouponVo; + +import java.util.List; /** * <p> @@ -13,4 +16,11 @@ */ public interface UserCouponService extends IService<UserCoupon> { + /** + * @description: TODO + * @author jqs34 + * @date 2023/5/3 1:47 + * @version 1.0 + */ + List<AppUserCouponVo> listVoUserCouponByUserId(Long userId); } diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml index 1e7bb9e..164eecf 100644 --- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml +++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml @@ -2,7 +2,7 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.member.mapper.member.MemberMapper"> - <resultMap type="Member" id="MemberResult"> + <resultMap type="com.ruoyi.system.api.domain.poji.member.Member" id="MemberResult"> <result property="userId" column="user_id" /> <result property="delFlag" column="del_flag" /> <result property="memberId" column="member_id" /> @@ -27,7 +27,7 @@ select user_id, del_flag, member_id, member_no, wx_openid, mini_openid, wx_unionid, realtion_shop_id, real_name, mobile, gender, referrer, customer_source, level, birthday, create_time, update_time, update_user_id from t_member </sql> - <select id="selectMemberList" parameterType="Member" resultMap="MemberResult"> + <select id="selectMemberList" parameterType="com.ruoyi.system.api.domain.poji.member.Member" resultMap="MemberResult"> <include refid="selectMemberVo"/> <where> <if test="memberId != null and memberId != ''"> and member_id = #{memberId}</if> @@ -52,7 +52,7 @@ where user_id = #{userId} </select> - <insert id="insertMember" parameterType="Member"> + <insert id="insertMember" parameterType="com.ruoyi.system.api.domain.poji.member.Member"> insert into t_member <trim prefix="(" suffix=")" suffixOverrides=","> <if test="userId != null">user_id,</if> @@ -96,7 +96,7 @@ </trim> </insert> - <update id="updateMember" parameterType="Member"> + <update id="updateMember" parameterType="com.ruoyi.system.api.domain.poji.member.Member"> update t_member <trim prefix="SET" suffixOverrides=","> <if test="delFlag != null">del_flag = #{delFlag},</if> @@ -132,7 +132,7 @@ </delete> - <select id="getOneByMiniOpenid" parameterType="Member"> + <select id="getOneByMiniOpenid" parameterType="com.ruoyi.system.api.domain.poji.member.Member"> SELECT * FROM t_member WHERE mini_openid = #{miniOpenid} </select> diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/UserCouponMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/UserCouponMapper.xml index 34dbb5e..227f652 100644 --- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/UserCouponMapper.xml +++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/UserCouponMapper.xml @@ -14,8 +14,8 @@ <result property="sendTimeType" column="send_time_type" /> <result property="sendTime" column="send_time" /> <result property="moneyThreshold" column="money_threshold" /> - <result property="dicountMoney" column="dicount_money" /> - <result property="discoutPercent" column="discout_percent" /> + <result property="discountMoney" column="discount_money" /> + <result property="discountPercent" column="discount_percent" /> <result property="useScope" column="use_scope" /> <result property="validTimeType" column="valid_time_type" /> <result property="validStartTime" column="valid_start_time" /> @@ -24,10 +24,11 @@ <result property="receiveTime" column="receive_time" /> <result property="userTime" column="user_time" /> <result property="deadlineTime" column="deadline_time" /> + <result property="relGoodsIds" column="rel_goods_ids" /> </resultMap> <sql id="selectUserCouponVo"> - select id, del_flag, coupon_id, user_id, coupon_type, coupon_status, coupon_name, send_type, send_time_type, send_time, money_threshold, dicount_money, discout_percent, use_scope, valid_time_type, valid_start_time, valid_end_time, valid_day, receive_time, user_time, deadline_time from t_user_coupon + select id, del_flag, coupon_id, user_id, coupon_type, coupon_status, coupon_name, send_type, send_time_type, send_time, money_threshold, discount_money, discount_percent, use_scope, valid_time_type, valid_start_time, valid_end_time, valid_day, receive_time, user_time, deadline_time, rel_goods_ids from t_user_coupon </sql> <select id="selectUserCouponList" parameterType="UserCoupon" resultMap="UserCouponResult"> @@ -42,8 +43,8 @@ <if test="sendTimeType != null "> and send_time_type = #{sendTimeType}</if> <if test="sendTime != null "> and send_time = #{sendTime}</if> <if test="moneyThreshold != null "> and money_threshold = #{moneyThreshold}</if> - <if test="dicountMoney != null "> and dicount_money = #{dicountMoney}</if> - <if test="discoutPercent != null "> and discout_percent = #{discoutPercent}</if> + <if test="discountMoney != null "> and discount_money = #{discountMoney}</if> + <if test="discountPercent != null "> and discount_percent = #{discountPercent}</if> <if test="useScope != null "> and use_scope = #{useScope}</if> <if test="validTimeType != null "> and valid_time_type = #{validTimeType}</if> <if test="validStartTime != null "> and valid_start_time = #{validStartTime}</if> @@ -52,6 +53,7 @@ <if test="receiveTime != null "> and receive_time = #{receiveTime}</if> <if test="userTime != null "> and user_time = #{userTime}</if> <if test="deadlineTime != null "> and deadline_time = #{deadlineTime}</if> + <if test="relGoodsIds != null "> and rel_goods_ids = #{relGoodsIds}</if> </where> </select> @@ -73,8 +75,8 @@ <if test="sendTimeType != null">send_time_type,</if> <if test="sendTime != null">send_time,</if> <if test="moneyThreshold != null">money_threshold,</if> - <if test="dicountMoney != null">dicount_money,</if> - <if test="discoutPercent != null">discout_percent,</if> + <if test="discountMoney != null">discount_money,</if> + <if test="discountPercent != null">discount_percent,</if> <if test="useScope != null">use_scope,</if> <if test="validTimeType != null">valid_time_type,</if> <if test="validStartTime != null">valid_start_time,</if> @@ -83,6 +85,7 @@ <if test="receiveTime != null">receive_time,</if> <if test="userTime != null">user_time,</if> <if test="deadlineTime != null">deadline_time,</if> + <if test="relGoodsIds != null ">rel_goods_ids,</if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="delFlag != null">#{delFlag},</if> @@ -95,8 +98,8 @@ <if test="sendTimeType != null">#{sendTimeType},</if> <if test="sendTime != null">#{sendTime},</if> <if test="moneyThreshold != null">#{moneyThreshold},</if> - <if test="dicountMoney != null">#{dicountMoney},</if> - <if test="discoutPercent != null">#{discoutPercent},</if> + <if test="discountMoney != null">#{discountMoney},</if> + <if test="discountPercent != null">#{discountPercent},</if> <if test="useScope != null">#{useScope},</if> <if test="validTimeType != null">#{validTimeType},</if> <if test="validStartTime != null">#{validStartTime},</if> @@ -105,6 +108,7 @@ <if test="receiveTime != null">#{receiveTime},</if> <if test="userTime != null">#{userTime},</if> <if test="deadlineTime != null">#{deadlineTime},</if> + <if test="relGoodsIds != null ">#{relGoodsIds},</if> </trim> </insert> @@ -121,8 +125,8 @@ <if test="sendTimeType != null">send_time_type = #{sendTimeType},</if> <if test="sendTime != null">send_time = #{sendTime},</if> <if test="moneyThreshold != null">money_threshold = #{moneyThreshold},</if> - <if test="dicountMoney != null">dicount_money = #{dicountMoney},</if> - <if test="discoutPercent != null">discout_percent = #{discoutPercent},</if> + <if test="discountMoney != null">discount_money = #{discountMoney},</if> + <if test="discountPercent != null">discount_percent = #{discountPercent},</if> <if test="useScope != null">use_scope = #{useScope},</if> <if test="validTimeType != null">valid_time_type = #{validTimeType},</if> <if test="validStartTime != null">valid_start_time = #{validStartTime},</if> @@ -131,6 +135,7 @@ <if test="receiveTime != null">receive_time = #{receiveTime},</if> <if test="userTime != null">user_time = #{userTime},</if> <if test="deadlineTime != null">deadline_time = #{deadlineTime},</if> + <if test="relGoodsIds != null "> and rel_goods_ids = #{relGoodsIds},</if> </trim> where id = #{id} </update> @@ -146,4 +151,20 @@ </foreach> </delete> + <select id="listVoUserCouponByUserId" resultType="com.ruoyi.system.api.domain.vo.AppUserCouponVo"> + SELECT + tuc.id userCouponId, + tuc.coupon_type couponType, + tuc.coupon_name couponName, + tuc.money_threshold moneyThreshold, + tuc.discount_money discountMoney, + tuc.discount_percent discountPercent, + tuc.valid_start_time validStartTime, + tuc.deadline_time deadlineTime, + tuc.rel_goods_ids relGoodsIds + FROM t_user_coupon tuc + WHERE tuc.del_flag = 1 AND tuc.coupon_status = 1 AND tuc.coupon_type IN (1,2,3) + ORDER BY tuc.receive_time + </select> + </mapper> diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/RuoYiSystemApplication.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/RuoYiOrderApplication.java similarity index 86% rename from ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/RuoYiSystemApplication.java rename to ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/RuoYiOrderApplication.java index 8c7b25b..f3fb787 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/RuoYiSystemApplication.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/RuoYiOrderApplication.java @@ -15,12 +15,12 @@ @EnableCustomSwagger2 @EnableRyFeignClients @SpringBootApplication -public class RuoYiSystemApplication +public class RuoYiOrderApplication { public static void main(String[] args) { - SpringApplication.run(RuoYiSystemApplication.class, args); - System.out.println("(♥◠‿◠)ノ゙ 系统模块启动成功 ლ(´ڡ`ლ)゙ \n" + + SpringApplication.run(RuoYiOrderApplication.class, args); + System.out.println("(♥◠‿◠)ノ゙ 订单模块启动成功 ლ(´ڡ`ლ)゙ \n" + " .-------. ____ __ \n" + " | _ _ \\ \\ \\ / / \n" + " | ( ' ) | \\ _. / ' \n" + diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppGoodsController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppGoodsController.java index cb12e94..9fa1445 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppGoodsController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppGoodsController.java @@ -1,6 +1,7 @@ package com.ruoyi.order.controller.miniapp; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.domain.dto.AppBaseBathDto; import com.ruoyi.order.domain.dto.AppGoodsInfoGetDto; @@ -29,8 +30,8 @@ */ @Api(value = "小程序商品相关接口", tags = "小程序商品相关接口", description = "小程序商品相关接口") @RestController -@RequestMapping("/app/home") -public class AppGoodsController { +@RequestMapping("/app/goods") +public class AppGoodsController extends BaseController { @Autowired private GoodsService goodsService; @@ -96,4 +97,7 @@ shoppingCartService.deleteShoppingCart(appBaseBathDto); return R.ok(); } + + + } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppHomeController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppHomeController.java index 66e954c..6f7675c 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppHomeController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppHomeController.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.domain.dto.AppPageDto; import com.ruoyi.order.domain.dto.AppSearchGoodsPageDto; @@ -31,7 +32,7 @@ @Api(value = "小程序首页相关接口", tags = "小程序首页相关接口", description = "小程序首页相关接口") @RestController @RequestMapping("/app/home") -public class AppHomeController { +public class AppHomeController extends BaseController { @Autowired diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java new file mode 100644 index 0000000..2d03e87 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java @@ -0,0 +1,55 @@ +package com.ruoyi.order.controller.miniapp; + +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.order.domain.dto.AppBuyGoodsDto; +import com.ruoyi.order.domain.dto.AppSureOrderDto; +import com.ruoyi.order.domain.vo.AppSureOrderVo; +import com.ruoyi.order.service.order.OrderService; +import com.ruoyi.system.api.RemoteMemberService; +import com.ruoyi.system.api.domain.poji.member.Member; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author jqs34 + * @version 1.0 + * @classname AppOrderController + * @description: TODO + * @date 2023 2023/5/2 20:47 + */ +@Api(value = "小程序订单相关接口", tags = "小程序订单相关接口", description = "小程序订单相关接口") +@RestController +@RequestMapping("/app/order") +public class AppOrderController extends BaseController { + + @Autowired + private RemoteMemberService memberService; + + @Autowired + private OrderService orderService; + + + @RequestMapping(value = "/buyGoods", method = RequestMethod.POST) + @ApiOperation(value = "购买商品") + public R<AppSureOrderVo> buyGoods(@RequestBody AppSureOrderDto appSureOrderDto) { + Long userId = SecurityUtils.getUserId(); + if(userId!=null){ + Member member = memberService.getMember(userId).getData(); + appSureOrderDto.setUserId(userId); + if(member!=null&&member.getRealtionShopId()!=null){ + appSureOrderDto.setShopId(member.getRealtionShopId()); + } + } + AppSureOrderVo appSureOrderVo = orderService.buyGoods(appSureOrderDto); + return R.ok(appSureOrderVo); + } + + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppBuyGoodsDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppBuyGoodsDto.java new file mode 100644 index 0000000..9114c9e --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppBuyGoodsDto.java @@ -0,0 +1,27 @@ +package com.ruoyi.order.domain.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author jqs34 + * @version 1.0 + * @classname AppBuyNowDto + * @description: TODO + * @date 2023 2023/5/2 20:52 + */ + +@Data +public class AppBuyGoodsDto extends AppBaseDto{ + + + @ApiModelProperty(value = "商品id") + private String goodsId; + + @ApiModelProperty(value = "购买数量") + private Integer buyNum; + + @ApiModelProperty(value = "用户优惠券id") + private Long userCouponId; + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppSureOrderDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppSureOrderDto.java new file mode 100644 index 0000000..08ded3e --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppSureOrderDto.java @@ -0,0 +1,24 @@ +package com.ruoyi.order.domain.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author jqs34 + * @version 1.0 + * @classname AppShoppingcartDto + * @description: TODO + * @date 2023 2023/5/2 20:54 + */ +@Data +public class AppSureOrderDto extends AppBaseDto{ + + @ApiModelProperty(value = "shopId",hidden = true) + private Long shopId; + + @ApiModelProperty(value = "购物车列表") + List<AppBuyGoodsDto> appBuyGoodsDtoList; + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderGoodsVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderGoodsVo.java new file mode 100644 index 0000000..d754808 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderGoodsVo.java @@ -0,0 +1,62 @@ +package com.ruoyi.order.domain.vo; + +import com.ruoyi.system.api.domain.vo.AppUserCouponVo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author jqs34 + * @version 1.0 + * @classname AppSureOrderGoodsVo + * @description: TODO + * @date 2023 2023/5/2 21:07 + */ +@Data +public class AppSureOrderGoodsVo { + + @ApiModelProperty(value = "商品id") + private String goodsId; + + @ApiModelProperty(value = "商品名称") + private String goodsName; + + @ApiModelProperty(value = "商品简介") + private String goodsIntroduction; + + @ApiModelProperty(value = "商品类型1周期2服务3体验4单品") + private Integer goodsType; + + @ApiModelProperty(value = "商品图片") + private String goodsPicture; + + @ApiModelProperty(value = "购买数量") + private Integer buyNum; + + @ApiModelProperty(value = "优惠券id") + private Long userCouponId; + + @ApiModelProperty(value = "商品售价") + private BigDecimal goodsPrice; + + @ApiModelProperty(value = "商品总价") + private BigDecimal goodsTotalPrice; + + @ApiModelProperty(value = "商品订金") + private BigDecimal goodsDeposit; + + @ApiModelProperty(value = "是否计算优惠券0否1是") + private Integer useCoupon; + + @ApiModelProperty(value = "优惠券抵扣") + private BigDecimal couponDiscount; + + @ApiModelProperty(value = "商品实际价格") + private BigDecimal goodsRealPrice; + + @ApiModelProperty(value = "优惠券列表") + private List<AppUserCouponVo> appUserCouponVoList; + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderVo.java new file mode 100644 index 0000000..a13e254 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppSureOrderVo.java @@ -0,0 +1,39 @@ +package com.ruoyi.order.domain.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author jqs34 + * @version 1.0 + * @classname AppSureOrderVo + * @description: TODO + * @date 2023 2023/5/2 20:57 + */ +@Data +public class AppSureOrderVo { + + + @ApiModelProperty(value = "商品总价") + private BigDecimal orderGoodsMoney; + + @ApiModelProperty(value = "优惠券抵扣") + private BigDecimal couponDiscount; + + @ApiModelProperty(value = "订单支付订金") + private BigDecimal orderPayDeposit; + + @ApiModelProperty(value = "订单支付金额") + private BigDecimal orderPayMoney; + + @ApiModelProperty(value = "订单商品列表") + List<AppSureOrderGoodsVo> appSureOrderGoodsVoList; + + + + + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/goods/GoodsFileService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/goods/GoodsFileService.java index 566518f..720c428 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/goods/GoodsFileService.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/goods/GoodsFileService.java @@ -3,6 +3,8 @@ import com.ruoyi.order.domain.pojo.goods.GoodsFile; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * <p> * 商品图片 服务类 @@ -13,4 +15,19 @@ */ public interface GoodsFileService extends IService<GoodsFile> { + /** + * @description: TODO + * @author jqs34 + * @date 2023/5/3 2:15 + * @version 1.0 + */ + GoodsFile getGoodsPicture(String goodsId); + + /** + * @description: TODO + * @author jqs34 + * @date 2023/5/3 2:06 + * @version 1.0 + */ + List<GoodsFile> listByGoodsId(String goodsId); } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/goods/GoodsFileServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/goods/GoodsFileServiceImpl.java index 64002a4..b0b2c6d 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/goods/GoodsFileServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/goods/GoodsFileServiceImpl.java @@ -1,11 +1,17 @@ package com.ruoyi.order.service.impl.goods; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.order.domain.pojo.goods.GoodsFile; +import com.ruoyi.order.domain.pojo.order.ShoppingCart; import com.ruoyi.order.mapper.goods.GoodsFileMapper; import com.ruoyi.order.service.goods.GoodsFileService; import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; /** * <p> @@ -18,4 +24,35 @@ @Service public class GoodsFileServiceImpl extends ServiceImpl<GoodsFileMapper, GoodsFile> implements GoodsFileService { + @Resource + private GoodsFileMapper goodsFileMapper; + + + /** + * @description: TODO + * @author jqs34 + * @date 2023/5/3 2:14 + * @version 1.0 + */ + @Override + public GoodsFile getGoodsPicture(String goodsId){ + LambdaQueryWrapper<GoodsFile> queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(GoodsFile::getDelFlag, 0).eq(GoodsFile::getGoodsId, goodsId).eq(GoodsFile::getFileType,1); + GoodsFile goodsFile = this.getOne(queryWrapper); + return goodsFile; + } + + /** + * @description: TODO + * @author jqs34 + * @date 2023/5/3 2:05 + * @version 1.0 + */ + @Override + public List<GoodsFile> listByGoodsId(String goodsId){ + LambdaQueryWrapper<GoodsFile> queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(GoodsFile::getDelFlag, 0).eq(GoodsFile::getGoodsId, goodsId); + List<GoodsFile> goodsFileList = this.list(queryWrapper); + return goodsFileList; + } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/goods/GoodsServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/goods/GoodsServiceImpl.java index ee749d1..aef9a75 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/goods/GoodsServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/goods/GoodsServiceImpl.java @@ -6,12 +6,14 @@ import com.ruoyi.order.domain.dto.AppSearchGoodsPageDto; import com.ruoyi.order.domain.dto.AppShopGoodsPageDto; import com.ruoyi.order.domain.pojo.goods.Goods; +import com.ruoyi.order.domain.pojo.goods.GoodsFile; import com.ruoyi.order.domain.pojo.goods.ShopGoods; import com.ruoyi.order.domain.vo.AppGoodsInfoVo; import com.ruoyi.order.domain.vo.AppSimpleActivityGoodsVo; import com.ruoyi.order.domain.vo.AppSimpleGoodsVo; import com.ruoyi.order.mapper.goods.GoodsMapper; import com.ruoyi.order.service.activity.ActivityGoodsService; +import com.ruoyi.order.service.goods.GoodsFileService; import com.ruoyi.order.service.goods.GoodsService; import com.ruoyi.order.service.goods.ShopGoodsService; import com.ruoyi.system.api.RemoteActivityService; @@ -22,6 +24,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.util.List; +import java.util.StringJoiner; /** * <p> @@ -42,6 +45,9 @@ @Resource private ShopGoodsService shopGoodsService; + + @Resource + private GoodsFileService goodsFileService; /** * 获取推荐商品列表 @@ -139,6 +145,21 @@ }else{ appGoodsInfoVo.setActivityFlag(0); } + //商品图片 + List<GoodsFile> goodsFileList = goodsFileService.listByGoodsId(goods.getGoodsId()); + StringJoiner bannerSJ = new StringJoiner(","); + if(goodsFileList!=null&&!goodsFileList.isEmpty()){ + for(GoodsFile goodsFile : goodsFileList){ + if(goodsFile.getFileType()==2){ + appGoodsInfoVo.setGoodsVideo(goodsFile.getFileUrl()); + }else if(goodsFile.getFileType()==3){ + bannerSJ.add(goodsFile.getFileUrl()); + } + } + if(bannerSJ!=null&&bannerSJ.length()>0){ + appGoodsInfoVo.setGoodsBanners(bannerSJ.toString()); + } + } return appGoodsInfoVo; } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java index 736d713..fbc8e48 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java @@ -2,10 +2,32 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.order.domain.dto.AppBuyGoodsDto; +import com.ruoyi.order.domain.dto.AppSureOrderDto; +import com.ruoyi.order.domain.pojo.goods.Goods; +import com.ruoyi.order.domain.pojo.goods.GoodsFile; +import com.ruoyi.order.domain.pojo.goods.ShopGoods; import com.ruoyi.order.domain.pojo.order.Order; +import com.ruoyi.order.domain.vo.AppSureOrderGoodsVo; +import com.ruoyi.order.domain.vo.AppSureOrderVo; +import com.ruoyi.order.service.goods.GoodsFileService; +import com.ruoyi.order.service.goods.ShopGoodsService; +import com.ruoyi.system.api.RemoteMemberService; +import com.ruoyi.system.api.domain.vo.AppUserCouponVo; import com.ruoyi.order.mapper.order.OrderMapper; +import com.ruoyi.order.service.goods.GoodsService; import com.ruoyi.order.service.order.OrderService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; /** * <p> @@ -18,4 +40,138 @@ @Service public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService { + @Resource + private OrderMapper orderMapper; + + @Resource + private GoodsService goodsService; + + @Resource + private ShopGoodsService shopGoodsService; + + @Autowired + private RemoteMemberService remoteMemberService; + + @Autowired + private GoodsFileService goodsFileService; + /** + * @description: buyGoods + * @param: appSureOrderDto + * @return: AppSureOrderVo + * @author jqs34 + * @date: 2023/5/3 0:07 + */ + @Override + public AppSureOrderVo buyGoods(AppSureOrderDto appSureOrderDto){ + Long userId = appSureOrderDto.getUserId(); + AppSureOrderVo appSureOrderVo = new AppSureOrderVo(); + List<AppSureOrderGoodsVo> appSureOrderGoodsVoList = new ArrayList<>(); + AppSureOrderGoodsVo appSureOrderGoodsVo; + List<AppBuyGoodsDto> appBuyGoodsDtoList = appSureOrderDto.getAppBuyGoodsDtoList(); + String goodsId; + Integer buyNum; + BigDecimal buyNumBig; + Long userCouponId; + Goods goods; + BigDecimal goodsPrice; + BigDecimal goodsTotalPrice; + BigDecimal goodsRealPrice; + List<AppUserCouponVo> appUserCouponVoList = remoteMemberService.listVoUserCouponByUserId(userId).getData(); + List<AppUserCouponVo> appGoodsUserCouponVoList; + Map<Long,AppUserCouponVo> appUserCouponVoMap = appUserCouponVoList.stream().collect(Collectors.toMap(AppUserCouponVo::getUserCouponId, Function.identity())); + AppUserCouponVo appUserCouponVo; + Integer couponType; + BigDecimal moneyThreshold; + BigDecimal discountMoney = new BigDecimal("0.00"); + BigDecimal discountPercent; + BigDecimal goodsDeposit; + GoodsFile goodsFile; + Integer useCoupon; + BigDecimal orderGoodsMoney = new BigDecimal("0.00"); + BigDecimal couponDiscount = new BigDecimal("0.00"); + BigDecimal orderPayDeposit = new BigDecimal("0.00"); + BigDecimal orderPayMoney = new BigDecimal("0.00"); + for(AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList){ + appSureOrderGoodsVo = new AppSureOrderGoodsVo(); + useCoupon = 0; + goodsId = appBuyGoodsDto.getGoodsId(); + buyNum = appBuyGoodsDto.getBuyNum(); + userCouponId = appBuyGoodsDto.getUserCouponId(); + goods = goodsService.getById(goodsId); + appSureOrderGoodsVo.setGoodsId(goodsId); + appSureOrderGoodsVo.setGoodsName(goods.getGoodsName()); + appSureOrderGoodsVo.setGoodsIntroduction(goods.getGoodsIntroduction()); + appSureOrderGoodsVo.setGoodsType(goods.getGoodsType()); + //商品图片 + goodsFile = goodsFileService.getGoodsPicture(goodsId); + appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl()); + buyNum = appBuyGoodsDto.getBuyNum(); + appSureOrderGoodsVo.setBuyNum(buyNum); + goodsPrice = goods.getSalesPrice(); + //商户定制价格 + ShopGoods shopGoods = shopGoodsService.getByShopIdAndGoodsId(appSureOrderDto.getShopId(),goods.getGoodsId()); + if(shopGoods!=null){ + goodsPrice = shopGoods.getSalesPrice(); + } + appSureOrderGoodsVo.setGoodsPrice(goodsPrice); + buyNumBig = BigDecimal.valueOf(buyNum); + goodsTotalPrice = goodsPrice.multiply(buyNumBig); + goodsRealPrice = goodsTotalPrice; + if(userCouponId!=null){ + appUserCouponVo = appUserCouponVoMap.get(userCouponId); + if(StringUtils.isBlank(appUserCouponVo.getRelGoodsIds()) || appUserCouponVo.getRelGoodsIds().contains(goodsId)){ + couponType = appUserCouponVo.getCouponType(); + if(couponType == 1 && appUserCouponVo.getMoneyThreshold()!=null && appUserCouponVo.getDiscountMoney()!=null){ + moneyThreshold = appUserCouponVo.getMoneyThreshold(); + if(goodsTotalPrice.compareTo(moneyThreshold)>=0){ + discountMoney = appUserCouponVo.getDiscountMoney(); + goodsRealPrice = goodsTotalPrice.subtract(discountMoney); + useCoupon = 1; + } + }else if(couponType == 2 && appUserCouponVo.getDiscountPercent()!=null){ + discountPercent = appUserCouponVo.getDiscountPercent(); + goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN).setScale(2,BigDecimal.ROUND_HALF_UP); + discountMoney = goodsRealPrice.subtract(goodsTotalPrice); + useCoupon = 1; + }else if(couponType == 3 && appUserCouponVo.getDiscountMoney()!=null){ + discountMoney = appUserCouponVo.getDiscountMoney(); + goodsRealPrice = goodsTotalPrice.subtract(discountMoney); + useCoupon = 1; + } + } + } + appSureOrderGoodsVo.setUseCoupon(useCoupon); + appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice); + appSureOrderGoodsVo.setCouponDiscount(discountMoney); + appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice); + goodsDeposit = goods.getSubscription(); + if(goodsDeposit == null){ + goodsDeposit = new BigDecimal("0.00"); + } + appSureOrderGoodsVo.setGoodsDeposit(goodsDeposit); + orderGoodsMoney = orderGoodsMoney.add(goodsTotalPrice); + couponDiscount = couponDiscount.add(discountMoney); + orderPayDeposit = orderPayDeposit.add(goodsDeposit); + orderPayMoney = orderPayMoney.add(goodsRealPrice); + //商品关联优惠券 + appGoodsUserCouponVoList = new ArrayList<>(); + if(appUserCouponVoList!=null && !appUserCouponVoList.isEmpty()){ + for(AppUserCouponVo entity : appUserCouponVoList){ + if(StringUtils.isBlank(entity.getRelGoodsIds())){ + appGoodsUserCouponVoList.add(entity); + }else if(entity.getRelGoodsIds().contains(goodsId)){ + appGoodsUserCouponVoList.add(entity); + } + } + appSureOrderGoodsVo.setAppUserCouponVoList(appGoodsUserCouponVoList); + } + appSureOrderGoodsVoList.add(appSureOrderGoodsVo); + } + appSureOrderVo.setOrderGoodsMoney(orderGoodsMoney); + appSureOrderVo.setCouponDiscount(couponDiscount); + appSureOrderVo.setOrderPayDeposit(orderPayDeposit); + appSureOrderVo.setOrderPayMoney(orderPayMoney); + appSureOrderVo.setAppSureOrderGoodsVoList(appSureOrderGoodsVoList); + return appSureOrderVo; + } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java index 39f1a94..16005bf 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java @@ -1,7 +1,9 @@ package com.ruoyi.order.service.order; +import com.ruoyi.order.domain.dto.AppSureOrderDto; import com.ruoyi.order.domain.pojo.order.Order; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.order.domain.vo.AppSureOrderVo; /** * <p> @@ -13,4 +15,12 @@ */ public interface OrderService extends IService<Order> { + /** + * @description: buyGoods + * @param: appSureOrderDto + * @return: AppSureOrderVo + * @author jqs34 + * @date: 2023/5/3 0:31 + */ + AppSureOrderVo buyGoods(AppSureOrderDto appSureOrderDto); } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/RuoYiSystemApplication.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/RuoYiShopApplication.java similarity index 86% rename from ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/RuoYiSystemApplication.java rename to ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/RuoYiShopApplication.java index 3f8d140..65c3ebb 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/RuoYiSystemApplication.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/RuoYiShopApplication.java @@ -15,12 +15,12 @@ @EnableCustomSwagger2 @EnableRyFeignClients @SpringBootApplication -public class RuoYiSystemApplication +public class RuoYiShopApplication { public static void main(String[] args) { - SpringApplication.run(RuoYiSystemApplication.class, args); - System.out.println("(♥◠‿◠)ノ゙ 系统模块启动成功 ლ(´ڡ`ლ)゙ \n" + + SpringApplication.run(RuoYiShopApplication.class, args); + System.out.println("(♥◠‿◠)ノ゙ 商户模块启动成功 ლ(´ڡ`ლ)゙ \n" + " .-------. ____ __ \n" + " | _ _ \\ \\ \\ / / \n" + " | ( ' ) | \\ _. / ' \n" + diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/coupon/Coupon.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/coupon/Coupon.java index b36ee0b..4715b1c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/coupon/Coupon.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/coupon/Coupon.java @@ -76,13 +76,13 @@ /** * 折扣金额 */ - @TableField("dicount_money") - private BigDecimal dicountMoney; + @TableField("discount_money") + private BigDecimal discountMoney; /** * 折扣百分比 */ - @TableField("discout_percent") - private BigDecimal discoutPercent; + @TableField("discount_percent") + private BigDecimal discountPercent; /** * 使用范围1.全场2.指定商品 */ diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/coupon/CouponMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/coupon/CouponMapper.xml index e0b785e..6883903 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/coupon/CouponMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/coupon/CouponMapper.xml @@ -12,8 +12,8 @@ <result property="sendTimeType" column="send_time_type" /> <result property="sendTime" column="send_time" /> <result property="moneyThreshold" column="money_threshold" /> - <result property="dicountMoney" column="dicount_money" /> - <result property="discoutPercent" column="discout_percent" /> + <result property="discountMoney" column="discount_money" /> + <result property="discountPercent" column="discount_percent" /> <result property="useScope" column="use_scope" /> <result property="validTimeType" column="valid_time_type" /> <result property="validStartTime" column="valid_start_time" /> @@ -26,7 +26,7 @@ </resultMap> <sql id="selectCouponVo"> - select coupon_id, del_flag, coupon_type, coupon_status, coupon_name, send_type, send_time_type, send_time, money_threshold, dicount_money, discout_percent, use_scope, valid_time_type, valid_start_time, valid_end_time, valid_day, create_time, create_user_id, update_time, update_user_id from t_coupon + select coupon_id, del_flag, coupon_type, coupon_status, coupon_name, send_type, send_time_type, send_time, money_threshold, discount_money, discount_percent, use_scope, valid_time_type, valid_start_time, valid_end_time, valid_day, create_time, create_user_id, update_time, update_user_id from t_coupon </sql> <select id="selectCouponList" parameterType="Coupon" resultMap="CouponResult"> @@ -39,8 +39,8 @@ <if test="sendTimeType != null "> and send_time_type = #{sendTimeType}</if> <if test="sendTime != null "> and send_time = #{sendTime}</if> <if test="moneyThreshold != null "> and money_threshold = #{moneyThreshold}</if> - <if test="dicountMoney != null "> and dicount_money = #{dicountMoney}</if> - <if test="discoutPercent != null "> and discout_percent = #{discoutPercent}</if> + <if test="discountMoney != null "> and discount_money = #{discountMoney}</if> + <if test="discountPercent != null "> and discount_percent = #{discountPercent}</if> <if test="useScope != null "> and use_scope = #{useScope}</if> <if test="validTimeType != null "> and valid_time_type = #{validTimeType}</if> <if test="validStartTime != null "> and valid_start_time = #{validStartTime}</if> @@ -68,8 +68,8 @@ <if test="sendTimeType != null">send_time_type,</if> <if test="sendTime != null">send_time,</if> <if test="moneyThreshold != null">money_threshold,</if> - <if test="dicountMoney != null">dicount_money,</if> - <if test="discoutPercent != null">discout_percent,</if> + <if test="discountMoney != null">discount_money,</if> + <if test="discountPercent != null">discount_percent,</if> <if test="useScope != null">use_scope,</if> <if test="validTimeType != null">valid_time_type,</if> <if test="validStartTime != null">valid_start_time,</if> @@ -90,8 +90,8 @@ <if test="sendTimeType != null">#{sendTimeType},</if> <if test="sendTime != null">#{sendTime},</if> <if test="moneyThreshold != null">#{moneyThreshold},</if> - <if test="dicountMoney != null">#{dicountMoney},</if> - <if test="discoutPercent != null">#{discoutPercent},</if> + <if test="discountMoney != null">#{discountMoney},</if> + <if test="discountPercent != null">#{discountPercent},</if> <if test="useScope != null">#{useScope},</if> <if test="validTimeType != null">#{validTimeType},</if> <if test="validStartTime != null">#{validStartTime},</if> @@ -115,8 +115,8 @@ <if test="sendTimeType != null">send_time_type = #{sendTimeType},</if> <if test="sendTime != null">send_time = #{sendTime},</if> <if test="moneyThreshold != null">money_threshold = #{moneyThreshold},</if> - <if test="dicountMoney != null">dicount_money = #{dicountMoney},</if> - <if test="discoutPercent != null">discout_percent = #{discoutPercent},</if> + <if test="discountMoney != null">discount_money = #{discountMoney},</if> + <if test="discountPercent != null">discount_percent = #{discountPercent},</if> <if test="useScope != null">use_scope = #{useScope},</if> <if test="validTimeType != null">valid_time_type = #{validTimeType},</if> <if test="validStartTime != null">valid_start_time = #{validStartTime},</if> -- Gitblit v1.7.1