生日有礼接口
This commit is contained in:
@@ -0,0 +1,73 @@
|
|||||||
|
package com.czg.controller.admin;
|
||||||
|
|
||||||
|
import com.czg.annotation.SaAdminCheckPermission;
|
||||||
|
import com.czg.market.dto.MkBirthdayGiftDTO;
|
||||||
|
import com.czg.market.service.MkBirthdayGiftService;
|
||||||
|
import com.czg.market.vo.MkBirthdayGiftRecordSummaryVO;
|
||||||
|
import com.czg.market.vo.MkBirthdayGiftRecordVO;
|
||||||
|
import com.czg.market.vo.MkBirthdayGiftVO;
|
||||||
|
import com.czg.resp.CzgResult;
|
||||||
|
import com.czg.sa.StpKit;
|
||||||
|
import com.mybatisflex.core.paginate.Page;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生日有礼配置
|
||||||
|
* @author Administrator
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/admin/birthdayGift")
|
||||||
|
public class BirthdayGiftController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MkBirthdayGiftService service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 配置信息获取
|
||||||
|
* 权限标识: activate:list
|
||||||
|
*/
|
||||||
|
@SaAdminCheckPermission(value = "birthdayGift:detail", name = "生日有礼详情")
|
||||||
|
@GetMapping
|
||||||
|
public CzgResult<MkBirthdayGiftVO> detail() {
|
||||||
|
return CzgResult.success(service.detail(StpKit.USER.getShopId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 配置信息修改
|
||||||
|
* @return 是否成功
|
||||||
|
*/
|
||||||
|
@SaAdminCheckPermission(value = "birthdayGift:edit", name = "生日有礼修改")
|
||||||
|
@PostMapping
|
||||||
|
public CzgResult<Boolean> edit(@Validated @RequestBody MkBirthdayGiftDTO giftDTO) {
|
||||||
|
return CzgResult.success(service.edit(StpKit.USER.getShopId(), giftDTO));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 记录获取
|
||||||
|
* @return 是否成功
|
||||||
|
*/
|
||||||
|
@SaAdminCheckPermission(value = "birthdayGift:record", name = "生日有礼记录")
|
||||||
|
@GetMapping("/record")
|
||||||
|
public CzgResult<Page<MkBirthdayGiftRecordVO>> record(@RequestParam(required = false) LocalDateTime dateTime, @RequestParam(required = false) String key) {
|
||||||
|
return CzgResult.success(service.getRecord(StpKit.USER.getShopId(), key, dateTime));
|
||||||
|
// return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 记录获取
|
||||||
|
* @return 是否成功
|
||||||
|
*/
|
||||||
|
@SaAdminCheckPermission(value = "birthdayGift:summary", name = "生日有礼概述")
|
||||||
|
@GetMapping("/summary")
|
||||||
|
public CzgResult<MkBirthdayGiftRecordSummaryVO> summary(@RequestParam(required = false) LocalDateTime dateTime, @RequestParam(required = false) String key) {
|
||||||
|
return CzgResult.success(service.summary(StpKit.USER.getShopId(), key, dateTime));
|
||||||
|
// return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
|
||||||
|
package com.czg.market.dto;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.annotation.JSONField;
|
||||||
|
import com.czg.market.entity.MkBirthdayGiftConfig;
|
||||||
|
import com.czg.validator.group.UpdateGroup;
|
||||||
|
import com.mybatisflex.annotation.Column;
|
||||||
|
import com.mybatisflex.annotation.Id;
|
||||||
|
import com.mybatisflex.annotation.KeyType;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 消费赠券表 实体类。
|
||||||
|
*
|
||||||
|
* @author ww
|
||||||
|
* @since 2025-09-12
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class MkBirthdayGiftDTO implements Serializable {
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否开启
|
||||||
|
*/
|
||||||
|
private Integer isEnable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否发送短信
|
||||||
|
*/
|
||||||
|
private Integer sendSms;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 短信模板id
|
||||||
|
*/
|
||||||
|
private Long templateId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 配置信息
|
||||||
|
*/
|
||||||
|
private List<MkBirthdayGiftConfig> configList;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
package com.czg.market.entity;
|
||||||
|
|
||||||
|
import com.mybatisflex.annotation.Column;
|
||||||
|
import com.mybatisflex.annotation.Id;
|
||||||
|
import com.mybatisflex.annotation.KeyType;
|
||||||
|
import com.mybatisflex.annotation.Table;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生日有礼 实体类。
|
||||||
|
*
|
||||||
|
* @author zs
|
||||||
|
* @since 2025-10-14
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Table("mk_birthday_gift")
|
||||||
|
public class MkBirthdayGift implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@Id(keyType = KeyType.Auto)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否开启
|
||||||
|
*/
|
||||||
|
private Integer isEnable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否发送短信
|
||||||
|
*/
|
||||||
|
private Integer sendSms;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 短信模板id
|
||||||
|
*/
|
||||||
|
private Long templateId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 配置信息
|
||||||
|
*/
|
||||||
|
private String configList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主店id
|
||||||
|
*/
|
||||||
|
private Long mainShopId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
@Column(onInsertValue = "now()")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改时间
|
||||||
|
*/
|
||||||
|
@Column(onInsertValue = "now()", onUpdateValue = "now()")
|
||||||
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
package com.czg.market.entity;
|
||||||
|
|
||||||
|
import com.czg.market.dto.CouponInfoDTO;
|
||||||
|
import com.mybatisflex.annotation.Column;
|
||||||
|
import com.mybatisflex.annotation.Id;
|
||||||
|
import com.mybatisflex.annotation.KeyType;
|
||||||
|
import com.mybatisflex.annotation.Table;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生日有礼 实体类。
|
||||||
|
*
|
||||||
|
* @author zs
|
||||||
|
* @since 2025-10-14
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class MkBirthdayGiftConfig implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户类型all 全部用户 vip 会员用户
|
||||||
|
*/
|
||||||
|
private String userType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否开启
|
||||||
|
*/
|
||||||
|
private String deliverTime;
|
||||||
|
private String deliverDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 赠送券信息
|
||||||
|
*/
|
||||||
|
@Valid
|
||||||
|
private List<CouponInfoDTO> couponInfoList;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
package com.czg.market.entity;
|
||||||
|
|
||||||
|
import com.mybatisflex.annotation.Column;
|
||||||
|
import com.mybatisflex.annotation.Id;
|
||||||
|
import com.mybatisflex.annotation.KeyType;
|
||||||
|
import com.mybatisflex.annotation.Table;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.sql.Date;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生日有礼记录 实体类。
|
||||||
|
*
|
||||||
|
* @author zs
|
||||||
|
* @since 2025-10-14
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Table("mk_birthday_gift_record")
|
||||||
|
public class MkBirthdayGiftRecord implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@Id(keyType = KeyType.Auto)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户id
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
|
private Long shopUserId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生日
|
||||||
|
*/
|
||||||
|
private Date birthday;
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
@Column(onInsertValue = "now()")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主店id
|
||||||
|
*/
|
||||||
|
private Long mainShopId;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
package com.czg.market.entity;
|
||||||
|
|
||||||
|
import com.mybatisflex.annotation.Column;
|
||||||
|
import com.mybatisflex.annotation.Id;
|
||||||
|
import com.mybatisflex.annotation.KeyType;
|
||||||
|
import com.mybatisflex.annotation.Table;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实体类。
|
||||||
|
*
|
||||||
|
* @author zs
|
||||||
|
* @since 2025-10-14
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Table("mk_birthday_gift_record_coupon")
|
||||||
|
public class MkBirthdayGiftRecordCoupon implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@Id(keyType = KeyType.Auto)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 券名称
|
||||||
|
*/
|
||||||
|
private String couponName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数量
|
||||||
|
*/
|
||||||
|
private Integer num;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* give获得 consume消耗
|
||||||
|
*/
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生日有礼记录id
|
||||||
|
*/
|
||||||
|
private Long recordId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户id
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 门店用户id
|
||||||
|
*/
|
||||||
|
private Long shopUserId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
@Column(onInsertValue = "now()")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.czg.market.service;
|
||||||
|
|
||||||
|
import com.mybatisflex.core.service.IService;
|
||||||
|
import com.czg.market.entity.MkBirthdayGiftRecordCoupon;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 服务层。
|
||||||
|
*
|
||||||
|
* @author zs
|
||||||
|
* @since 2025-10-14
|
||||||
|
*/
|
||||||
|
public interface MkBirthdayGiftRecordCouponService extends IService<MkBirthdayGiftRecordCoupon> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.czg.market.service;
|
||||||
|
|
||||||
|
import com.mybatisflex.core.service.IService;
|
||||||
|
import com.czg.market.entity.MkBirthdayGiftRecord;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生日有礼记录 服务层。
|
||||||
|
*
|
||||||
|
* @author zs
|
||||||
|
* @since 2025-10-14
|
||||||
|
*/
|
||||||
|
public interface MkBirthdayGiftRecordService extends IService<MkBirthdayGiftRecord> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package com.czg.market.service;
|
||||||
|
|
||||||
|
import com.czg.market.dto.MkBirthdayGiftDTO;
|
||||||
|
import com.czg.market.vo.MkBirthdayGiftRecordSummaryVO;
|
||||||
|
import com.czg.market.vo.MkBirthdayGiftRecordVO;
|
||||||
|
import com.czg.market.vo.MkBirthdayGiftVO;
|
||||||
|
import com.mybatisflex.core.paginate.Page;
|
||||||
|
import com.mybatisflex.core.service.IService;
|
||||||
|
import com.czg.market.entity.MkBirthdayGift;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生日有礼 服务层。
|
||||||
|
*
|
||||||
|
* @author zs
|
||||||
|
* @since 2025-10-14
|
||||||
|
*/
|
||||||
|
public interface MkBirthdayGiftService extends IService<MkBirthdayGift> {
|
||||||
|
|
||||||
|
MkBirthdayGiftVO detail(Long shopId);
|
||||||
|
|
||||||
|
Boolean edit(Long shopId, MkBirthdayGiftDTO giftDTO);
|
||||||
|
|
||||||
|
Page<MkBirthdayGiftRecordVO> getRecord(Long shopId, String key, LocalDateTime dateTime);
|
||||||
|
|
||||||
|
MkBirthdayGiftRecordSummaryVO summary(Long shopId, String key, LocalDateTime dateTime);
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.czg.market.vo;
|
||||||
|
|
||||||
|
import com.czg.market.entity.MkBirthdayGiftConfig;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Administrator
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class MkBirthdayGiftRecordSummaryVO implements Serializable {
|
||||||
|
private Long totalNum = 0L;
|
||||||
|
private Long usedNum = 0L;
|
||||||
|
}
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
package com.czg.market.vo;
|
||||||
|
|
||||||
|
import com.czg.market.entity.MkBirthdayGiftConfig;
|
||||||
|
import com.czg.market.entity.MkBirthdayGiftRecordCoupon;
|
||||||
|
import com.mybatisflex.annotation.Column;
|
||||||
|
import com.mybatisflex.annotation.Id;
|
||||||
|
import com.mybatisflex.annotation.KeyType;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.sql.Date;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Administrator
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class MkBirthdayGiftRecordVO implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@Id(keyType = KeyType.Auto)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户id
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生日
|
||||||
|
*/
|
||||||
|
private Date birthday;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 赠送优惠券信息
|
||||||
|
*/
|
||||||
|
private List<MkBirthdayGiftRecordCoupon> couponList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已经使用的优惠券
|
||||||
|
*/
|
||||||
|
private List<MkBirthdayGiftRecordCoupon> usedCouponList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
@Column(onInsertValue = "now()")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主店id
|
||||||
|
*/
|
||||||
|
private Long mainShopId;
|
||||||
|
private String phone;
|
||||||
|
private String nickName;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
package com.czg.market.vo;
|
||||||
|
|
||||||
|
import com.czg.market.entity.MkBirthdayGift;
|
||||||
|
import com.czg.market.entity.MkBirthdayGiftConfig;
|
||||||
|
import com.mybatisflex.annotation.Column;
|
||||||
|
import com.mybatisflex.annotation.Id;
|
||||||
|
import com.mybatisflex.annotation.KeyType;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Administrator
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class MkBirthdayGiftVO implements Serializable {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否开启
|
||||||
|
*/
|
||||||
|
private Integer isEnable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否发送短信
|
||||||
|
*/
|
||||||
|
private Integer sendSms;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 短信模板id
|
||||||
|
*/
|
||||||
|
private Long templateId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 配置信息
|
||||||
|
*/
|
||||||
|
private List<MkBirthdayGiftConfig> configList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主店id
|
||||||
|
*/
|
||||||
|
private Long mainShopId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime updateTime;
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.czg.service.market.mapper;
|
||||||
|
|
||||||
|
import com.mybatisflex.core.BaseMapper;
|
||||||
|
import com.czg.market.entity.MkBirthdayGift;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生日有礼 映射层。
|
||||||
|
*
|
||||||
|
* @author zs
|
||||||
|
* @since 2025-10-14
|
||||||
|
*/
|
||||||
|
public interface MkBirthdayGiftMapper extends BaseMapper<MkBirthdayGift> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.czg.service.market.mapper;
|
||||||
|
|
||||||
|
import com.mybatisflex.core.BaseMapper;
|
||||||
|
import com.czg.market.entity.MkBirthdayGiftRecordCoupon;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 映射层。
|
||||||
|
*
|
||||||
|
* @author zs
|
||||||
|
* @since 2025-10-14
|
||||||
|
*/
|
||||||
|
public interface MkBirthdayGiftRecordCouponMapper extends BaseMapper<MkBirthdayGiftRecordCoupon> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.czg.service.market.mapper;
|
||||||
|
|
||||||
|
import com.mybatisflex.core.BaseMapper;
|
||||||
|
import com.czg.market.entity.MkBirthdayGiftRecord;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生日有礼记录 映射层。
|
||||||
|
*
|
||||||
|
* @author zs
|
||||||
|
* @since 2025-10-14
|
||||||
|
*/
|
||||||
|
public interface MkBirthdayGiftRecordMapper extends BaseMapper<MkBirthdayGiftRecord> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.czg.service.market.service.impl;
|
||||||
|
|
||||||
|
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||||
|
import com.czg.market.entity.MkBirthdayGiftRecordCoupon;
|
||||||
|
import com.czg.market.service.MkBirthdayGiftRecordCouponService;
|
||||||
|
import com.czg.service.market.mapper.MkBirthdayGiftRecordCouponMapper;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 服务层实现。
|
||||||
|
*
|
||||||
|
* @author zs
|
||||||
|
* @since 2025-10-14
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class MkBirthdayGiftRecordCouponServiceImpl extends ServiceImpl<MkBirthdayGiftRecordCouponMapper, MkBirthdayGiftRecordCoupon> implements MkBirthdayGiftRecordCouponService{
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.czg.service.market.service.impl;
|
||||||
|
|
||||||
|
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||||
|
import com.czg.market.entity.MkBirthdayGiftRecord;
|
||||||
|
import com.czg.market.service.MkBirthdayGiftRecordService;
|
||||||
|
import com.czg.service.market.mapper.MkBirthdayGiftRecordMapper;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生日有礼记录 服务层实现。
|
||||||
|
*
|
||||||
|
* @author zs
|
||||||
|
* @since 2025-10-14
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class MkBirthdayGiftRecordServiceImpl extends ServiceImpl<MkBirthdayGiftRecordMapper, MkBirthdayGiftRecord> implements MkBirthdayGiftRecordService{
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,116 @@
|
|||||||
|
package com.czg.service.market.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.alibaba.fastjson2.JSONArray;
|
||||||
|
import com.czg.account.entity.ShopUser;
|
||||||
|
import com.czg.market.dto.MkBirthdayGiftDTO;
|
||||||
|
import com.czg.market.entity.*;
|
||||||
|
import com.czg.market.service.MkBirthdayGiftRecordCouponService;
|
||||||
|
import com.czg.market.service.MkBirthdayGiftRecordService;
|
||||||
|
import com.czg.market.vo.MkBirthdayGiftRecordSummaryVO;
|
||||||
|
import com.czg.market.vo.MkBirthdayGiftRecordVO;
|
||||||
|
import com.czg.market.vo.MkBirthdayGiftVO;
|
||||||
|
import com.czg.utils.MyQueryWrapper;
|
||||||
|
import com.czg.utils.PageUtil;
|
||||||
|
import com.mybatisflex.core.paginate.Page;
|
||||||
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
|
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||||
|
import com.czg.market.service.MkBirthdayGiftService;
|
||||||
|
import com.czg.service.market.mapper.MkBirthdayGiftMapper;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生日有礼 服务层实现。
|
||||||
|
*
|
||||||
|
* @author zs
|
||||||
|
* @since 2025-10-14
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class MkBirthdayGiftServiceImpl extends ServiceImpl<MkBirthdayGiftMapper, MkBirthdayGift> implements MkBirthdayGiftService{
|
||||||
|
@Resource
|
||||||
|
private MkBirthdayGiftRecordService birthdayGiftRecordService;
|
||||||
|
@Resource
|
||||||
|
private MkBirthdayGiftRecordCouponService birthdayGiftRecordCouponService;
|
||||||
|
@Override
|
||||||
|
public MkBirthdayGiftVO detail(Long shopId) {
|
||||||
|
MkBirthdayGift gift = getOne(new QueryWrapper().eq(MkBirthdayGift::getMainShopId, shopId));
|
||||||
|
if (gift == null) {
|
||||||
|
gift = new MkBirthdayGift();
|
||||||
|
gift.setMainShopId(shopId);
|
||||||
|
save(gift);
|
||||||
|
gift = getOne(new QueryWrapper().eq(MkBirthdayGift::getMainShopId, shopId));
|
||||||
|
}
|
||||||
|
MkBirthdayGiftVO vo = BeanUtil.copyProperties(gift, MkBirthdayGiftVO.class, "configList");
|
||||||
|
if (StrUtil.isNotBlank(gift.getConfigList())) {
|
||||||
|
vo.setConfigList(JSONArray.parseArray(gift.getConfigList()).toJavaList(MkBirthdayGiftConfig.class));
|
||||||
|
}
|
||||||
|
return vo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean edit(Long shopId, MkBirthdayGiftDTO giftDTO) {
|
||||||
|
MkBirthdayGift birthdayGift = getOne(new QueryWrapper().eq(MkBirthdayGift::getMainShopId, shopId));
|
||||||
|
BeanUtil.copyProperties(giftDTO, birthdayGift);
|
||||||
|
if (giftDTO.getConfigList() != null && !giftDTO.getConfigList().isEmpty()) {
|
||||||
|
birthdayGift.setConfigList(JSONArray.toJSONString(giftDTO.getConfigList()));
|
||||||
|
}
|
||||||
|
return updateById(birthdayGift);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Page<MkBirthdayGiftRecordVO> getRecord(Long shopId, String key, LocalDateTime dateTime) {
|
||||||
|
QueryWrapper queryWrapper = new MyQueryWrapper()
|
||||||
|
.selectAll(MkBirthdayGiftRecord.class)
|
||||||
|
.select(ShopUser::getNickName, ShopUser::getPhone)
|
||||||
|
.eq(MkBirthdayGiftRecord::getMainShopId, shopId)
|
||||||
|
.leftJoin(ShopUser.class).on(ShopUser::getId, MkBirthdayGiftRecord::getShopUserId);
|
||||||
|
if (StrUtil.isNotBlank(key)) {
|
||||||
|
queryWrapper.and(and -> {
|
||||||
|
and.or(or -> {
|
||||||
|
or.like(ShopUser::getNickName, key);
|
||||||
|
}).or(or -> {
|
||||||
|
or.like(ShopUser::getPhone, key);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Page<MkBirthdayGiftRecordVO> recordVOPage = birthdayGiftRecordService.pageAs(PageUtil.buildPage(), queryWrapper, MkBirthdayGiftRecordVO.class);
|
||||||
|
recordVOPage.getRecords().forEach(item -> {
|
||||||
|
item.setCouponList(new ArrayList<>());
|
||||||
|
item.setUsedCouponList(new ArrayList<>());
|
||||||
|
birthdayGiftRecordCouponService.list(new QueryWrapper().eq(MkBirthdayGiftRecordCoupon::getRecordId, item.getId())).forEach(info -> {
|
||||||
|
if ("give".equals(info.getType())) {
|
||||||
|
item.getCouponList().add(info);
|
||||||
|
}else {
|
||||||
|
item.getUsedCouponList().add(info);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return recordVOPage;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MkBirthdayGiftRecordSummaryVO summary(Long shopId, String key, LocalDateTime dateTime) {
|
||||||
|
QueryWrapper queryWrapper = new MyQueryWrapper()
|
||||||
|
.leftJoin(MkBirthdayGiftRecord.class).on(MkBirthdayGiftRecord::getId, MkBirthdayGiftRecordCoupon::getRecordId)
|
||||||
|
.select("sum( IF(type = 'give', num, 0)) as totalNum", "sum( IF(type = 'consume', num, 0)) as usedNum")
|
||||||
|
.eq(MkBirthdayGiftRecord::getMainShopId, shopId)
|
||||||
|
.leftJoin(ShopUser.class).on(ShopUser::getId, MkBirthdayGiftRecord::getShopUserId);
|
||||||
|
if (StrUtil.isNotBlank(key)) {
|
||||||
|
queryWrapper.and(and -> {
|
||||||
|
and.or(or -> {
|
||||||
|
or.like(ShopUser::getNickName, key);
|
||||||
|
}).or(or -> {
|
||||||
|
or.like(ShopUser::getPhone, key);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return birthdayGiftRecordCouponService.getOneAsOpt(queryWrapper, MkBirthdayGiftRecordSummaryVO.class).orElseGet(MkBirthdayGiftRecordSummaryVO::new);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<?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.czg.service.market.mapper.MkBirthdayGiftMapper">
|
||||||
|
|
||||||
|
</mapper>
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<?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.czg.service.market.mapper.MkBirthdayGiftRecordCouponMapper">
|
||||||
|
|
||||||
|
</mapper>
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<?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.czg.service.market.mapper.MkBirthdayGiftRecordMapper">
|
||||||
|
|
||||||
|
</mapper>
|
||||||
Reference in New Issue
Block a user