短信店铺配置
This commit is contained in:
@@ -1,10 +1,7 @@
|
||||
|
||||
package com.czg.controller.admin;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.czg.TimeQueryParam;
|
||||
import com.czg.annotation.SaAdminCheckLogin;
|
||||
import com.czg.annotation.SaAdminCheckRole;
|
||||
import com.czg.market.dto.SmsMoneyDetailDto;
|
||||
import com.czg.market.dto.SmsShopMoneyDetailDTO;
|
||||
@@ -13,7 +10,9 @@ import com.czg.market.dto.SmsTemplateQueryDTO;
|
||||
import com.czg.market.entity.SmsShopMoney;
|
||||
import com.czg.market.entity.SmsShopMoneyDetail;
|
||||
import com.czg.market.service.SmsShopMoneyDetailService;
|
||||
import com.czg.market.service.SmsShopMoneyService;
|
||||
import com.czg.market.service.SmsShopTemplateService;
|
||||
import com.czg.market.vo.SmsShopMoneyVO;
|
||||
import com.czg.resp.CzgResult;
|
||||
import com.czg.sa.StpKit;
|
||||
import com.czg.service.market.mapper.SmsShopMoneyMapper;
|
||||
@@ -44,7 +43,7 @@ public class SmsShopTemplateController {
|
||||
@Resource
|
||||
private SmsShopMoneyDetailService smsMoneyDetailService;
|
||||
@Resource
|
||||
private SmsShopMoneyMapper shopMoneyMapper;
|
||||
private SmsShopMoneyService shopMoneyService;
|
||||
|
||||
/**
|
||||
* 列表
|
||||
@@ -115,34 +114,31 @@ public class SmsShopTemplateController {
|
||||
*/
|
||||
@GetMapping("/smsMoney")
|
||||
public CzgResult<SmsShopMoney> 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);
|
||||
}
|
||||
SmsShopMoney shopMoney = shopMoneyService.getShopMoney(StpKit.USER.getShopId());
|
||||
return CzgResult.success(shopMoney);
|
||||
}
|
||||
|
||||
/**
|
||||
* 平台:短信店铺配置
|
||||
*/
|
||||
@SaAdminCheckRole("管理员")
|
||||
@GetMapping("/smsMoney/page")
|
||||
public CzgResult<Page<SmsShopMoneyVO>> getShopSmsMoneyPage(@RequestParam(required = false) Integer page,
|
||||
@RequestParam(required = false) Integer size,
|
||||
@RequestParam(required = false) String name
|
||||
) {
|
||||
Page<SmsShopMoneyVO> data = shopMoneyService.getShopMoneyPage(page, size, name);
|
||||
return CzgResult.success(data);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 变更店铺短信余额
|
||||
*/
|
||||
@PostMapping("/smsMoney/change")
|
||||
public CzgResult<Void> change(@RequestBody SmsShopMoneyDetailDTO money) {
|
||||
Long shopId = StpKit.USER.getShopId();
|
||||
SmsShopMoney shopMoney = shopMoneyMapper.selectOneByQuery(
|
||||
new QueryWrapper().eq(SmsShopMoney::getShopId, shopId)
|
||||
);
|
||||
if (shopMoney == null) {
|
||||
shopMoney = new SmsShopMoney();
|
||||
shopMoney.setShopId(shopId);
|
||||
shopMoney.setMoney(BigDecimal.ZERO);
|
||||
shopMoneyMapper.insert(shopMoney);
|
||||
}
|
||||
SmsShopMoney shopMoney = shopMoneyService.getShopMoney(shopId);
|
||||
SmsShopMoneyDetail moneyDetail = BeanUtil.toBean(money, SmsShopMoneyDetail.class);
|
||||
moneyDetail.setShopId(shopId);
|
||||
if (money.getType() == 1) {
|
||||
@@ -153,7 +149,7 @@ public class SmsShopTemplateController {
|
||||
moneyDetail.setBalance(shopMoney.getMoney());
|
||||
moneyDetail.setSendRows(0L);
|
||||
smsMoneyDetailService.save(moneyDetail);
|
||||
shopMoneyMapper.update(shopMoney, true);
|
||||
shopMoneyService.updateById(shopMoney);
|
||||
return CzgResult.success();
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ public class AAMarketTasks {
|
||||
//生日有礼奖励发放
|
||||
@Resource
|
||||
private BirthdayGiftTask birthdayGiftTask;
|
||||
//每天12时0分 0秒 执行
|
||||
@Scheduled(cron = "0 0 12 * * ?")
|
||||
public void birthdayGiftTask() {
|
||||
birthdayGiftTask.deliver();
|
||||
@@ -21,6 +22,7 @@ public class AAMarketTasks {
|
||||
//优惠券 过期
|
||||
@Resource
|
||||
private CouponTask couponTask;
|
||||
//每天每小时的30分 0秒 执行
|
||||
@Scheduled(cron = "0 30 * * * ? ")
|
||||
public void couponTask() {
|
||||
couponTask.task();
|
||||
@@ -29,6 +31,7 @@ public class AAMarketTasks {
|
||||
//会员奖励发放
|
||||
@Resource
|
||||
private MemberTask memberTask;
|
||||
//每天1点 0分 0秒 执行
|
||||
@Scheduled(cron = "0 0 1 * * ? ")
|
||||
public void memberTask() {
|
||||
memberTask.task();
|
||||
@@ -37,10 +40,20 @@ public class AAMarketTasks {
|
||||
//满减活动定时任务
|
||||
@Resource
|
||||
private DiscountActivityTask discountActivityTask;
|
||||
//每天0点 0分 1秒 执行
|
||||
@Scheduled(cron = "1 0 0 * * ? ")
|
||||
public void discountActivityTask() {
|
||||
discountActivityTask.task();
|
||||
}
|
||||
|
||||
|
||||
@Resource
|
||||
private SmsShopMoneyTask smsShopMoneyTask;
|
||||
//每月1号 0点 0分 1秒 执行
|
||||
@Scheduled(cron = "1 0 0 1 * ?")
|
||||
public void smsShopMoneyTask() {
|
||||
smsShopMoneyTask.task();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.czg.task;
|
||||
|
||||
import com.czg.market.entity.SmsShopMoney;
|
||||
import com.czg.service.market.mapper.SmsShopMoneyMapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* @author ww
|
||||
* @description
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class SmsShopMoneyTask {
|
||||
|
||||
@Resource
|
||||
private SmsShopMoneyMapper shopMoneyMapper;
|
||||
|
||||
public void task() {
|
||||
SmsShopMoney smsShopMoney = new SmsShopMoney();
|
||||
smsShopMoney.setMonthAmountTotal(BigDecimal.ZERO);
|
||||
smsShopMoney.setMonthSendTotal(0L);
|
||||
shopMoneyMapper.updateByMap(smsShopMoney, true, new HashMap<>());
|
||||
}
|
||||
}
|
||||
@@ -38,6 +38,11 @@ public class SmsShopMoney implements Serializable {
|
||||
|
||||
private BigDecimal money;
|
||||
|
||||
private Long sendTotal;
|
||||
private BigDecimal amountTotal;
|
||||
private Long monthSendTotal;
|
||||
private BigDecimal monthAmountTotal;
|
||||
|
||||
@Column(onInsertValue = "now()")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.czg.market.service;
|
||||
|
||||
import com.czg.market.vo.SmsShopMoneyVO;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.service.IService;
|
||||
import com.czg.market.entity.SmsShopMoney;
|
||||
|
||||
/**
|
||||
* 店铺短信余额 服务层。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-16
|
||||
*/
|
||||
public interface SmsShopMoneyService extends IService<SmsShopMoney> {
|
||||
/**
|
||||
* 获取店铺短信余额 信息
|
||||
*/
|
||||
SmsShopMoney getShopMoney(Long shopId);
|
||||
|
||||
/**
|
||||
* 获取店铺短信余额分页列表
|
||||
*/
|
||||
Page<SmsShopMoneyVO> getShopMoneyPage(Integer page, Integer size, String name);
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.czg.market.vo;
|
||||
|
||||
import com.czg.market.entity.SmsShopMoney;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author ww
|
||||
* @description
|
||||
*/
|
||||
@Data
|
||||
public class SmsShopMoneyVO extends SmsShopMoney {
|
||||
|
||||
/**
|
||||
* 店铺名称
|
||||
*/
|
||||
private String shopName;
|
||||
/**
|
||||
* 店铺logo
|
||||
*/
|
||||
private String logo;
|
||||
/**
|
||||
* 店铺封面图
|
||||
*/
|
||||
private String coverImg;
|
||||
/**
|
||||
* trial试用版,release正式
|
||||
*/
|
||||
private String profiles;
|
||||
|
||||
|
||||
/**
|
||||
* 店铺类型 单店--only 连锁店--chain--加盟店join (对应原来 type)
|
||||
*/
|
||||
private String shopType;
|
||||
|
||||
/**
|
||||
* 主店id
|
||||
*/
|
||||
private Long mainId;
|
||||
|
||||
/**
|
||||
* 主店名称
|
||||
*/
|
||||
private String mainShopName;
|
||||
}
|
||||
@@ -1,8 +1,11 @@
|
||||
package com.czg.service.market.mapper;
|
||||
|
||||
import com.czg.market.vo.SmsShopMoneyVO;
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.czg.market.entity.SmsShopMoney;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 店铺短信余额 映射层。
|
||||
*
|
||||
@@ -11,4 +14,5 @@ import com.czg.market.entity.SmsShopMoney;
|
||||
*/
|
||||
public interface SmsShopMoneyMapper extends BaseMapper<SmsShopMoney> {
|
||||
|
||||
List<SmsShopMoneyVO> selectWithShopInfo(String name);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.czg.service.market.service.impl;
|
||||
|
||||
import com.czg.market.vo.SmsShopMoneyVO;
|
||||
import com.czg.sa.StpKit;
|
||||
import com.czg.utils.PageUtil;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import com.czg.market.entity.SmsShopMoney;
|
||||
import com.czg.market.service.SmsShopMoneyService;
|
||||
import com.czg.service.market.mapper.SmsShopMoneyMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 店铺短信余额 服务层实现。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-16
|
||||
*/
|
||||
@Service
|
||||
public class SmsShopMoneyServiceImpl extends ServiceImpl<SmsShopMoneyMapper, SmsShopMoney> implements SmsShopMoneyService {
|
||||
|
||||
@Override
|
||||
public SmsShopMoney getShopMoney(Long shopId) {
|
||||
SmsShopMoney shopMoney = getOne((
|
||||
new QueryWrapper().eq(SmsShopMoney::getShopId, StpKit.USER.getShopId())));
|
||||
if (shopMoney == null) {
|
||||
shopMoney = new SmsShopMoney();
|
||||
shopMoney.setShopId(StpKit.USER.getShopId());
|
||||
shopMoney.setMoney(BigDecimal.ZERO);
|
||||
save(shopMoney);
|
||||
}
|
||||
return shopMoney;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<SmsShopMoneyVO> getShopMoneyPage(Integer page, Integer size, String name) {
|
||||
PageHelper.startPage(page, size);
|
||||
List<SmsShopMoneyVO> list = mapper.getShopMoneyPages(name);
|
||||
return PageUtil.convert(new PageInfo<>(list));
|
||||
}
|
||||
}
|
||||
@@ -37,6 +37,7 @@ public class SmsShopTemplateServiceImpl extends ServiceImpl<SmsShopTemplateMappe
|
||||
QueryWrapper queryWrapper = new QueryWrapper();
|
||||
queryWrapper.like(SmsShopTemplate::getTitle, name)
|
||||
.in(SmsShopTemplate::getShopId, list)
|
||||
.eq(SmsShopTemplate::getIsDel, 0)
|
||||
.orderBy(SmsShopTemplate::getShopId).asc()
|
||||
.orderBy(SmsShopTemplate::getSort).asc();
|
||||
if (list.size() == 1) {
|
||||
@@ -54,6 +55,7 @@ public class SmsShopTemplateServiceImpl extends ServiceImpl<SmsShopTemplateMappe
|
||||
.le(SmsShopTemplate::getCreateTime, param.getEndTime())
|
||||
.ge(SmsShopTemplate::getCreateTime, param.getStartTime())
|
||||
.eq(SmsShopTemplate::getStatus, param.getStatus())
|
||||
.eq(SmsShopTemplate::getIsDel, 0)
|
||||
.eq(SmsShopTemplate::getShopUse, param.getShopUse())
|
||||
.eq(SmsShopTemplate::getShopId, param.getShopId())
|
||||
.orderBy(SmsShopTemplate::getShopId).asc()
|
||||
|
||||
@@ -4,4 +4,28 @@
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.czg.service.market.mapper.SmsShopMoneyMapper">
|
||||
|
||||
<!-- 关联查询店铺短信余额及店铺信息,支持店铺名称模糊搜索 -->
|
||||
<select id="selectWithShopInfo" parameterType="java.lang.String" resultType="com.czg.market.vo.SmsShopMoneyVO">
|
||||
SELECT
|
||||
s.*,
|
||||
t.logo,
|
||||
t.shop_type AS shopType,
|
||||
t.profiles,
|
||||
t.cover_img AS coverImg,
|
||||
t.main_id AS mainId,
|
||||
main_shop.shop_name AS mainShopName,
|
||||
t.shop_name AS shopName
|
||||
FROM
|
||||
sms_shop_money s
|
||||
LEFT JOIN
|
||||
tb_shop_info t ON s.shop_id = t.id
|
||||
LEFT JOIN
|
||||
tb_shop_info main_shop ON t.main_id = main_shop.id
|
||||
<where>
|
||||
<!-- 店铺名称模糊查询条件 -->
|
||||
<if test="name != null and name != ''">
|
||||
AND t.shop_name LIKE CONCAT('%', #{name}, '%')
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user