diff --git a/cash-api/market-server/src/main/java/com/czg/controller/admin/SmsPushEventController.java b/cash-api/market-server/src/main/java/com/czg/controller/admin/SmsPushEventController.java index 379e4642..d9477eb9 100644 --- a/cash-api/market-server/src/main/java/com/czg/controller/admin/SmsPushEventController.java +++ b/cash-api/market-server/src/main/java/com/czg/controller/admin/SmsPushEventController.java @@ -1,6 +1,5 @@ package com.czg.controller.admin; -import com.czg.BaseQueryParam; import com.czg.market.dto.SmsPushEventDTO; import com.czg.market.service.SmsPushEventService; import com.czg.resp.CzgResult; @@ -29,8 +28,10 @@ public class SmsPushEventController { * 列表 */ @GetMapping - public CzgResult> getPushEventPage(@RequestParam BaseQueryParam param, @RequestParam(required = false) Long id) { - Page data = pushEventService.getPushEventPage(param, StpKit.USER.getShopId(), id); + public CzgResult> getPushEventPage(@RequestParam(required = false, defaultValue = "1") Integer page, + @RequestParam(required = false, defaultValue = "10") Integer size, + @RequestParam(required = false) Long id) { + Page data = pushEventService.getPushEventPage(page, size, StpKit.USER.getShopId(), id); return CzgResult.success(data); } diff --git a/cash-api/market-server/src/main/java/com/czg/controller/admin/SmsShopTemplateController.java b/cash-api/market-server/src/main/java/com/czg/controller/admin/SmsShopTemplateController.java index ceb79f71..ed7495c6 100644 --- a/cash-api/market-server/src/main/java/com/czg/controller/admin/SmsShopTemplateController.java +++ b/cash-api/market-server/src/main/java/com/czg/controller/admin/SmsShopTemplateController.java @@ -1,42 +1,58 @@ + package com.czg.controller.admin; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.czg.market.dto.SmsShopMoneyDetailDTO; import com.czg.market.dto.SmsShopTemplateDTO; +import com.czg.market.entity.SmsShopMoney; +import com.czg.market.service.SmsShopMoneyDetailService; import com.czg.market.service.SmsShopTemplateService; import com.czg.resp.CzgResult; import com.czg.sa.StpKit; +import com.czg.service.market.mapper.SmsShopMoneyMapper; import com.czg.validator.group.InsertGroup; import com.czg.validator.group.UpdateGroup; +import com.mybatisflex.core.paginate.Page; +import com.mybatisflex.core.query.QueryWrapper; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; import java.util.List; /** * 短信模板 + * * @author ww * @description */ @Slf4j @RestController -@RequestMapping("/admin/smsTemplate") +@RequestMapping("/admin") public class SmsShopTemplateController { @Resource private SmsShopTemplateService templateService; + @Resource + private SmsShopMoneyDetailService smsMoneyDetailService; + @Resource + private SmsShopMoneyMapper shopMoneyMapper; /** * 列表 */ - @GetMapping + @GetMapping("/smsTemplate") public CzgResult> getTemplateList(@RequestParam(required = false) String title) { List data = templateService.getTemplateList(title, StpKit.USER.getShopId()); return CzgResult.success(data); } + /** * 新增 */ - @PostMapping + @PostMapping("/smsTemplate") public CzgResult addTemplate(@RequestBody @Validated(InsertGroup.class) SmsShopTemplateDTO param) { param.setShopId(StpKit.USER.getShopId()); templateService.addTemplate(param); @@ -47,10 +63,41 @@ public class SmsShopTemplateController { * 重新提交 * 状态为 -1 失败的 可以修改模板重新提交 */ - @PostMapping("/resubmit") + @PostMapping("/smsTemplate/resubmit") public CzgResult resubmit(@RequestBody @Validated(UpdateGroup.class) SmsShopTemplateDTO param) { param.setShopId(StpKit.USER.getShopId()); templateService.resubmit(param); return CzgResult.success(); } + + /** + * 获取店铺短信余额 + */ + @GetMapping("/smsMoney") + public CzgResult getShopSmsMoney() { + SmsShopMoney shopMoney = shopMoneyMapper.selectOneByQuery( + new QueryWrapper() + .eq(SmsShopMoney::getShopId, StpKit.USER.getShopId()) + ); + if (shopMoney == null) { + shopMoney = new SmsShopMoney(); + shopMoney.setShopId(StpKit.USER.getShopId()); + shopMoney.setMoney(BigDecimal.ZERO); + shopMoneyMapper.insert(shopMoney); + } + return CzgResult.success(shopMoney); + } + + /** + * 获取店铺短信余额明细 + */ + @GetMapping("/smsMoneyDetail") + public CzgResult getSmsMoneyDetailPage(@RequestParam(required = false) Integer page, + @RequestParam(required = false) Integer size) { + Page data = smsMoneyDetailService.getSmsMoneyDetailPage(StpKit.USER.getShopId()); + JSONObject from = JSONObject.from(data); + from.put("sendTotal", smsMoneyDetailService.countSendTotal(StpKit.USER.getShopId())); + from.put("sendAmountTotal", smsMoneyDetailService.countSendAmountTotal(StpKit.USER.getShopId())); + return CzgResult.success(from); + } } diff --git a/cash-api/market-server/src/main/java/com/czg/task/AAMarketTasks.java b/cash-api/market-server/src/main/java/com/czg/task/AAMarketTasks.java new file mode 100644 index 00000000..a0d2e65f --- /dev/null +++ b/cash-api/market-server/src/main/java/com/czg/task/AAMarketTasks.java @@ -0,0 +1,46 @@ +package com.czg.task; + +import jakarta.annotation.Resource; +import org.springframework.scheduling.annotation.Scheduled; + +/** + * market服务 任务总调度 + * @author ww + * @description + */ +public class AAMarketTasks { + //生日有礼奖励发放 + @Resource + private BirthdayGiftTask birthdayGiftTask; + @Scheduled(cron = "0 0 12 * * ?") + public void birthdayGiftTask() { + birthdayGiftTask.deliver(); + } + + + //优惠券 过期 + @Resource + private CouponTask couponTask; + @Scheduled(cron = "0 30 * * * ? ") + public void couponTask() { + couponTask.task(); + } + + //会员奖励发放 + @Resource + private MemberTask memberTask; + @Scheduled(cron = "0 0 1 * * ? ") + public void memberTask() { + memberTask.task(); + } + + //满减活动定时任务 + @Resource + private DiscountActivityTask discountActivityTask; + @Scheduled(cron = "1 0 0 * * ? ") + public void discountActivityTask() { + discountActivityTask.task(); + } + + +} diff --git a/cash-api/market-server/src/main/java/com/czg/task/BirthdayGiftTask.java b/cash-api/market-server/src/main/java/com/czg/task/BirthdayGiftTask.java index 2e51a25d..3b5c6d5a 100644 --- a/cash-api/market-server/src/main/java/com/czg/task/BirthdayGiftTask.java +++ b/cash-api/market-server/src/main/java/com/czg/task/BirthdayGiftTask.java @@ -31,7 +31,7 @@ public class BirthdayGiftTask { /** * 生日有礼奖励发放 */ - @Scheduled(cron = "0 0 12 * * ?") +// @Scheduled(cron = "0 0 12 * * ?") public void deliver() { birthdayGiftService.deliver(); } diff --git a/cash-api/market-server/src/main/java/com/czg/task/CouponTask.java b/cash-api/market-server/src/main/java/com/czg/task/CouponTask.java index 5ff7021b..c5249e63 100644 --- a/cash-api/market-server/src/main/java/com/czg/task/CouponTask.java +++ b/cash-api/market-server/src/main/java/com/czg/task/CouponTask.java @@ -31,8 +31,8 @@ public class CouponTask { /** * 优惠券 过期 */ - @Scheduled(cron = "0 30 * * * ? ") - public void deliver() { +// @Scheduled(cron = "0 30 * * * ? ") + public void task() { try { LocalDateTime now = LocalDateTime.now(); mkShopCouponRecordService.update(new MkShopCouponRecord().setStatus(2), new QueryWrapper() diff --git a/cash-api/market-server/src/main/java/com/czg/task/DiscountActivityTask.java b/cash-api/market-server/src/main/java/com/czg/task/DiscountActivityTask.java new file mode 100644 index 00000000..1d6254b4 --- /dev/null +++ b/cash-api/market-server/src/main/java/com/czg/task/DiscountActivityTask.java @@ -0,0 +1,38 @@ +package com.czg.task; + +import com.czg.market.entity.MkDiscountActivity; +import com.czg.market.service.MkDiscountActivityService; +import com.mybatisflex.core.query.QueryWrapper; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; + +/** + * 满减活动定时任务 + * + * @author ww + * @description + */ +@Slf4j +@Component +public class DiscountActivityTask { + @Resource + private MkDiscountActivityService discountActivityService; + + /** + * 满减活动 过期 + */ + public void task() { + discountActivityService.update(new MkDiscountActivity().setStatus(2), + new QueryWrapper() + .eq(MkDiscountActivity::getStatus, 1) + .le(MkDiscountActivity::getValidStartTime, LocalDateTime.now()) + .gt(MkDiscountActivity::getValidEndTime, LocalDateTime.now()) + ); + discountActivityService.update(new MkDiscountActivity().setStatus(3), + new QueryWrapper().le(MkDiscountActivity::getValidEndTime, LocalDateTime.now()) + ); + } +} diff --git a/cash-api/market-server/src/main/java/com/czg/task/MemberTask.java b/cash-api/market-server/src/main/java/com/czg/task/MemberTask.java index 9f738a7b..83a40f26 100644 --- a/cash-api/market-server/src/main/java/com/czg/task/MemberTask.java +++ b/cash-api/market-server/src/main/java/com/czg/task/MemberTask.java @@ -37,8 +37,8 @@ public class MemberTask { /** * 奖励发放 */ - @Scheduled(cron = "0 0 1 * * ? ") - public void deliver() { +// @Scheduled(cron = "0 0 1 * * ? ") + public void task() { shopUserService.list(new QueryWrapper().eq(ShopUser::getIsVip, 1).lt(ShopUser::getNextDeliverTime, DateUtil.date().toLocalDateTime())).forEach(item -> { memberConfigService.deliver(item.getSourceShopId(), item.getUserId(), TableValueConstant.MemberExpFlow.Type.MEMBER_TASK, null, null, null); }); diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/dto/SmsShopMoneyDetailDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/market/dto/SmsShopMoneyDetailDTO.java new file mode 100644 index 00000000..8a42c524 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/dto/SmsShopMoneyDetailDTO.java @@ -0,0 +1,61 @@ + +package com.czg.market.dto; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.experimental.Accessors; +import java.io.Serial; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 短信余额明细 实体类。 + * + * @author ww + * @since 2025-10-16 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Accessors(chain = true) +public class SmsShopMoneyDetailDTO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + private Long id; + + private Long shopId; + + /** + * 变动原因 + */ + private String reason; + + /** + * 1+ 2- + */ + private Integer type; + + /** + * 发送条数 + */ + private Long sendRows; + + /** + * 消费值 + */ + private BigDecimal expense; + + /** + * 余额 + */ + private BigDecimal balance; + + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/SmsPushEventUser.java b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/SmsPushEventUser.java index dee3ba74..b25237c7 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/SmsPushEventUser.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/SmsPushEventUser.java @@ -107,6 +107,28 @@ public class SmsPushEventUser implements Serializable { private Integer page; @Column(ignore = true) private Integer size; + @Column(ignore = true) + private Integer isAll; + + /** + * 是否查询所有用户 1查询所有用户 其余不查 + */ + public void checkIsAll() { + if (isAll != null && isAll == 1) { + sexMan = 0; + sexWoman = 0; + sexUnknown = 0; + isVip = null; + isRecharge = null; + noOrder = 0; + oneOrder = 0; + fiveOrder = 0; + orderTimeToday = 0; + orderTimeYesterday = 0; + orderTimeTwoWeeks = 0; + orderTimeMoreThanTwoWeeks = 0; + } + } public Integer getPage() { return page == null ? 1 : page; diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/SmsShopMoney.java b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/SmsShopMoney.java new file mode 100644 index 00000000..d6c0b193 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/SmsShopMoney.java @@ -0,0 +1,47 @@ +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.math.BigDecimal; +import java.time.LocalDateTime; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 店铺短信余额 实体类。 + * + * @author ww + * @since 2025-10-16 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("sms_shop_money") +public class SmsShopMoney implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @Id(keyType = KeyType.Auto) + private Long id; + + private Long shopId; + + private BigDecimal money; + + @Column(onInsertValue = "now()") + private LocalDateTime createTime; + + @Column(onInsertValue = "now()", onUpdateValue = "now()") + private LocalDateTime updateTime; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/SmsShopMoneyDetail.java b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/SmsShopMoneyDetail.java new file mode 100644 index 00000000..90e60e6d --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/SmsShopMoneyDetail.java @@ -0,0 +1,69 @@ +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.math.BigDecimal; +import java.time.LocalDateTime; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 短信余额明细 实体类。 + * + * @author ww + * @since 2025-10-16 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("sms_shop_money_detail") +public class SmsShopMoneyDetail implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @Id(keyType = KeyType.Auto) + private Long id; + + private Long shopId; + + /** + * 变动原因 + */ + private String reason; + + /** + * 1+ 2- + */ + private Integer type; + + /** + * 消费值 + */ + private BigDecimal expense; + + /** + * 余额 + */ + private BigDecimal balance; + /** + * 发送短信条数 + */ + private Long sendRows; + + @Column(onInsertValue = "now()") + private LocalDateTime createTime; + + @Column(isLogicDelete = true) + private Integer isDel; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/service/SmsPushEventService.java b/cash-common/cash-common-service/src/main/java/com/czg/market/service/SmsPushEventService.java index 16f624b4..5a41067c 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/service/SmsPushEventService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/service/SmsPushEventService.java @@ -17,7 +17,7 @@ public interface SmsPushEventService extends IService { /** * 分页查询营销推送发送记录列表 */ - Page getPushEventPage(BaseQueryParam param, Long shopId, Long id); + Page getPushEventPage(Integer page, Integer size, Long shopId, Long id); /** * 添加营销推送发送任务 diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/service/SmsShopMoneyDetailService.java b/cash-common/cash-common-service/src/main/java/com/czg/market/service/SmsShopMoneyDetailService.java new file mode 100644 index 00000000..eb35479f --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/service/SmsShopMoneyDetailService.java @@ -0,0 +1,27 @@ +package com.czg.market.service; + +import com.czg.market.dto.SmsShopMoneyDetailDTO; +import com.czg.market.entity.SmsShopMoneyDetail; +import com.mybatisflex.core.paginate.Page; +import com.mybatisflex.core.service.IService; + +import java.math.BigDecimal; + +/** + * 短信余额明细 服务层。 + * + * @author ww + * @since 2025-10-16 + */ +public interface SmsShopMoneyDetailService extends IService { + + Page getSmsMoneyDetailPage(Long shopId); + /** + * 统计发送短信总数 + */ + Long countSendTotal(Long shopId); + /** + * 统计发送短信累计金额 + */ + BigDecimal countSendAmountTotal(Long shopId); +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopUserMapper.java b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopUserMapper.java index bc089a3b..b00da2c3 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopUserMapper.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopUserMapper.java @@ -43,10 +43,10 @@ public interface ShopUserMapper extends BaseMapper { * @param shopId 店铺ID * @return 分页结果 */ - Page selectPushEventUser( + List selectPushEventUser( @Param("mainShopId") Long mainShopId, @Param("shopId") Long shopId, - SmsPushEventUser smsPushEventUser + @Param("param") SmsPushEventUser smsPushEventUser ); } diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AShopUserServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AShopUserServiceImpl.java index 14834035..392b4785 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AShopUserServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AShopUserServiceImpl.java @@ -29,15 +29,13 @@ import com.github.pagehelper.PageInfo; import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.query.QueryWrapper; import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboService; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.util.Arrays; import java.util.List; -import java.util.stream.Collectors; /** @@ -46,6 +44,7 @@ import java.util.stream.Collectors; * @author Administrator * @since 2025-02-08 */ +@Slf4j @DubboService public class AShopUserServiceImpl implements AShopUserService { @Resource @@ -95,14 +94,18 @@ public class AShopUserServiceImpl implements AShopUserService { @Override public Page getPushEventUser(SmsPushEventUser smsPushEventUser) { - PageHelper.startPage(new Page<>(smsPushEventUser.getPage(), smsPushEventUser.getSize())); - Long mainShopId = shopInfoService.getMainIdByShopId(smsPushEventUser.getShopId()); - // 调用Mapper层查询 - return shopUserMapper.selectPushEventUser( - mainShopId, - smsPushEventUser.getShopId(), - smsPushEventUser - ); + try { + Long mainShopId = shopInfoService.getMainIdByShopId(smsPushEventUser.getShopId()); + PageHelper.startPage(smsPushEventUser.getPage(), smsPushEventUser.getSize()); + smsPushEventUser.checkIsAll(); + // 调用Mapper层查询 + List shopUsers = shopUserMapper.selectPushEventUser(mainShopId, + smsPushEventUser.getShopId(), smsPushEventUser); + return PageUtil.convert(new PageInfo<>(shopUsers)); + }catch (Exception e){ + log.info("获取营销推送任务用户列表失败{},{}", smsPushEventUser, e.getMessage()); + return PageUtil.convert(new PageInfo<>()); + } } @Override diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopUserServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopUserServiceImpl.java index 4a66ba1b..4475d18a 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopUserServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopUserServiceImpl.java @@ -51,7 +51,6 @@ public class ShopUserServiceImpl extends ServiceImpl i } - @Override public ShopUser getShopUserInfo(Long shopId, long userId) { Long mainShopId = shopInfoService.getMainIdByShopId(shopId); @@ -117,6 +116,11 @@ public class ShopUserServiceImpl extends ServiceImpl i shopUser.setConsumeCount(userInfo.getConsumeCount() + 1); shopUser.setConsumeAmount(userInfo.getConsumeAmount().add(shopUserEditDTO.getMoney())); updateById(shopUser); + } else if (shopUserEditDTO.getType() == 1 && shopUserEditDTO.getBizEnum().getCode().contains("In")) { + ShopUser shopUser = new ShopUser(); + shopUser.setId(userInfo.getId()); + shopUser.setRechargeCount(userInfo.getRechargeCount() + 1); + updateById(shopUser); } return userFlow.getId(); } diff --git a/cash-service/account-service/src/main/resources/mapper/ShopUserMapper.xml b/cash-service/account-service/src/main/resources/mapper/ShopUserMapper.xml index 7156453b..a76e284c 100644 --- a/cash-service/account-service/src/main/resources/mapper/ShopUserMapper.xml +++ b/cash-service/account-service/src/main/resources/mapper/ShopUserMapper.xml @@ -122,9 +122,9 @@ u.id, u.head_img, u.nick_name, u.amount, u.account_points, u.phone, - + COUNT(o.id) AS order_count, SUM(CASE WHEN o.trade_day = CURDATE() THEN 1 ELSE 0 END) AS today_orders, SUM(CASE WHEN o.trade_day = CURDATE() - INTERVAL 1 DAY THEN 1 ELSE 0 END) AS yesterday_orders, @@ -141,54 +141,48 @@ 0 AS earlier_orders - FROM shop_user u + FROM tb_shop_user u - - LEFT JOIN `order` o ON u.user_id = o.user_id and o.user_id is not null AND o.shop_id = #{shopId} AND o.status = 'done' + + LEFT JOIN `tb_order_info` o ON u.user_id = o.user_id and o.user_id is not null AND o.shop_id = #{shopId} AND o.status = 'done' WHERE u.main_shop_id = #{mainShopId} and u.phone is not null - + AND - OR u.sex = 1 - OR u.sex = 0 - OR u.sex IS NULL + OR u.sex = 1 + OR u.sex = 0 + OR u.sex IS NULL - - AND u.is_vip = #{isVip} + + AND u.is_vip = #{param.isVip} - - - AND - - u.recharge_count = 0 - - - u.recharge_count > 0 - - + + AND u.recharge_count '} ]]> 0 + - + GROUP BY u.id HAVING - OR today_orders > 0 - OR yesterday_orders > 0 - OR two_weeks_orders > 0 - OR earlier_orders > 0 + OR today_orders > 0 + OR yesterday_orders > 0 + OR two_weeks_orders > 0 + OR earlier_orders > 0 - OR order_count = 0 - OR order_count = 1 - OR order_count >= 5 + OR order_count = 0 + OR order_count = 1 + OR order_count >= 5 order by u.create_time desc diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/mapper/SmsShopMoneyDetailMapper.java b/cash-service/market-service/src/main/java/com/czg/service/market/mapper/SmsShopMoneyDetailMapper.java new file mode 100644 index 00000000..50aa4d06 --- /dev/null +++ b/cash-service/market-service/src/main/java/com/czg/service/market/mapper/SmsShopMoneyDetailMapper.java @@ -0,0 +1,14 @@ +package com.czg.service.market.mapper; + +import com.mybatisflex.core.BaseMapper; +import com.czg.market.entity.SmsShopMoneyDetail; + +/** + * 短信余额明细 映射层。 + * + * @author ww + * @since 2025-10-16 + */ +public interface SmsShopMoneyDetailMapper extends BaseMapper { + +} diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/mapper/SmsShopMoneyMapper.java b/cash-service/market-service/src/main/java/com/czg/service/market/mapper/SmsShopMoneyMapper.java new file mode 100644 index 00000000..9a5e4d44 --- /dev/null +++ b/cash-service/market-service/src/main/java/com/czg/service/market/mapper/SmsShopMoneyMapper.java @@ -0,0 +1,14 @@ +package com.czg.service.market.mapper; + +import com.mybatisflex.core.BaseMapper; +import com.czg.market.entity.SmsShopMoney; + +/** + * 店铺短信余额 映射层。 + * + * @author ww + * @since 2025-10-16 + */ +public interface SmsShopMoneyMapper extends BaseMapper { + +} diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDiscountActivityServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDiscountActivityServiceImpl.java index e93bc3c9..f6d624b3 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDiscountActivityServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDiscountActivityServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil; import com.czg.TimeQueryParam; import com.czg.account.entity.ShopInfo; import com.czg.account.service.ShopInfoService; +import com.czg.exception.CzgException; import com.czg.market.dto.MkDiscountActivityDTO; import com.czg.market.entity.MkDiscountActivity; import com.czg.market.entity.MkDiscountThreshold; @@ -21,7 +22,11 @@ import jakarta.annotation.Resource; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; /** * 商家满减活动表 服务层实现。 @@ -62,11 +67,17 @@ public class MkDiscountActivityServiceImpl extends ServiceImpl getPushEventPage(BaseQueryParam param, Long shopId, Long id) { + public Page getPushEventPage(Integer page, Integer size, Long shopId, Long id) { QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq(SmsPushEvent::getShopId, shopId) .eq(SmsPushEvent::getId, id) .eq(SmsPushEvent::getIsDel, 0) .orderBy(SmsPushEvent::getCreateTime).desc(); - Page page = pageAs(new Page<>(param.getPage(), param.getSize()), queryWrapper, SmsPushEventDTO.class); - for (SmsPushEventDTO record : page.getRecords()) { + Page page1 = pageAs(new Page<>(page, size), queryWrapper, SmsPushEventDTO.class); + for (SmsPushEventDTO record : page1.getRecords()) { if (record.getUserType() != 2) { continue; } @@ -54,7 +54,7 @@ public class SmsPushEventServiceImpl extends ServiceImpl implements SmsShopMoneyDetailService { + + @Override + public Page getSmsMoneyDetailPage(Long shopId) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq(SmsShopMoneyDetail::getShopId, shopId) + .eq(SmsShopMoneyDetail::getIsDel, 0) + .orderBy(SmsShopMoneyDetail::getCreateTime).desc(); + return pageAs(PageUtil.buildPage(), queryWrapper, SmsShopMoneyDetailDTO.class); + } + + @Override + public Long countSendTotal(Long shopId) { + QueryWrapper queryWrapper = new QueryWrapper() + .eq(SmsShopMoneyDetail::getShopId, shopId) + .gt(SmsShopMoneyDetail::getSendRows, 0) + .eq(SmsShopMoneyDetail::getType, 2) + .eq(SmsShopMoneyDetail::getIsDel, 0); + return count(queryWrapper); + } + + @Override + public BigDecimal countSendAmountTotal(Long shopId) { + QueryWrapper queryWrapper = new QueryWrapper() + .select("sum(expense)") + .eq(SmsShopMoneyDetail::getShopId, shopId) + .gt(SmsShopMoneyDetail::getSendRows, 0) + .eq(SmsShopMoneyDetail::getType, 2) + .eq(SmsShopMoneyDetail::getIsDel, 0); + return getOneAs(queryWrapper, BigDecimal.class); + } +} diff --git a/cash-service/market-service/src/main/resources/mapper/SmsShopMoneyDetailMapper.xml b/cash-service/market-service/src/main/resources/mapper/SmsShopMoneyDetailMapper.xml new file mode 100644 index 00000000..c617ff13 --- /dev/null +++ b/cash-service/market-service/src/main/resources/mapper/SmsShopMoneyDetailMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/cash-service/market-service/src/main/resources/mapper/SmsShopMoneyMapper.xml b/cash-service/market-service/src/main/resources/mapper/SmsShopMoneyMapper.xml new file mode 100644 index 00000000..f48bd34b --- /dev/null +++ b/cash-service/market-service/src/main/resources/mapper/SmsShopMoneyMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java index 94acd6f4..07820d03 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java @@ -338,7 +338,8 @@ public class OrderInfoServiceImpl extends ServiceImpl 0) { //检查满减活动是否开启 discountAct = discountActService.checkDiscountAct(orderInfo.getShopId(), - CollUtil.isNotEmpty(param.getCouponList()), param.isVipPrice(), param.getPointsDiscountAmount().compareTo(BigDecimal.ZERO) > 0); + CollUtil.isNotEmpty(param.getCouponList()), param.isVipPrice(), + param.getPointsDiscountAmount().compareTo(BigDecimal.ZERO) > 0); } orderInfo.setSeatNum(param.getSeatNum()); if (shopInfo.getIsTableFee() != 1 && shopInfo.getTableFee().compareTo(BigDecimal.ZERO) != 0) {