短信店铺配置
This commit is contained in:
@@ -1,10 +1,7 @@
|
|||||||
|
|
||||||
package com.czg.controller.admin;
|
package com.czg.controller.admin;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.czg.TimeQueryParam;
|
|
||||||
import com.czg.annotation.SaAdminCheckLogin;
|
|
||||||
import com.czg.annotation.SaAdminCheckRole;
|
import com.czg.annotation.SaAdminCheckRole;
|
||||||
import com.czg.market.dto.SmsMoneyDetailDto;
|
import com.czg.market.dto.SmsMoneyDetailDto;
|
||||||
import com.czg.market.dto.SmsShopMoneyDetailDTO;
|
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.SmsShopMoney;
|
||||||
import com.czg.market.entity.SmsShopMoneyDetail;
|
import com.czg.market.entity.SmsShopMoneyDetail;
|
||||||
import com.czg.market.service.SmsShopMoneyDetailService;
|
import com.czg.market.service.SmsShopMoneyDetailService;
|
||||||
|
import com.czg.market.service.SmsShopMoneyService;
|
||||||
import com.czg.market.service.SmsShopTemplateService;
|
import com.czg.market.service.SmsShopTemplateService;
|
||||||
|
import com.czg.market.vo.SmsShopMoneyVO;
|
||||||
import com.czg.resp.CzgResult;
|
import com.czg.resp.CzgResult;
|
||||||
import com.czg.sa.StpKit;
|
import com.czg.sa.StpKit;
|
||||||
import com.czg.service.market.mapper.SmsShopMoneyMapper;
|
import com.czg.service.market.mapper.SmsShopMoneyMapper;
|
||||||
@@ -44,7 +43,7 @@ public class SmsShopTemplateController {
|
|||||||
@Resource
|
@Resource
|
||||||
private SmsShopMoneyDetailService smsMoneyDetailService;
|
private SmsShopMoneyDetailService smsMoneyDetailService;
|
||||||
@Resource
|
@Resource
|
||||||
private SmsShopMoneyMapper shopMoneyMapper;
|
private SmsShopMoneyService shopMoneyService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 列表
|
* 列表
|
||||||
@@ -115,34 +114,31 @@ public class SmsShopTemplateController {
|
|||||||
*/
|
*/
|
||||||
@GetMapping("/smsMoney")
|
@GetMapping("/smsMoney")
|
||||||
public CzgResult<SmsShopMoney> getShopSmsMoney() {
|
public CzgResult<SmsShopMoney> getShopSmsMoney() {
|
||||||
SmsShopMoney shopMoney = shopMoneyMapper.selectOneByQuery(
|
SmsShopMoney shopMoney = shopMoneyService.getShopMoney(StpKit.USER.getShopId());
|
||||||
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);
|
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")
|
@PostMapping("/smsMoney/change")
|
||||||
public CzgResult<Void> change(@RequestBody SmsShopMoneyDetailDTO money) {
|
public CzgResult<Void> change(@RequestBody SmsShopMoneyDetailDTO money) {
|
||||||
Long shopId = StpKit.USER.getShopId();
|
Long shopId = StpKit.USER.getShopId();
|
||||||
SmsShopMoney shopMoney = shopMoneyMapper.selectOneByQuery(
|
SmsShopMoney shopMoney = shopMoneyService.getShopMoney(shopId);
|
||||||
new QueryWrapper().eq(SmsShopMoney::getShopId, shopId)
|
|
||||||
);
|
|
||||||
if (shopMoney == null) {
|
|
||||||
shopMoney = new SmsShopMoney();
|
|
||||||
shopMoney.setShopId(shopId);
|
|
||||||
shopMoney.setMoney(BigDecimal.ZERO);
|
|
||||||
shopMoneyMapper.insert(shopMoney);
|
|
||||||
}
|
|
||||||
SmsShopMoneyDetail moneyDetail = BeanUtil.toBean(money, SmsShopMoneyDetail.class);
|
SmsShopMoneyDetail moneyDetail = BeanUtil.toBean(money, SmsShopMoneyDetail.class);
|
||||||
moneyDetail.setShopId(shopId);
|
moneyDetail.setShopId(shopId);
|
||||||
if (money.getType() == 1) {
|
if (money.getType() == 1) {
|
||||||
@@ -153,7 +149,7 @@ public class SmsShopTemplateController {
|
|||||||
moneyDetail.setBalance(shopMoney.getMoney());
|
moneyDetail.setBalance(shopMoney.getMoney());
|
||||||
moneyDetail.setSendRows(0L);
|
moneyDetail.setSendRows(0L);
|
||||||
smsMoneyDetailService.save(moneyDetail);
|
smsMoneyDetailService.save(moneyDetail);
|
||||||
shopMoneyMapper.update(shopMoney, true);
|
shopMoneyService.updateById(shopMoney);
|
||||||
return CzgResult.success();
|
return CzgResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ public class AAMarketTasks {
|
|||||||
//生日有礼奖励发放
|
//生日有礼奖励发放
|
||||||
@Resource
|
@Resource
|
||||||
private BirthdayGiftTask birthdayGiftTask;
|
private BirthdayGiftTask birthdayGiftTask;
|
||||||
|
//每天12时0分 0秒 执行
|
||||||
@Scheduled(cron = "0 0 12 * * ?")
|
@Scheduled(cron = "0 0 12 * * ?")
|
||||||
public void birthdayGiftTask() {
|
public void birthdayGiftTask() {
|
||||||
birthdayGiftTask.deliver();
|
birthdayGiftTask.deliver();
|
||||||
@@ -21,6 +22,7 @@ public class AAMarketTasks {
|
|||||||
//优惠券 过期
|
//优惠券 过期
|
||||||
@Resource
|
@Resource
|
||||||
private CouponTask couponTask;
|
private CouponTask couponTask;
|
||||||
|
//每天每小时的30分 0秒 执行
|
||||||
@Scheduled(cron = "0 30 * * * ? ")
|
@Scheduled(cron = "0 30 * * * ? ")
|
||||||
public void couponTask() {
|
public void couponTask() {
|
||||||
couponTask.task();
|
couponTask.task();
|
||||||
@@ -29,6 +31,7 @@ public class AAMarketTasks {
|
|||||||
//会员奖励发放
|
//会员奖励发放
|
||||||
@Resource
|
@Resource
|
||||||
private MemberTask memberTask;
|
private MemberTask memberTask;
|
||||||
|
//每天1点 0分 0秒 执行
|
||||||
@Scheduled(cron = "0 0 1 * * ? ")
|
@Scheduled(cron = "0 0 1 * * ? ")
|
||||||
public void memberTask() {
|
public void memberTask() {
|
||||||
memberTask.task();
|
memberTask.task();
|
||||||
@@ -37,10 +40,20 @@ public class AAMarketTasks {
|
|||||||
//满减活动定时任务
|
//满减活动定时任务
|
||||||
@Resource
|
@Resource
|
||||||
private DiscountActivityTask discountActivityTask;
|
private DiscountActivityTask discountActivityTask;
|
||||||
|
//每天0点 0分 1秒 执行
|
||||||
@Scheduled(cron = "1 0 0 * * ? ")
|
@Scheduled(cron = "1 0 0 * * ? ")
|
||||||
public void discountActivityTask() {
|
public void discountActivityTask() {
|
||||||
discountActivityTask.task();
|
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 BigDecimal money;
|
||||||
|
|
||||||
|
private Long sendTotal;
|
||||||
|
private BigDecimal amountTotal;
|
||||||
|
private Long monthSendTotal;
|
||||||
|
private BigDecimal monthAmountTotal;
|
||||||
|
|
||||||
@Column(onInsertValue = "now()")
|
@Column(onInsertValue = "now()")
|
||||||
private LocalDateTime createTime;
|
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;
|
package com.czg.service.market.mapper;
|
||||||
|
|
||||||
|
import com.czg.market.vo.SmsShopMoneyVO;
|
||||||
import com.mybatisflex.core.BaseMapper;
|
import com.mybatisflex.core.BaseMapper;
|
||||||
import com.czg.market.entity.SmsShopMoney;
|
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> {
|
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 queryWrapper = new QueryWrapper();
|
||||||
queryWrapper.like(SmsShopTemplate::getTitle, name)
|
queryWrapper.like(SmsShopTemplate::getTitle, name)
|
||||||
.in(SmsShopTemplate::getShopId, list)
|
.in(SmsShopTemplate::getShopId, list)
|
||||||
|
.eq(SmsShopTemplate::getIsDel, 0)
|
||||||
.orderBy(SmsShopTemplate::getShopId).asc()
|
.orderBy(SmsShopTemplate::getShopId).asc()
|
||||||
.orderBy(SmsShopTemplate::getSort).asc();
|
.orderBy(SmsShopTemplate::getSort).asc();
|
||||||
if (list.size() == 1) {
|
if (list.size() == 1) {
|
||||||
@@ -54,6 +55,7 @@ public class SmsShopTemplateServiceImpl extends ServiceImpl<SmsShopTemplateMappe
|
|||||||
.le(SmsShopTemplate::getCreateTime, param.getEndTime())
|
.le(SmsShopTemplate::getCreateTime, param.getEndTime())
|
||||||
.ge(SmsShopTemplate::getCreateTime, param.getStartTime())
|
.ge(SmsShopTemplate::getCreateTime, param.getStartTime())
|
||||||
.eq(SmsShopTemplate::getStatus, param.getStatus())
|
.eq(SmsShopTemplate::getStatus, param.getStatus())
|
||||||
|
.eq(SmsShopTemplate::getIsDel, 0)
|
||||||
.eq(SmsShopTemplate::getShopUse, param.getShopUse())
|
.eq(SmsShopTemplate::getShopUse, param.getShopUse())
|
||||||
.eq(SmsShopTemplate::getShopId, param.getShopId())
|
.eq(SmsShopTemplate::getShopId, param.getShopId())
|
||||||
.orderBy(SmsShopTemplate::getShopId).asc()
|
.orderBy(SmsShopTemplate::getShopId).asc()
|
||||||
|
|||||||
@@ -4,4 +4,28 @@
|
|||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.czg.service.market.mapper.SmsShopMoneyMapper">
|
<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>
|
</mapper>
|
||||||
|
|||||||
Reference in New Issue
Block a user