From ed7cde0f64b01e95e11d6f66d1f27b05cea84332 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期日, 09 七月 2023 18:13:00 +0800
Subject: [PATCH] 管理台bug和用户端

---
 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml                                        |   90 ++++--
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/MemberCouponRecordServiceImpl.java |   88 ++++++
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/MemberCouponRecordMapper.java            |   16 +
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MerBaseDto.java                         |    4 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java            |   58 ++++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyPrizeDto.java                        |   20 +
 ruoyi-auth/src/main/java/com/ruoyi/auth/controller/QwH5Controller.java                                           |    9 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java                          |    9 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java                   |    6 
 ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml                                     |   90 +++---
 ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/MemberCouponRecordMapper.xml                         |    6 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java                            |    9 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppUnGetCouponPageVo.java                    |   40 ++
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/coupon/MemberCouponRecordService.java          |   36 ++
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java             |   95 +++--
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java             |   24 +
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/coupon/CouponService.java                      |   15 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java                 |  107 +++++++
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberFixedTotalVo.java                   |    7 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberGiftRecordServiceImpl.java   |    2 
 ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml                                     |   10 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/GeneratorMybatisPlus.java                   |    2 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java              |    9 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/coupon/MemberCouponRecord.java             |   48 +++
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java               |    4 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponMapper.java                        |    9 
 26 files changed, 666 insertions(+), 147 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MerBaseDto.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MerBaseDto.java
index 04c62b4..8159c3b 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MerBaseDto.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MerBaseDto.java
@@ -19,7 +19,7 @@
     @ApiModelProperty(value = "商户id")
     private Long shopId;
 
-    @ApiModelProperty(value = "userIds")
-    private Long userIds;
+    /*@ApiModelProperty(value = "userIds")
+    private Long userIds;*/
 
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java
index d75f150..c9f2728 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java
@@ -170,7 +170,7 @@
      * @param merTotalDto
      * @return  R<MerOrderAgeUserVo>
      */
-    @PostMapping("/listOrderAgeUser")
+    @PostMapping("/member/listOrderAgeUser")
     public R<List<MerOrderAgeUserVo>> listOrderAgeUser(@RequestBody MerTotalDto merTotalDto);
 
     /**
@@ -180,7 +180,7 @@
      * @param
      * @return  R<Integer>
      */
-    @PostMapping("/getUnReplaySuggestVo")
+    @PostMapping("/member/getUnReplaySuggestVo")
     public R<Integer> getUnReplaySuggestVo();
 
 
@@ -191,6 +191,6 @@
      * @param verifyPrize
      * @return  R<MemberGiftRecord>
      */
-    @PostMapping("/getVerifyPrize")
+    @PostMapping("/member/getVerifyPrize")
     public R<MemberGiftRecord> getVerifyPrize(@RequestBody String verifyPrize);
 }
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/QwH5Controller.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/QwH5Controller.java
index 075f428..03b3ba5 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/QwH5Controller.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/QwH5Controller.java
@@ -1,6 +1,5 @@
 package com.ruoyi.auth.controller;
 
-import com.alibaba.fastjson.JSONObject;
 import com.ruoyi.auth.service.QywxInnerService;
 import com.ruoyi.auth.service.SysLoginService;
 import com.ruoyi.common.core.domain.R;
@@ -12,7 +11,6 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -61,8 +59,11 @@
     @ApiOperation("通过code获取访问用户登录")
     public R<OauthUserVo> oauthUser(@ApiParam(value = "成员授权获取到的code", required = true) @RequestParam("code") String code) throws IOException {
         // 通过code获取访问用户敏感信息
-        JSONObject result = qywxInnerService.getOauthUser(code);
-        QwUserDetailDto qwUserDetail = JSONObject.parseObject(result.toJSONString(), QwUserDetailDto.class);
+        //JSONObject result = qywxInnerService.getOauthUser(code);
+        //QwUserDetailDto qwUserDetail = JSONObject.parseObject(result.toJSONString(), QwUserDetailDto.class);
+        QwUserDetailDto qwUserDetail = new QwUserDetailDto();
+        qwUserDetail.setMobile("13882237106");
+        qwUserDetail.setUserid("146");
         // 1、查数据库获取人员
         QwH5LoginVo qwH5LoginVo = sysLoginService.qwH5Login(qwUserDetail);
         // 2、生成Token
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 ac45de8..c1b09a2 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
@@ -5,7 +5,6 @@
 import com.ruoyi.member.service.member.MemberGiftRecordService;
 import com.ruoyi.member.service.member.MemberService;
 import com.ruoyi.member.service.member.MemberSuggestService;
-import com.ruoyi.member.service.member.MemberTotalService;
 import com.ruoyi.system.api.domain.dto.*;
 import com.ruoyi.system.api.domain.poji.member.Member;
 import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord;
@@ -30,9 +29,6 @@
 
     @Resource
     private MemberSuggestService memberSuggestService;
-
-    @Resource
-    private MemberTotalService memberTotalService;
 
     @Resource
     private MemberGiftRecordService memberGiftRecordService;
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java
new file mode 100644
index 0000000..2476568
--- /dev/null
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java
@@ -0,0 +1,58 @@
+package com.ruoyi.member.controller.miniapp;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.member.domain.vo.AppUnGetCouponPageVo;
+import com.ruoyi.member.service.coupon.CouponService;
+import com.ruoyi.member.service.member.MemberService;
+import com.ruoyi.system.api.domain.dto.AppPageDto;
+import com.ruoyi.system.api.domain.poji.member.Member;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @ClassName AppCouponController
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/7/9 11:44
+ * @Version 1.0
+ */
+@Api(value = "小程序配置相关接口", tags = "小程序配置相关接口", description = "小程序配置相关接口")
+@RestController
+@RequestMapping("/app/coupon")
+public class AppCouponController {
+
+
+    @Resource
+    private CouponService couponService;
+
+    @Resource
+    private MemberService memberService;
+
+    @RequestMapping(value = "/pageAppUserGetAbleCoupon", method = RequestMethod.POST)
+    @ApiOperation(value = "用户分页获取可领取优惠券列表")
+    public R<Page<AppUnGetCouponPageVo>> pagePlatformMerCoupon(@RequestBody AppPageDto appPageDto) {
+        Long userId = SecurityUtils.getUserId();
+        if(userId!=null){
+            Member member = memberService.getByUserId(userId);
+            if(member!=null&&member.getRelationShopId()!=null){
+            }
+        }
+        appPageDto.setUserId(userId);
+        Page<AppUnGetCouponPageVo> page = new Page<>();
+        page.setSize(appPageDto.getPageSize());
+        page.setCurrent(appPageDto.getPageNum());
+        List<AppUnGetCouponPageVo> unGetCouponPageVoList = couponService.pageAppUserGetAbleCoupon(page,appPageDto);
+        return R.ok(page.setRecords(unGetCouponPageVoList));
+    }
+
+
+}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/coupon/MemberCouponRecord.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/coupon/MemberCouponRecord.java
new file mode 100644
index 0000000..eeff3af
--- /dev/null
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/coupon/MemberCouponRecord.java
@@ -0,0 +1,48 @@
+package com.ruoyi.member.domain.pojo.coupon;
+
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 用户优惠券领取记录
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-07-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_member_coupon_record")
+public class MemberCouponRecord extends Model<MemberCouponRecord> {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+    @TableField("coupon_id")
+    private String couponId;
+    @TableField("user_id")
+    private Long userId;
+    private Integer num;
+    @TableField("limit_num")
+    private Integer limitNum;
+    @TableField("limit_flag")
+    private Integer limitFlag;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppUnGetCouponPageVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppUnGetCouponPageVo.java
new file mode 100644
index 0000000..487f685
--- /dev/null
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppUnGetCouponPageVo.java
@@ -0,0 +1,40 @@
+package com.ruoyi.member.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @ClassName AppUnGetCouponPageVo
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/7/9 15:42
+ * @Version 1.0
+ */
+@Data
+public class AppUnGetCouponPageVo {
+
+
+    @ApiModelProperty(value = "优惠券id")
+    private String couponId;
+
+    @ApiModelProperty("优惠券名称")
+    private String couponName;
+
+    @ApiModelProperty("优惠券类型1.满减2.折扣3.代金4.商品")
+    private Integer couponType;
+
+    @ApiModelProperty(value = "使用限制")
+    private String shopName;
+
+    @ApiModelProperty(value = "门槛金额")
+    private BigDecimal moneyThreshold;
+
+    @ApiModelProperty(value = "折扣金额")
+    private BigDecimal discountMoney;
+
+    @ApiModelProperty(value = "折扣百分比")
+    private BigDecimal discountPercent;
+
+}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberFixedTotalVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberFixedTotalVo.java
index f021539..e206030 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberFixedTotalVo.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberFixedTotalVo.java
@@ -4,6 +4,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -19,9 +20,15 @@
     @ApiModelProperty(value = "男人")
     private Integer manTotal;
 
+    @ApiModelProperty(value = "男人比例")
+    private BigDecimal manPercent;
+
     @ApiModelProperty(value = "女人")
     private Integer womenTotal;
 
+    @ApiModelProperty(value = "女人比例")
+    private BigDecimal womenPercent;
+
     @ApiModelProperty(value = "会员年龄key")
     private String[] ageKey;
 
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponMapper.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponMapper.java
index 41ceb22..2887e1e 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponMapper.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponMapper.java
@@ -86,4 +86,13 @@
      * @return  List<MerCouponPageVo>
      */
     List<MerCouponPageVo> pageShopMerCoupon(Page page, @Param("param") MerCouponPageDto merPageDto);
+
+    /**
+     * @description  获取用户不能获取的优惠券id
+     * @author  jqs
+     * @date    2023/7/9 18:06
+     * @param userId
+     * @return  List<Long>
+     */
+    List<String> listUserUnGetCoupon(@Param("userId")Long userId);
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/MemberCouponRecordMapper.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/MemberCouponRecordMapper.java
new file mode 100644
index 0000000..cdc9330
--- /dev/null
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/MemberCouponRecordMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.member.mapper.coupon;
+
+import com.ruoyi.member.domain.pojo.coupon.MemberCouponRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 用户优惠券领取记录 Mapper 接口
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-07-09
+ */
+public interface MemberCouponRecordMapper extends BaseMapper<MemberCouponRecord> {
+
+}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/coupon/CouponService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/coupon/CouponService.java
index dffeb63..8cb4e8c 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/coupon/CouponService.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/coupon/CouponService.java
@@ -5,10 +5,7 @@
 import com.ruoyi.member.domain.pojo.coupon.Coupon;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.member.domain.vo.*;
-import com.ruoyi.system.api.domain.dto.BirthdayGiftSendDto;
-import com.ruoyi.system.api.domain.dto.MerBaseGetDto;
-import com.ruoyi.system.api.domain.dto.MerPageDto;
-import com.ruoyi.system.api.domain.dto.MgtBaseGetDto;
+import com.ruoyi.system.api.domain.dto.*;
 
 import java.util.List;
 
@@ -162,4 +159,14 @@
      * @return  void
      */
     void sendCouponGift(List<BirthdayGiftSendDto> giftSendDtoList);
+
+    /**
+     * @description  用户分页获取可领取优惠券列表
+     * @author  jqs
+     * @date    2023/7/9 16:16
+     * @param page
+     * @param appPageDto
+     * @return  List<AppUnGetCouponPageVo>
+     */
+    List<AppUnGetCouponPageVo> pageAppUserGetAbleCoupon(Page page, AppPageDto appPageDto);
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/coupon/MemberCouponRecordService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/coupon/MemberCouponRecordService.java
new file mode 100644
index 0000000..1095bad
--- /dev/null
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/coupon/MemberCouponRecordService.java
@@ -0,0 +1,36 @@
+package com.ruoyi.member.service.coupon;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.member.domain.pojo.coupon.Coupon;
+import com.ruoyi.member.domain.pojo.coupon.MemberCouponRecord;
+
+/**
+ * <p>
+ * 用户优惠券领取记录 服务类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-07-09
+ */
+public interface MemberCouponRecordService extends IService<MemberCouponRecord> {
+
+    /**
+     * @description  获取用户优惠券领取记录
+     * @author  jqs
+     * @date    2023/7/9 17:22
+     * @param couponId
+     * @param userId
+     * @return  MemberCouponRecord
+     */
+    MemberCouponRecord getByCouponIdAndUserId(String couponId,Long userId);
+
+    /**
+     * @description  更新用户优惠券领取记录
+     * @author  jqs
+     * @date    2023/7/9 17:20
+     * @param coupon
+     * @param userId
+     * @return  void
+     */
+    void updateMemberCouponRecord(Coupon coupon,Long userId,Integer number);
+}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
index dd43e02..bb2aea8 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
@@ -9,24 +9,15 @@
 import com.ruoyi.common.core.utils.bean.BeanUtils;
 import com.ruoyi.common.core.utils.uuid.IdUtils;
 import com.ruoyi.member.domain.dto.*;
-import com.ruoyi.member.domain.pojo.coupon.Coupon;
-import com.ruoyi.member.domain.pojo.coupon.CouponRelGoods;
-import com.ruoyi.member.domain.pojo.coupon.CouponRelUser;
-import com.ruoyi.member.domain.pojo.coupon.CouponTotal;
-import com.ruoyi.system.api.domain.dto.BirthdayGiftSendDto;
-import com.ruoyi.system.api.domain.dto.MerBaseGetDto;
-import com.ruoyi.system.api.domain.dto.MerPageDto;
+import com.ruoyi.member.domain.pojo.coupon.*;
+import com.ruoyi.member.service.coupon.*;
+import com.ruoyi.system.api.domain.dto.*;
 import com.ruoyi.system.api.domain.poji.member.MemberCoupon;
 import com.ruoyi.member.domain.vo.*;
 import com.ruoyi.member.mapper.coupon.CouponMapper;
-import com.ruoyi.member.service.coupon.CouponRelGoodsService;
-import com.ruoyi.member.service.coupon.CouponRelUserService;
-import com.ruoyi.member.service.coupon.CouponService;
-import com.ruoyi.member.service.coupon.CouponTotalService;
 import com.ruoyi.member.service.member.MemberCouponService;
 import com.ruoyi.member.service.member.MemberService;
 import com.ruoyi.system.api.constant.AppErrorConstant;
-import com.ruoyi.system.api.domain.dto.MgtBaseGetDto;
 import com.ruoyi.system.api.domain.poji.goods.Goods;
 import com.ruoyi.system.api.domain.vo.MerGoodsPriceListVo;
 import com.ruoyi.system.api.service.RemoteActivityService;
@@ -75,6 +66,9 @@
 
     @Resource
     private RemoteActivityService remoteActivityService;
+
+    @Resource
+    private MemberCouponRecordService memberCouponRecordService;
 
     /**
      * @description  平台获取优惠券列表
@@ -393,6 +387,7 @@
                        sendPerson = sendPerson + 1;
                    }
                 }
+                memberCouponRecordService.updateMemberCouponRecord(coupon,userId,1);
             }
             memberCouponService.saveBatch(memberCouponList);
             //处理优惠券统计
@@ -845,37 +840,55 @@
         for(BirthdayGiftSendDto birthdayGiftSendDto : giftSendDtoList){
             couponId = birthdayGiftSendDto.getCouponId();
             coupon = this.getById(couponId);
-            memberCoupon = new MemberCoupon();
-            memberCouponId = IdUtils.simpleUUID();
-            memberCoupon.setId(memberCouponId);
-            memberCoupon.setDelFlag(0);
-            memberCoupon.setCouponId(couponId);
-            memberCoupon.setUserId(userId);
-            memberCoupon.setShopId(shopId);
-            memberCoupon.setCouponType(coupon.getCouponType());
-            memberCoupon.setCouponStatus(coupon.getCouponStatus());
-            memberCoupon.setCouponName(coupon.getCouponName());
-            memberCoupon.setSendType(coupon.getSendType());
-            memberCoupon.setSendTimeType(coupon.getSendTimeType());
-            memberCoupon.setSendTime(coupon.getSendTime());
-            memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
-            memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
-            memberCoupon.setDiscountPercent(coupon.getDiscountPercent());
-            memberCoupon.setUseScope(coupon.getUseScope());
-            memberCoupon.setValidTimeType(coupon.getValidTimeType());
-            memberCoupon.setValidStartTime(coupon.getValidStartTime());
-            memberCoupon.setValidEndTime(coupon.getValidEndTime());
-            memberCoupon.setValidDay(coupon.getValidDay());
-            memberCoupon.setReceiveTime(new Date());
-            //有效期处理1.时间段2.领取之日起
-            if(coupon.getValidTimeType()==1){
-                memberCoupon.setDeadlineTime(coupon.getValidEndTime());
-            }else if(coupon.getValidTimeType()==2){
-                memberCoupon.setDeadlineTime(DateUtils.addDays(new Date(),coupon.getValidDay()));
+            for(int i=0;i<birthdayGiftSendDto.getCouponNumber();i++){
+                memberCoupon = new MemberCoupon();
+                memberCouponId = IdUtils.simpleUUID();
+                memberCoupon.setId(memberCouponId);
+                memberCoupon.setDelFlag(0);
+                memberCoupon.setCouponId(couponId);
+                memberCoupon.setUserId(userId);
+                memberCoupon.setShopId(shopId);
+                memberCoupon.setCouponType(coupon.getCouponType());
+                memberCoupon.setCouponStatus(coupon.getCouponStatus());
+                memberCoupon.setCouponName(coupon.getCouponName());
+                memberCoupon.setSendType(coupon.getSendType());
+                memberCoupon.setSendTimeType(coupon.getSendTimeType());
+                memberCoupon.setSendTime(coupon.getSendTime());
+                memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
+                memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
+                memberCoupon.setDiscountPercent(coupon.getDiscountPercent());
+                memberCoupon.setUseScope(coupon.getUseScope());
+                memberCoupon.setValidTimeType(coupon.getValidTimeType());
+                memberCoupon.setValidStartTime(coupon.getValidStartTime());
+                memberCoupon.setValidEndTime(coupon.getValidEndTime());
+                memberCoupon.setValidDay(coupon.getValidDay());
+                memberCoupon.setReceiveTime(new Date());
+                //有效期处理1.时间段2.领取之日起
+                if(coupon.getValidTimeType()==1){
+                    memberCoupon.setDeadlineTime(coupon.getValidEndTime());
+                }else if(coupon.getValidTimeType()==2){
+                    memberCoupon.setDeadlineTime(DateUtils.addDays(new Date(),coupon.getValidDay()));
+                }
+                memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
+                memberCouponList.add(memberCoupon);
             }
-            memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
-            memberCouponList.add(memberCoupon);
+            memberCouponRecordService.updateMemberCouponRecord(coupon,userId,birthdayGiftSendDto.getCouponNumber());
         }
         memberCouponService.saveBatch(memberCouponList);
     }
+
+    /**
+     * @description  用户分页获取可领取优惠券列表
+     * @author  jqs
+     * @date    2023/7/9 16:16
+     * @param page
+     * @param appPageDto
+     * @return  List<AppUnGetCouponPageVo>
+     */
+    @Override
+    public List<AppUnGetCouponPageVo> pageAppUserGetAbleCoupon(Page page, AppPageDto appPageDto){
+
+
+        return null;
+    }
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/MemberCouponRecordServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/MemberCouponRecordServiceImpl.java
new file mode 100644
index 0000000..d93e1b9
--- /dev/null
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/MemberCouponRecordServiceImpl.java
@@ -0,0 +1,88 @@
+package com.ruoyi.member.service.impl.coupon;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.member.domain.pojo.coupon.Coupon;
+import com.ruoyi.member.domain.pojo.coupon.MemberCouponRecord;
+import com.ruoyi.member.mapper.coupon.MemberCouponRecordMapper;
+import com.ruoyi.member.service.coupon.MemberCouponRecordService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 用户优惠券领取记录 服务实现类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-07-09
+ */
+@Service
+public class MemberCouponRecordServiceImpl extends ServiceImpl<MemberCouponRecordMapper, MemberCouponRecord> implements MemberCouponRecordService {
+
+
+    /**
+     * @description  获取用户优惠券领取记录
+     * @author  jqs
+     * @date    2023/7/9 17:22
+     * @param couponId
+     * @param userId
+     * @return  MemberCouponRecord
+     */
+    @Override
+    public MemberCouponRecord getByCouponIdAndUserId(String couponId,Long userId){
+        LambdaQueryWrapper<MemberCouponRecord> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(MemberCouponRecord::getCouponId,couponId);
+        queryWrapper.eq(MemberCouponRecord::getUserId,userId);
+        return this.getOne(queryWrapper,false);
+    }
+
+    /**
+     * @description  更新用户优惠券领取记录
+     * @author  jqs
+     * @date    2023/7/9 17:20
+     * @param coupon
+     * @param userId
+     * @return  void
+     */
+    @Override
+    public void updateMemberCouponRecord(Coupon coupon, Long userId, Integer number) {
+        // 根据优惠券ID和用户ID获取会员优惠券记录
+        MemberCouponRecord memberCouponRecord = this.getByCouponIdAndUserId(coupon.getCouponId(), userId);
+        if (memberCouponRecord != null) {
+            // 如果会员优惠券记录存在,则更新数量
+            memberCouponRecord.setNum(memberCouponRecord.getNum() + number);
+            // 设置限制数量
+            if (coupon.getLimitNumber() > 0) {
+                memberCouponRecord.setLimitNum(coupon.getLimitNumber());
+            } else {
+                memberCouponRecord.setLimitNum(99999);
+            }
+            // 如果数量达到限制数量,则设置限制标志为1
+            if (memberCouponRecord.getNum()>memberCouponRecord.getLimitNum()) {
+                memberCouponRecord.setLimitFlag(1);
+            } else {
+                memberCouponRecord.setLimitFlag(0);
+            }
+        } else {
+            // 如果会员优惠券记录不存在,则创建新的记录
+            memberCouponRecord = new MemberCouponRecord();
+            memberCouponRecord.setCouponId(coupon.getCouponId());
+            memberCouponRecord.setUserId(userId);
+            memberCouponRecord.setNum(number);
+            // 设置限制数量
+            if (coupon.getLimitNumber() > 0) {
+                memberCouponRecord.setLimitNum(coupon.getLimitNumber());
+            } else {
+                memberCouponRecord.setLimitNum(99999);
+            }
+            // 根据数量是否达到限制数量设置限制标志
+            if (memberCouponRecord.getNum()>memberCouponRecord.getLimitNum()) {
+                memberCouponRecord.setLimitFlag(1);
+            } else {
+                memberCouponRecord.setLimitFlag(0);
+            }
+        }
+        // 保存或更新会员优惠券记录
+        this.saveOrUpdate(memberCouponRecord);
+    }
+}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberGiftRecordServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberGiftRecordServiceImpl.java
similarity index 96%
rename from ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberGiftRecordServiceImpl.java
rename to ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberGiftRecordServiceImpl.java
index 17dedd7..7f9f7fe 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberGiftRecordServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberGiftRecordServiceImpl.java
@@ -1,4 +1,4 @@
-package com.ruoyi.member.service.impl;
+package com.ruoyi.member.service.impl.member;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord;
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
index a400294..58068a9 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -1402,6 +1402,18 @@
             merTotalDto.setShopId(null);
         }
         MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getMerMemberTotalAge(merTotalDto);
+        Integer manTotal = mgtAgeTotalVo.getManTotal();
+        Integer womenTotal = mgtAgeTotalVo.getWomenTotal();
+        memberFixedTotalVo.setManTotal(manTotal);
+        memberFixedTotalVo.setWomenTotal(womenTotal);
+        Integer personTotal = manTotal + womenTotal;
+        BigDecimal manTotalBig = new BigDecimal(manTotal);
+        BigDecimal personTotalBig = new BigDecimal(personTotal);
+        BigDecimal bigTen = new BigDecimal("100.00");
+        BigDecimal menPercent = manTotalBig.divide(personTotalBig).setScale(0,BigDecimal.ROUND_HALF_UP);
+        BigDecimal womenPercent = bigTen.subtract(menPercent);
+        memberFixedTotalVo.setManPercent(menPercent);
+        memberFixedTotalVo.setWomenPercent(womenPercent);
         // 年龄段数组
         String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"};
         // 不同年龄段的会员数数组
@@ -1420,6 +1432,12 @@
         if (goodsTypeTotalVos != null && goodsTypeTotalVos.size() > 0) {
             goodsTypeTotalVos = listRemoveNull(goodsTypeTotalVos);
             memberFixedTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos);
+        }
+        //获取会员消费排名
+        List<MgtMapIntTotalVo> memberPayList = memberMapper.getMerMemberPayRank(merTotalDto);
+        if (memberPayList != null && memberPayList.size() > 0) {
+            memberPayList = listRemoveNull(memberPayList);
+            memberFixedTotalVo.setMemberPayList(memberPayList);
         }
         // 获取不同活跃度的会员数
         List<Activeness> activenessList = remoteConfigService.listActiveness().getData();
@@ -1444,12 +1462,6 @@
                 MgtMapIntTotalVoList.add(MgtMapIntTotalVo);
             }
             memberFixedTotalVo.setActivenessList(MgtMapIntTotalVoList);
-        }
-        //获取会员消费排名
-        List<MgtMapIntTotalVo> memberPayList = memberMapper.getMerMemberPayRank(merTotalDto);
-        if (memberPayList != null && memberPayList.size() > 0) {
-            memberPayList = listRemoveNull(memberPayList);
-            memberFixedTotalVo.setMemberPayList(memberPayList);
         }
         return memberFixedTotalVo;
     }
diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml
index 632a9a3..1e3c245 100644
--- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml
+++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml
@@ -198,7 +198,7 @@
     <select id="listMgtCouponSimpleVo" resultType="com.ruoyi.member.domain.vo.MgtCouponSimpleListVo">
         SELECT
             coupon_id couponId,
-            coupon_name couponName,
+            coupon_name couponName
         FROM t_coupon
         WHERE del_flag = 0
         <if test="param.shopId!=null and param.shopId!='' ">
@@ -340,6 +340,12 @@
         </if>
     </select>
 
-
+    <select id="listUserUnGetCoupon" resultType="java.lang.String">
+        SELECT
+            tc.coupon_id
+        FROM t_coupon tc
+        LEFT JOIN t_member_coupon_record tmcr ON tc.coupon_id = tmcr.coupon_id AND tmcr.user_id = #{userId}
+        WHERE tc.del_flag = 0 AND tc.coupon_status = 1 AND send_type = 1 AND (tmcr.limit_flag IS NULL OR tmcr.limit_flag = 0)
+    </select>
 
 </mapper>
diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/MemberCouponRecordMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/MemberCouponRecordMapper.xml
new file mode 100644
index 0000000..2b54306
--- /dev/null
+++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/MemberCouponRecordMapper.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.member.mapper.coupon.MemberCouponRecordMapper">
+
+
+</mapper>
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 3622fae..a51af73 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
@@ -355,12 +355,12 @@
     <select id="getTotalMemberTotal" resultType="com.ruoyi.member.domain.vo.MgtTotalMemberTotalVo">
         SELECT
             COUNT(member_id) memberTotal,
-            SUM(CASE WHEN customer_source = "小程序" THEN 1 ELSE 0 END) onlineTotal,
-            SUM(CASE WHEN customer_source = "小程序" THEN 0 ELSE 1 END) offlineTotal,
+            IFNULL(SUM(CASE WHEN customer_source = "小程序" THEN 1 ELSE 0 END),0) onlineTotal,
+            IFNULL(SUM(CASE WHEN customer_source = "小程序" THEN 0 ELSE 1 END),0) offlineTotal,
             0 introduceTotal,
-            SUM(CASE WHEN goods_type LIKE "%周期%" THEN 1 ELSE 0 END) cycleTotal,
-            SUM(CASE WHEN goods_type LIKE "%体验%" THEN 1 ELSE 0 END) experienceTotal,
-            SUM(CASE WHEN goods_type LIKE "%服务%" THEN 1 ELSE 0 END) serviceTotal
+            IFNULL(SUM(CASE WHEN goods_type LIKE "%周期%" THEN 1 ELSE 0 END),0) cycleTotal,
+            IFNULL(SUM(CASE WHEN goods_type LIKE "%体验%" THEN 1 ELSE 0 END),0) experienceTotal,
+            IFNULL(SUM(CASE WHEN goods_type LIKE "%服务%" THEN 1 ELSE 0 END),0) serviceTotal
         FROM t_member WHERE del_flag = 0 AND binding_flag = 1
         <if test="param.shopId != null and param.shopId != ''">
             AND relation_shop_id = #{param.shopId}
@@ -376,12 +376,12 @@
     <select id="getTotalMemberTotal" resultType="com.ruoyi.member.domain.vo.MgtTotalMemberTotalVo">
         SELECT
         COUNT(member_id) memberTotal,
-        SUM(CASE WHEN customer_source = "小程序" THEN 1 ELSE 0 END) onlineTotal,
-        SUM(CASE WHEN customer_source = "小程序" THEN 0 ELSE 1 END) offlineTotal,
+        IFNULL(SUM(CASE WHEN customer_source = "小程序" THEN 1 ELSE 0 END),0) onlineTotal,
+        IFNULL(SUM(CASE WHEN customer_source = "小程序" THEN 0 ELSE 1 END),0) offlineTotal,
         0 introduceTotal,
-        SUM(CASE WHEN goods_type LIKE "%周期%" THEN 1 ELSE 0 END) cycleTotal,
-        SUM(CASE WHEN goods_type LIKE "%体验%" THEN 1 ELSE 0 END) experienceTotal,
-        SUM(CASE WHEN goods_type LIKE "%服务%" THEN 1 ELSE 0 END) serviceTotal
+        IFNULL(SUM(CASE WHEN goods_type LIKE "%周期%" THEN 1 ELSE 0 END),0) cycleTotal,
+        IFNULL(SUM(CASE WHEN goods_type LIKE "%体验%" THEN 1 ELSE 0 END),0) experienceTotal,
+        IFNULL(SUM(CASE WHEN goods_type LIKE "%服务%" THEN 1 ELSE 0 END),0) serviceTotal
         FROM t_member WHERE del_flag = 0 AND binding_flag = 1
         <if test="param.shopId != null and param.shopId != ''">
             AND relation_shop_id = #{param.shopId}
@@ -390,13 +390,13 @@
 
     <select id="getTotalMemberTotalAge" resultType="com.ruoyi.member.domain.vo.MgtAgeTotalVo">
         SELECT
-        SUM(CASE WHEN gender = 0 THEN 1 ELSE 0 END) manTotal,
-        SUM(CASE WHEN gender = 1 THEN 1 ELSE 0 END) womenTotal,
-        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 1 AND 20 THEN 1 ELSE 0 END) AS tenAge,
-        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 THEN 1 ELSE 0 END) AS twentyAge,
-        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 THEN 1 ELSE 0 END) AS ThirtyAge,
-        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 THEN 1 ELSE 0 END) AS fortyAge,
-        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) &gt;= 51 THEN 1 ELSE 0 END) AS fiftyAge
+        IFNULL(SUM(CASE WHEN gender = 0 THEN 1 ELSE 0 END),0) manTotal,
+        IFNULL(SUM(CASE WHEN gender = 1 THEN 1 ELSE 0 END),0) womenTotal,
+        IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 1 AND 20 THEN 1 ELSE 0 END),0) AS tenAge,
+        IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 THEN 1 ELSE 0 END),0) AS twentyAge,
+        IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 THEN 1 ELSE 0 END),0) AS ThirtyAge,
+        IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 THEN 1 ELSE 0 END),0) AS fortyAge,
+        IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) &gt;= 51 THEN 1 ELSE 0 END),0) AS fiftyAge
         FROM t_member WHERE del_flag = 0 AND binding_flag = 1
         <if test="param.shopId != null and param.shopId != ''">
             AND relation_shop_id = #{param.shopId}
@@ -540,13 +540,13 @@
 
     <select id="getPlTotalMemberTotalAge" resultType="com.ruoyi.member.domain.vo.MgtAgeTotalVo">
         SELECT
-        SUM(CASE WHEN gender = 0 THEN 1 ELSE 0 END) manTotal,
-        SUM(CASE WHEN gender = 1 THEN 1 ELSE 0 END) womenTotal,
-        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 1 AND 20 THEN 1 ELSE 0 END) AS tenAge,
-        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 THEN 1 ELSE 0 END) AS twentyAge,
-        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 THEN 1 ELSE 0 END) AS ThirtyAge,
-        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 THEN 1 ELSE 0 END) AS fortyAge,
-        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) &gt;= 51 THEN 1 ELSE 0 END) AS fiftyAge
+        IFNULL(SUM(CASE WHEN gender = 0 THEN 1 ELSE 0 END),0) manTotal,
+        IFNULL(SUM(CASE WHEN gender = 1 THEN 1 ELSE 0 END),0) womenTotal,
+        IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 1 AND 20 THEN 1 ELSE 0 END),0) AS tenAge,
+        IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 THEN 1 ELSE 0 END),0) AS twentyAge,
+        IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 THEN 1 ELSE 0 END),0) AS ThirtyAge,
+        IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 THEN 1 ELSE 0 END),0) AS fortyAge,
+        IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) &gt;= 51 THEN 1 ELSE 0 END),0) AS fiftyAge
         FROM t_member WHERE del_flag = 0 AND binding_flag = 1
         <if test="param.shopIdList != null and param.shopIdList.size() > 0">
             AND relation_shop_id IN
@@ -708,12 +708,12 @@
     <select id="getMerMemberTotal" resultType="com.ruoyi.member.domain.vo.MerMemberTotalVo">
         SELECT
         COUNT(member_id) memberTotal,
-        SUM(CASE WHEN customer_source = "小程序" THEN 1 ELSE 0 END) onlineTotal,
-        SUM(CASE WHEN customer_source = "小程序" THEN 0 ELSE 1 END) offlineTotal,
+        IFNULL(SUM(CASE WHEN customer_source = "小程序" THEN 1 ELSE 0 END),0) onlineTotal,
+        IFNULL(SUM(CASE WHEN customer_source = "小程序" THEN 0 ELSE 1 END),0) offlineTotal,
         0 introduceTotal,
-        SUM(CASE WHEN goods_type LIKE "%周期%" THEN 1 ELSE 0 END) cycleTotal,
-        SUM(CASE WHEN goods_type LIKE "%体验%" THEN 1 ELSE 0 END) experienceTotal,
-        SUM(CASE WHEN goods_type LIKE "%服务%" THEN 1 ELSE 0 END) serviceTotal
+        IFNULL(SUM(CASE WHEN goods_type LIKE "%周期%" THEN 1 ELSE 0 END),0) cycleTotal,
+        IFNULL(SUM(CASE WHEN goods_type LIKE "%体验%" THEN 1 ELSE 0 END),0) experienceTotal,
+        IFNULL(SUM(CASE WHEN goods_type LIKE "%服务%" THEN 1 ELSE 0 END),0) serviceTotal
         FROM t_member WHERE del_flag = 0 AND binding_flag = 1
         <if test="param.shopId != null and param.shopId != ''">
             AND relation_shop_id = #{param.shopId}
@@ -734,13 +734,13 @@
 
     <select id="getMerMemberTotalAge" resultType="com.ruoyi.member.domain.vo.MgtAgeTotalVo">
         SELECT
-        SUM(CASE WHEN gender = 0 THEN 1 ELSE 0 END) manTotal,
-        SUM(CASE WHEN gender = 1 THEN 1 ELSE 0 END) womenTotal,
-        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 1 AND 20 THEN 1 ELSE 0 END) AS tenAge,
-        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 THEN 1 ELSE 0 END) AS twentyAge,
-        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 THEN 1 ELSE 0 END) AS ThirtyAge,
-        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 THEN 1 ELSE 0 END) AS fortyAge,
-        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) &gt;= 51 THEN 1 ELSE 0 END) AS fiftyAge
+        IFNULL(SUM(CASE WHEN gender = 0 THEN 1 ELSE 0 END),0) manTotal,
+        IFNULL(SUM(CASE WHEN gender = 1 THEN 1 ELSE 0 END),0) womenTotal,
+        IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 1 AND 20 THEN 1 ELSE 0 END),0) AS tenAge,
+        IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 THEN 1 ELSE 0 END),0) AS twentyAge,
+        IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 THEN 1 ELSE 0 END),0) AS ThirtyAge,
+        IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 THEN 1 ELSE 0 END),0) AS fortyAge,
+        IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) &gt;= 51 THEN 1 ELSE 0 END),0) AS fiftyAge
         FROM t_member WHERE del_flag = 0 AND binding_flag = 1
         <if test="param.shopId != null and param.shopId != ''">
             AND relation_shop_id = #{param.shopId}
@@ -827,10 +827,10 @@
             </foreach>
         </if>
         <if test="param.startDate!=null and param.startDate!=''">
-            AND tmt.last_pay_time &gt;= #{actStartDate}
+            AND tm.create_time &gt;= #{param.startDate}
         </if>
         <if test="param.endDate!=null and param.endDate!=''">
-            AND tmt.last_pay_time &lt;= #{actEndDate}
+            AND tm.create_time &lt;= #{param.endDate}
         </if>
     </select>
 
@@ -911,13 +911,13 @@
 
     <select id="listOrderAgeUser" resultType="java.lang.Long">
         SELECT
-        SUM(CASE WHEN gender = 0 THEN 1 ELSE 0 END) manTotal,
-        SUM(CASE WHEN gender = 1 THEN 1 ELSE 0 END) womenTotal,
-        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 1 AND 20 THEN 1 ELSE 0 END) AS tenAge,
-        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 THEN 1 ELSE 0 END) AS twentyAge,
-        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 THEN 1 ELSE 0 END) AS ThirtyAge,
-        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 THEN 1 ELSE 0 END) AS fortyAge,
-        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) &gt;= 51 THEN 1 ELSE 0 END) AS fiftyAge
+        IFNULL(SUM(CASE WHEN gender = 0 THEN 1 ELSE 0 END),0) manTotal,
+        IFNULL(SUM(CASE WHEN gender = 1 THEN 1 ELSE 0 END),0) womenTotal,
+        IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 1 AND 20 THEN 1 ELSE 0 END),0) AS tenAge,
+        IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 THEN 1 ELSE 0 END),0) AS twentyAge,
+        IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 THEN 1 ELSE 0 END),0) AS ThirtyAge,
+        IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 THEN 1 ELSE 0 END),0) AS fortyAge,
+        IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) &gt;= 51 THEN 1 ELSE 0 END),0) AS fiftyAge
         FROM t_member WHERE del_flag = 0 AND binding_flag = 1
         <if test="param.shopId != null and param.shopId != ''">
             AND relation_shop_id = #{param.shopId}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java
index d9f28c9..807d879 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java
@@ -85,6 +85,15 @@
         return R.ok(merVerifyCouponVo);
     }
 
+    @RequestMapping(value = "/sureVerifyPrize", method = RequestMethod.POST)
+    @ApiOperation(value = "核销奖品")
+    public R<MerVerifyAwardVo> sureVerifyPrize(@RequestBody MerVerifyPrizeDto merVerifyPrizeDto) {
+        Long userId = SecurityUtils.getUserId();
+        merVerifyPrizeDto.setUserId(userId);
+        MerVerifyAwardVo merVerifyAwardVo = new MerVerifyAwardVo();
+        return R.ok(merVerifyAwardVo);
+    }
+
 
     @RequestMapping(value = "/pageMerMemberNoClearOrder", method = RequestMethod.POST)
     @ApiOperation(value = "分页获取用户未结清订单")
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyPrizeDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyPrizeDto.java
new file mode 100644
index 0000000..cdc3d36
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyPrizeDto.java
@@ -0,0 +1,20 @@
+package com.ruoyi.order.domain.dto;
+
+import com.ruoyi.system.api.domain.dto.MerBaseDto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName MerVerifyPrizeDto
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/7/9 9:45
+ * @Version 1.0
+ */
+@Data
+public class MerVerifyPrizeDto extends MerBaseDto {
+
+    @ApiModelProperty(value = "奖品id")
+    private String prizeId;
+
+}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
index 265845d..5b5a7f4 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
@@ -153,6 +153,15 @@
 
     /**
      * @description getTotalOrderTotalGoodsType
+     * @param merTotalDto
+     * @return MgtTotalOrderTotalVo
+     * @author jqs34
+     * @date 2023/6/19 22:24
+     */
+    MerOrderTotalVo getMerTotalOrderTotalGoodsType(@Param("param") MerTotalDto merTotalDto);
+
+    /**
+     * @description getTotalOrderTotalGoodsType
      * @param mgtBaseShopDto
      * @return MgtTotalOrderTotalVo
      * @author jqs34
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 749a121..01d4970 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
@@ -1033,6 +1033,84 @@
         return merVerifyCouponVo;
     }
 
+
+    /**
+     * @description  确认核销奖品
+     * @author  jqs
+     * @date    2023/7/9 9:54
+     * @param merVerifyPrizeDto
+     * @return  MerVerifyAwardVo
+     */
+    @Override
+    public MerVerifyAwardVo sureVerifyPrize(MerVerifyPrizeDto merVerifyPrizeDto){
+        MerVerifyAwardVo merVerifyAwardVo = new MerVerifyAwardVo();
+        MemberGiftRecord memberGiftRecord = remoteMemberService.getVerifyPrize(merVerifyPrizeDto.getPrizeId()).getData();
+        if(memberGiftRecord==null||memberGiftRecord.getVerifyStatus()!=1){
+            throw new ServiceException(AppErrorConstant.COUPON_USED);
+        }
+        Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData();
+        merVerifyAwardVo.setUserName(member.getNickName());
+        merVerifyAwardVo.setUserMobile(member.getMobile());
+        if(memberGiftRecord.getGiftFrom()==1){
+            merVerifyAwardVo.setGiftFrom("平台生日卡");
+        }else{
+            merVerifyAwardVo.setGiftFrom("商户生日卡");
+        }
+
+        merVerifyAwardVo.setGiftType(memberGiftRecord.getGiftType());
+        List<BirthdayGiftSendDto> giftSendDtoList = new ArrayList<>();
+        BirthdayGiftSendDto birthdayGiftSendDto = new BirthdayGiftSendDto();
+        switch(memberGiftRecord.getGiftType()){
+            case 1:
+                merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName());
+                merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getCouponNumber()));
+                birthdayGiftSendDto.setUserId(memberGiftRecord.getUserId());
+                birthdayGiftSendDto.setGiftType(memberGiftRecord.getGiftType());
+                birthdayGiftSendDto.setGiftFrom(memberGiftRecord.getGiftFrom());
+                birthdayGiftSendDto.setShopId(memberGiftRecord.getShopId());
+                birthdayGiftSendDto.setCouponId(memberGiftRecord.getCouponId());
+                birthdayGiftSendDto.setCouponNumber(memberGiftRecord.getCouponNumber());
+                giftSendDtoList.add(birthdayGiftSendDto);
+                remoteCouponService.sendCouponGift(giftSendDtoList);
+                break;
+            case 2:
+                Goods goods = remoteGoodsService.getGoods(memberGiftRecord.getGoodsId()).getData();
+                merVerifyAwardVo.setGiftName(memberGiftRecord.getGoodsName());
+                merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getGoodsNumber()));
+                if (goods.getGoodsType() == 1) {
+                    merVerifyAwardVo.setGiftRemark("周期");
+                } else if (goods.getGoodsType() == 2) {
+                    merVerifyAwardVo.setGiftRemark("服务");
+                } else if (goods.getGoodsType() == 3) {
+                    merVerifyAwardVo.setGiftRemark("体验");
+                } else if (goods.getGoodsType() == 4) {
+                    merVerifyAwardVo.setGiftRemark("单品");
+                }
+                birthdayGiftSendDto.setUserId(memberGiftRecord.getUserId());
+                birthdayGiftSendDto.setGiftType(memberGiftRecord.getGiftType());
+                birthdayGiftSendDto.setGiftFrom(memberGiftRecord.getGiftFrom());
+                birthdayGiftSendDto.setShopId(memberGiftRecord.getShopId());
+                birthdayGiftSendDto.setGoodsId(memberGiftRecord.getGoodsId());
+                birthdayGiftSendDto.setGoodsNumber(memberGiftRecord.getGoodsNumber());
+                giftSendDtoList.add(birthdayGiftSendDto);
+                consumerGoodsService.sendGoodsGift(giftSendDtoList);
+                break;
+            case 3:
+                merVerifyAwardVo.setGiftName("现金");
+                merVerifyAwardVo.setGiftNumber(memberGiftRecord.getMoney().doubleValue());
+                break;
+            case 4:
+                merVerifyAwardVo.setGiftName(memberGiftRecord.getGiftName());
+                merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getGiftNumber()));
+                break;
+            default:
+                break;
+        }
+        merVerifyAwardVo.setCreateTime(memberGiftRecord.getCreateTime());
+        return merVerifyAwardVo;
+    }
+
+
     /**
      * 收银未结清订单列表
      *
@@ -2362,16 +2440,26 @@
                 merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getCouponNumber()));
                 break;
             case 2:
-                merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName());
-                merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getCouponNumber()));
+                Goods goods = remoteGoodsService.getGoods(memberGiftRecord.getGoodsId()).getData();
+                merVerifyAwardVo.setGiftName(memberGiftRecord.getGoodsName());
+                merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getGoodsNumber()));
+                if (goods.getGoodsType() == 1) {
+                    merVerifyAwardVo.setGiftRemark("周期");
+                } else if (goods.getGoodsType() == 2) {
+                    merVerifyAwardVo.setGiftRemark("服务");
+                } else if (goods.getGoodsType() == 3) {
+                    merVerifyAwardVo.setGiftRemark("体验");
+                } else if (goods.getGoodsType() == 4) {
+                    merVerifyAwardVo.setGiftRemark("单品");
+                }
                 break;
             case 3:
-                merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName());
-                merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getCouponNumber()));
+                merVerifyAwardVo.setGiftName("现金");
+                merVerifyAwardVo.setGiftNumber(memberGiftRecord.getMoney().doubleValue());
                 break;
             case 4:
-                merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName());
-                merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getCouponNumber()));
+                merVerifyAwardVo.setGiftName(memberGiftRecord.getGiftName());
+                merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getGiftNumber()));
                 break;
             default:
                 break;
@@ -2413,6 +2501,13 @@
             merTotalDto.setShopId(null);
         }
         MerOrderTotalVo orderTotalVo = orderMapper.getMerOrderTotalOrderFrom(merTotalDto);
+        MerOrderTotalVo goodsTypeVo = orderMapper.getMerTotalOrderTotalGoodsType(merTotalDto);
+        orderTotalVo.setCycleTotal(goodsTypeVo.getCycleTotal());
+        orderTotalVo.setCycleMoney(goodsTypeVo.getCycleMoney());
+        orderTotalVo.setExperienceTotal(goodsTypeVo.getExperienceTotal());
+        orderTotalVo.setExperienceMoney(goodsTypeVo.getExperienceMoney());
+        orderTotalVo.setServiceTotal(goodsTypeVo.getServiceTotal());
+        orderTotalVo.setServiceMoney(goodsTypeVo.getServiceMoney());
         return orderTotalVo;
     }
 
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 a9b9267..8db8bc2 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
@@ -118,6 +118,15 @@
     MerVerifyCouponVo sureVerifyCoupon(MerVerifyCouponDto merVerifyCouponDto);
 
     /**
+     * @description  确认核销奖品
+     * @author  jqs
+     * @date    2023/7/9 9:54
+     * @param merVerifyPrizeDto
+     * @return  MerVerifyAwardVo
+     */
+    MerVerifyAwardVo sureVerifyPrize(MerVerifyPrizeDto merVerifyPrizeDto);
+
+    /**
      * 收银未结清订单列表
      * @param page
      * @param merMemberNoClearOrderDto
diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
index f07561e..ccc3c02 100644
--- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
+++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -654,14 +654,42 @@
         </if>
     </select>
 
+    <select id="getMerTotalOrderTotalGoodsType" resultType="com.ruoyi.order.domain.vo.MerOrderTotalVo">
+        SELECT
+        IFNULL(SUM(CASE WHEN tog.goods_type = 1 THEN 1 ELSE 0 END),0) cycleTotal,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 3 THEN 1 ELSE 0 END),0) experienceTotal,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 2 THEN 1 ELSE 0 END),0) serviceTotal,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 1 THEN tog.goods_total_money ELSE 0 END),0) cycleMoney,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 3 THEN tog.goods_total_money ELSE 0 END),0) experienceMoney,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 2 THEN tog.goods_total_money ELSE 0 END),0) serviceMoney
+        FROM t_order toc
+        INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
+        WHERE toc.del_flag = 0
+        <if test="param.shopId != null and param.shopId != ''">
+            AND toc.shop_id = #{param.shopId}
+        </if>
+        <if test="param.shopIdList != null and param.shopIdList.size() > 0">
+            AND toc.shop_id IN
+            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="param.startDate!=null and param.startDate!=''">
+            AND toc.create_time &gt;= #{param.startDate}
+        </if>
+        <if test="param.endDate!=null and param.endDate!=''">
+            AND toc.create_time &lt;= #{param.endDate}
+        </if>
+    </select>
+
     <select id="getTotalOrderTotalGoodsType" resultType="com.ruoyi.order.domain.vo.MgtTotalOrderTotalVo">
         SELECT
-        SUM(CASE WHEN tog.goods_type = 1 THEN 1 ELSE 0 END) cycleTotal,
-        SUM(CASE WHEN tog.goods_type = 3 THEN 1 ELSE 0 END) experienceTotal,
-        SUM(CASE WHEN tog.goods_type = 2 THEN 1 ELSE 0 END) serviceTotal,
-        SUM(CASE WHEN tog.goods_type = 1 THEN tog.goods_total_money ELSE 0 END) cycleMoney,
-        SUM(CASE WHEN tog.goods_type = 3 THEN tog.goods_total_money ELSE 0 END) experienceMoney,
-        SUM(CASE WHEN tog.goods_type = 2 THEN tog.goods_total_money ELSE 0 END) serviceMoney
+        IFNULL(SUM(CASE WHEN tog.goods_type = 1 THEN 1 ELSE 0 END),0) cycleTotal,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 3 THEN 1 ELSE 0 END),0) experienceTotal,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 2 THEN 1 ELSE 0 END),0) serviceTotal,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 1 THEN tog.goods_total_money ELSE 0 END),0) cycleMoney,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 3 THEN tog.goods_total_money ELSE 0 END),0) experienceMoney,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 2 THEN tog.goods_total_money ELSE 0 END),0) serviceMoney
         FROM t_order toc
         INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
         WHERE toc.del_flag = 0
@@ -950,13 +978,13 @@
     <select id="getPlTotalOrderTotalOrderFrom" resultType="com.ruoyi.order.domain.vo.MgtTotalOrderTotalVo">
         SELECT
         COUNT(order_id) orderTotal,
-        SUM(CASE WHEN order_from = 1 THEN 1 ELSE 0 END) onlineTotal,
-        SUM(CASE WHEN order_from = 3 THEN 1 ELSE 0 END) offlineTotal,
-        SUM(CASE WHEN order_from = 2 THEN 1 ELSE 0 END) activityTotal,
+        IFNULL(SUM(CASE WHEN order_from = 1 THEN 1 ELSE 0 END),0) onlineTotal,
+        IFNULL(SUM(CASE WHEN order_from = 3 THEN 1 ELSE 0 END),0) offlineTotal,
+        IFNULL(SUM(CASE WHEN order_from = 2 THEN 1 ELSE 0 END),0) activityTotal,
         IFNULL(SUM(order_money),0) orderMoney,
-        SUM(CASE WHEN order_from = 1 THEN order_money ELSE 0 END) onlineMoney,
-        SUM(CASE WHEN order_from = 3 THEN order_money ELSE 0 END) offlineMoney,
-        SUM(CASE WHEN order_from = 2 THEN order_money ELSE 0 END) activityMoney
+        IFNULL(SUM(CASE WHEN order_from = 1 THEN order_money ELSE 0 END),0) onlineMoney,
+        IFNULL(SUM(CASE WHEN order_from = 3 THEN order_money ELSE 0 END),0) offlineMoney,
+        IFNULL(SUM(CASE WHEN order_from = 2 THEN order_money ELSE 0 END),0) activityMoney
         FROM t_order WHERE del_flag = 0
         <if test="param.shopIdList != null and param.shopIdList.size() > 0">
             AND shop_id IN
@@ -974,12 +1002,12 @@
 
     <select id="getPlTotalOrderTotalGoodsType" resultType="com.ruoyi.order.domain.vo.MgtTotalOrderTotalVo">
         SELECT
-        SUM(CASE WHEN tog.goods_type = 1 THEN 1 ELSE 0 END) cycleTotal,
-        SUM(CASE WHEN tog.goods_type = 3 THEN 1 ELSE 0 END) experienceTotal,
-        SUM(CASE WHEN tog.goods_type = 2 THEN 1 ELSE 0 END) serviceTotal,
-        SUM(CASE WHEN tog.goods_type = 1 THEN tog.goods_total_money ELSE 0 END) cycleMoney,
-        SUM(CASE WHEN tog.goods_type = 3 THEN tog.goods_total_money ELSE 0 END) experienceMoney,
-        SUM(CASE WHEN tog.goods_type = 2 THEN tog.goods_total_money ELSE 0 END) serviceMoney
+        IFNULL(SUM(CASE WHEN tog.goods_type = 1 THEN 1 ELSE 0 END),0) cycleTotal,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 3 THEN 1 ELSE 0 END),0) experienceTotal,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 2 THEN 1 ELSE 0 END),0) serviceTotal,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 1 THEN tog.goods_total_money ELSE 0 END),0) cycleMoney,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 3 THEN tog.goods_total_money ELSE 0 END),0) experienceMoney,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 2 THEN tog.goods_total_money ELSE 0 END),0) serviceMoney
         FROM t_order toc
         INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
         WHERE toc.del_flag = 0
@@ -1233,16 +1261,16 @@
 
     <select id="getMerHomeShopTotalVo" resultType="com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo">
         SELECT
-        SUM(CASE WHEN order_status = 2 THEN 1 ELSE 0 END) unHandleOrder,
-        SUM(pay_money) shopTurnover
+            IFNULL(SUM(CASE WHEN order_status = 2 THEN 1 ELSE 0 END),0) unHandleOrder,
+            IFNULL(SUM(pay_money),0) shopTurnover
         FROM t_order
         WHERE del_flag = 0 AND shopId = #{shopId}
     </select>
 
     <select id="getMerHomeShopsTotalVo" resultType="com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo">
         SELECT
-            SUM(CASE WHEN order_status = 2 THEN 1 ELSE 0 END) unHandleOrder,
-            SUM(pay_money) shopTurnover
+        IFNULL(SUM(CASE WHEN order_status = 2 THEN 1 ELSE 0 END),0) unHandleOrder,
+        IFNULL(SUM(pay_money),0) shopTurnover
         FROM t_order
         WHERE del_flag = 0
         <if test="list != null and list.size() > 0">
@@ -1263,13 +1291,19 @@
     <select id="getMerOrderTotalOrderFrom" resultType="com.ruoyi.order.domain.vo.MerOrderTotalVo">
         SELECT
         COUNT(order_id) orderTotal,
-        SUM(CASE WHEN order_from = 1 THEN 1 ELSE 0 END) onlineTotal,
-        SUM(CASE WHEN order_from = 3 THEN 1 ELSE 0 END) offlineTotal,
-        SUM(CASE WHEN order_from = 2 THEN 1 ELSE 0 END) activityTotal,
+        IFNULL(SUM(CASE WHEN order_from = 1 THEN 1 ELSE 0 END),0) onlineTotal,
+        IFNULL(SUM(CASE WHEN order_from = 3 THEN 1 ELSE 0 END),0) offlineTotal,
+        IFNULL(SUM(CASE WHEN order_from = 2 THEN 1 ELSE 0 END),0) activityTotal,
         IFNULL(SUM(order_money),0) orderMoney,
-        SUM(CASE WHEN order_from = 1 THEN order_money ELSE 0 END) onlineMoney,
-        SUM(CASE WHEN order_from = 3 THEN order_money ELSE 0 END) offlineMoney,
-        SUM(CASE WHEN order_from = 2 THEN order_money ELSE 0 END) activityMoney
+        IFNULL(SUM(CASE WHEN order_from = 1 THEN order_money ELSE 0 END),0) onlineMoney,
+        IFNULL(SUM(CASE WHEN order_from = 3 THEN order_money ELSE 0 END),0) offlineMoney,
+        IFNULL(SUM(CASE WHEN order_from = 2 THEN order_money ELSE 0 END),0) activityMoney,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 1 THEN 1 ELSE 0 END),0) cycleTotal,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 3 THEN 1 ELSE 0 END),0) experienceTotal,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 2 THEN 1 ELSE 0 END),0) serviceTotal,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 1 THEN tog.goods_total_money ELSE 0 END),0) cycleMoney,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 3 THEN tog.goods_total_money ELSE 0 END),0) experienceMoney,
+        IFNULL(SUM(CASE WHEN tog.goods_type = 2 THEN tog.goods_total_money ELSE 0 END),0) serviceMoney
         FROM t_order WHERE del_flag = 0
         <if test="param.shopId != null and param.shopId != ''">
             AND shop_id = #{param.shopId}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/GeneratorMybatisPlus.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/GeneratorMybatisPlus.java
index 5a0ae4d..c0c4e1a 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/GeneratorMybatisPlus.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/GeneratorMybatisPlus.java
@@ -74,7 +74,7 @@
         strategy.setControllerMappingHyphenStyle(true);
         //表和前缀处理
         String[] table = {
-                "t_member_gift_record"
+                "t_member_coupon_record"
         };
         strategy.setInclude(table);
         String[] tablePre = new String[]{"t_"};

--
Gitblit v1.7.1