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