From 16ef1edc6b631affd128a6af48384f144dbdc563 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 21 Feb 2025 17:27:37 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9C=B8=E7=8E=8B=E9=A4=90=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/FreeDingController.java | 42 +++++++++ .../dto/freeding/FreeDineConfigEditDTO.java | 51 ++++++++++ .../czg/account/entity/FreeDineConfig.java | 94 +++++++++++++++++++ .../service/FreeDineConfigService.java | 19 ++++ .../account/mapper/FreeDineConfigMapper.java | 14 +++ .../impl/FreeDineConfigServiceImpl.java | 48 ++++++++++ .../resources/mapper/FreeDineConfigMapper.xml | 7 ++ 7 files changed, 275 insertions(+) create mode 100644 cash-api/account-server/src/main/java/com/czg/controller/admin/FreeDingController.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/dto/freeding/FreeDineConfigEditDTO.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/entity/FreeDineConfig.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/service/FreeDineConfigService.java create mode 100644 cash-service/account-service/src/main/java/com/czg/service/account/mapper/FreeDineConfigMapper.java create mode 100644 cash-service/account-service/src/main/java/com/czg/service/account/service/impl/FreeDineConfigServiceImpl.java create mode 100644 cash-service/account-service/src/main/resources/mapper/FreeDineConfigMapper.xml diff --git a/cash-api/account-server/src/main/java/com/czg/controller/admin/FreeDingController.java b/cash-api/account-server/src/main/java/com/czg/controller/admin/FreeDingController.java new file mode 100644 index 00000000..6976aff9 --- /dev/null +++ b/cash-api/account-server/src/main/java/com/czg/controller/admin/FreeDingController.java @@ -0,0 +1,42 @@ +package com.czg.controller.admin; + +import com.czg.account.dto.freeding.FreeDineConfigEditDTO; +import com.czg.account.entity.FreeDineConfig; +import com.czg.account.service.FreeDineConfigService; +import com.czg.annotation.SaAdminCheckPermission; +import com.czg.resp.CzgResult; +import com.czg.sa.StpKit; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.*; + +/** + * 霸王餐相关 + * @author Administrator + */ +@RestController +@RequestMapping("/admin/freeDing") +public class FreeDingController { + @Resource + private FreeDineConfigService freeDineConfigService; + + /** + * 获取当前店铺霸王餐配置信息列表 + * @return 霸王餐配置信息 (不存在会新建) + */ + @SaAdminCheckPermission(value = "freeDing:detail", name = "获取霸王餐配置信息") + @GetMapping + public CzgResult getConfig() { + return CzgResult.success(freeDineConfigService.getConfig(StpKit.USER.getShopId())); + } + + /** + * 修改霸王餐配置信息 + * @param freeDineConfigEditDTO 修改信息 + * @return 霸王餐配置信息 + */ + @SaAdminCheckPermission(value = "freeDing:edit", name = "修改霸王餐配置信息") + @PutMapping + public CzgResult edit(@RequestBody FreeDineConfigEditDTO freeDineConfigEditDTO) { + return CzgResult.success(freeDineConfigService.edit(StpKit.USER.getShopId(), freeDineConfigEditDTO)); + } +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/freeding/FreeDineConfigEditDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/freeding/FreeDineConfigEditDTO.java new file mode 100644 index 00000000..e5854ffd --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/freeding/FreeDineConfigEditDTO.java @@ -0,0 +1,51 @@ +package com.czg.account.dto.freeding; + +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author Administrator + */ +@Data +public class FreeDineConfigEditDTO { + /** + * 主键id + */ + @NotNull + private Integer id; + /** + * 是否启用 + */ + private Boolean enable; + /** + * 充值倍数 + */ + @Min(1) + private Integer rechargeTimes; + /** + * 满多少可用 + */ + @Min(value = 0) + private BigDecimal rechargeThreshold; + /** + * 与优惠券同享 + */ + private Boolean withCoupon; + /** + * 积分同享 + */ + private Boolean withPoints; + /** + * 充值说明 + */ + private String rechargeDesc; + /** + * 使用类型 dine-in店内 takeout 自取 post快递,takeaway外卖 + */ + private List useType; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/FreeDineConfig.java b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/FreeDineConfig.java new file mode 100644 index 00000000..da1a3b95 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/FreeDineConfig.java @@ -0,0 +1,94 @@ +package com.czg.account.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.math.BigDecimal; +import java.time.LocalDateTime; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 霸王餐配置信息表 实体类。 + * + * @author zs + * @since 2025-02-21 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("tb_free_dine_config") +public class FreeDineConfig implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @Id(keyType = KeyType.Auto) + private Long id; + + /** + * 是否启用 + */ + private Boolean enable; + + /** + * 充值多少倍免单 + */ + private Integer rechargeTimes; + + /** + * 订单满多少元可以使用 + */ + private BigDecimal rechargeThreshold; + + /** + * 是否与优惠券共享 + */ + private Boolean withCoupon; + + /** + * 是否与积分同享 + */ + private Boolean withPoints; + + /** + * 充值说明 + */ + private String rechargeDesc; + + /** + * 使用类型 dine-in店内 takeout 自取 post快递,takeaway外卖 + */ + private String useType; + + /** + * 门店id + */ + private Long shopId; + + /** + * 创建时间 + */ + @Column(onInsertValue = "now()") + private LocalDateTime createTime; + + /** + * 修改时间 + */ + @Column(onInsertValue = "now()", onUpdateValue = "now()") + private LocalDateTime updateTime; + + /** + * 可用的子门店id + */ + private String childShopIdList; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/service/FreeDineConfigService.java b/cash-common/cash-common-service/src/main/java/com/czg/account/service/FreeDineConfigService.java new file mode 100644 index 00000000..ac44a527 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/service/FreeDineConfigService.java @@ -0,0 +1,19 @@ +package com.czg.account.service; + +import com.czg.account.dto.freeding.FreeDineConfigEditDTO; +import com.mybatisflex.core.service.IService; +import com.czg.account.entity.FreeDineConfig; + +/** + * 霸王餐配置信息表 服务层。 + * + * @author zs + * @since 2025-02-21 + */ +public interface FreeDineConfigService extends IService { + + FreeDineConfig getConfig(long shopId); + + Boolean edit(long shopId, FreeDineConfigEditDTO freeDineConfigEditDTO); + +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/mapper/FreeDineConfigMapper.java b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/FreeDineConfigMapper.java new file mode 100644 index 00000000..c1acf386 --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/FreeDineConfigMapper.java @@ -0,0 +1,14 @@ +package com.czg.service.account.mapper; + +import com.mybatisflex.core.BaseMapper; +import com.czg.account.entity.FreeDineConfig; + +/** + * 霸王餐配置信息表 映射层。 + * + * @author zs + * @since 2025-02-21 + */ +public interface FreeDineConfigMapper extends BaseMapper { + +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/FreeDineConfigServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/FreeDineConfigServiceImpl.java new file mode 100644 index 00000000..ae70535f --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/FreeDineConfigServiceImpl.java @@ -0,0 +1,48 @@ +package com.czg.service.account.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson2.JSONObject; +import com.czg.account.dto.freeding.FreeDineConfigEditDTO; +import com.czg.exception.ApiNotPrintException; +import com.mybatisflex.core.query.QueryWrapper; +import com.mybatisflex.spring.service.impl.ServiceImpl; +import com.czg.account.entity.FreeDineConfig; +import com.czg.account.service.FreeDineConfigService; +import com.czg.service.account.mapper.FreeDineConfigMapper; +import org.springframework.stereotype.Service; + +/** + * 霸王餐配置信息表 服务层实现。 + * + * @author zs + * @since 2025-02-21 + */ +@Service +public class FreeDineConfigServiceImpl extends ServiceImpl implements FreeDineConfigService{ + @Override + public FreeDineConfig getConfig(long shopId) { + FreeDineConfig freeDineConfig = getOne(new QueryWrapper().eq(FreeDineConfig::getShopId, shopId)); + if (freeDineConfig == null) { + freeDineConfig = new FreeDineConfig(); + freeDineConfig.setShopId(shopId); + save(freeDineConfig); + } + + return freeDineConfig; + } + + @Override + public Boolean edit(long shopId, FreeDineConfigEditDTO freeDineConfigEditDTO) { + FreeDineConfig config = getConfig(shopId); + if (config == null) { + throw new ApiNotPrintException("霸王餐信息未配置"); + } + BeanUtil.copyProperties(freeDineConfigEditDTO, config); + if (freeDineConfigEditDTO.getUseType() != null && !freeDineConfigEditDTO.getUseType().isEmpty()) { + config.setUseType(JSONObject.toJSONString(freeDineConfigEditDTO.getUseType())); + } + return updateById(config); + } +} diff --git a/cash-service/account-service/src/main/resources/mapper/FreeDineConfigMapper.xml b/cash-service/account-service/src/main/resources/mapper/FreeDineConfigMapper.xml new file mode 100644 index 00000000..fe0c1839 --- /dev/null +++ b/cash-service/account-service/src/main/resources/mapper/FreeDineConfigMapper.xml @@ -0,0 +1,7 @@ + + + + +