From abc13bcf692645b69b02172faf28a247e0c88d61 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Tue, 9 Jul 2024 15:17:30 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=AD=8C=E6=9B=B2=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/ysk/cashier/utils/CacheKey.java | 1 + .../shop/TbShopSongOrderController.java | 115 ++++++++++++++ .../shop/TbShopSongOrderQueryCriteria.java | 42 +++++ .../mybatis/entity/TbShopSongOrder.java | 148 ++++++++++++++++++ .../mybatis/mapper/TbShopSongOrderMapper.java | 47 ++++++ .../service/TbShopSongOrderService.java | 24 +++ .../impl/TbShopSongOrderServiceImpl.java | 79 ++++++++++ .../ysk/cashier/mybatis/vo/SingerSongVo.java | 14 ++ .../mapper/TbShopSongOrderMapper.xml | 148 ++++++++++++++++++ 9 files changed, 618 insertions(+) create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopSongOrderController.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopSongOrderQueryCriteria.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/mybatis/entity/TbShopSongOrder.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbShopSongOrderMapper.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/TbShopSongOrderService.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopSongOrderServiceImpl.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/mybatis/vo/SingerSongVo.java create mode 100644 eladmin-system/src/main/resources/mapper/TbShopSongOrderMapper.xml diff --git a/eladmin-common/src/main/java/cn/ysk/cashier/utils/CacheKey.java b/eladmin-common/src/main/java/cn/ysk/cashier/utils/CacheKey.java index 57f3db87..2abfebf2 100644 --- a/eladmin-common/src/main/java/cn/ysk/cashier/utils/CacheKey.java +++ b/eladmin-common/src/main/java/cn/ysk/cashier/utils/CacheKey.java @@ -71,4 +71,5 @@ public interface CacheKey { * 商品库存 */ String PRODUCT = "PRODUCT:"; + String SONG_URL = "song:"; } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopSongOrderController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopSongOrderController.java new file mode 100644 index 00000000..3f60dc5d --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopSongOrderController.java @@ -0,0 +1,115 @@ +package cn.ysk.cashier.controller.shop; + +import cn.ysk.cashier.annotation.rest.AnonymousGetMapping; +import cn.ysk.cashier.annotation.rest.AnonymousPostMapping; +import cn.ysk.cashier.dto.shop.TbShopSongOrderQueryCriteria; +import cn.ysk.cashier.exception.BadRequestException; +import cn.ysk.cashier.utils.CacheKey; +import cn.ysk.cashier.utils.RedisUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import cn.ysk.cashier.mybatis.entity.TbShopSongOrder; +import cn.ysk.cashier.mybatis.service.TbShopSongOrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.RandomStringUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + * (TbShopSongOrder)表控制层 + * + * @author ww + * @since 2024-07-08 09:24:23 + */ +@RestController +@RequiredArgsConstructor +@Api(tags = "歌曲订单管理") +@RequestMapping("/api/tbShopSongOrder") +public class TbShopSongOrderController{ + private final RedisUtils redisUtils; + /** + * 服务对象 + */ + @Resource + private TbShopSongOrderService tbShopSongOrderService; + + /** + * 分页查询所有数据 + * @param tbShopSongOrder 查询实体 + * @return 所有数据 + */ + @GetMapping + @ApiOperation("获取歌曲列表 分页") + @AnonymousGetMapping + public ResponseEntity selectAll(TbShopSongOrderQueryCriteria tbShopSongOrder) { + String code = ""; + if(redisUtils.hasKey(CacheKey.SONG_URL + tbShopSongOrder.getShopId())){ + code = (String) redisUtils.get(CacheKey.SONG_URL + tbShopSongOrder.getShopId()); + } + Map stringObjectMap = tbShopSongOrderService.queryAll(tbShopSongOrder); + stringObjectMap.put("songUrl",code); + return new ResponseEntity<>(stringObjectMap, HttpStatus.OK); + } + + @PostMapping("createUrl") + @ApiOperation("更新歌手页地址") + @AnonymousPostMapping + public ResponseEntity createUrl(String shopId) { + String key = RandomStringUtils.randomAlphanumeric(8); + redisUtils.set(CacheKey.SONG_URL + shopId, key); + redisUtils.set(CacheKey.SONG_URL + key, shopId); + return new ResponseEntity<>(key,HttpStatus.OK); + } + + + + /** + * 通过主键查询单条数据 + * + * @param id 主键 + * @return 单条数据 + */ + @GetMapping("{id}") + @ApiOperation("订单详情") + public ResponseEntity selectOne(@PathVariable Serializable id) { + return new ResponseEntity<>(tbShopSongOrderService.getById(id),HttpStatus.OK); + } + + /** + * 歌手页 歌曲列表 + * @param key 有效key + * @return 所有数据 + */ + @GetMapping("songs") + @AnonymousGetMapping + public ResponseEntity singerSongs(String key) { + String shopId=""; + if (redisUtils.hasKey(CacheKey.SONG_URL + key)) { + shopId = (String)redisUtils.get(CacheKey.SONG_URL + key); + }else { + throw new BadRequestException("地址已失效,请重新获取地址。"); + } + return new ResponseEntity<>(tbShopSongOrderService.singerSongs(Integer.valueOf(shopId)), HttpStatus.OK); + } + + /** + * 下一首 + * @param shopId 店铺Id + */ + @PostMapping("next") + @AnonymousPostMapping + public ResponseEntity next(@RequestBody Integer shopId) { + tbShopSongOrderService.next(shopId); + return new ResponseEntity<>(HttpStatus.OK); + } +} + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopSongOrderQueryCriteria.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopSongOrderQueryCriteria.java new file mode 100644 index 00000000..145a904f --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopSongOrderQueryCriteria.java @@ -0,0 +1,42 @@ +package cn.ysk.cashier.dto.shop; + +import lombok.Data; +import org.apache.commons.lang3.StringUtils; + +@Data +public class TbShopSongOrderQueryCriteria { + + private String shopId; + private String orderNo; + private String name; + private Integer state; + /** + * 从1开始 + */ + private Long page = 1L; + /** + * 展示数量 + */ + private Long size = 10L; + + public void setShopId(String shopId) { + if (StringUtils.isNotBlank(shopId) && !shopId.equals("1")) { + this.shopId = shopId; + } + } + + public void setOrderNo(String orderNo) { + if (StringUtils.isNotBlank(orderNo)) + this.orderNo = orderNo; + } + + public void setName(String name) { + if (StringUtils.isNotBlank(name)) + this.name = name; + } + + public void setState(Integer state) { + if (state!=null) + this.state = state; + } +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/entity/TbShopSongOrder.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/entity/TbShopSongOrder.java new file mode 100644 index 00000000..17188bbc --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/entity/TbShopSongOrder.java @@ -0,0 +1,148 @@ +package cn.ysk.cashier.mybatis.entity; + +import java.util.Date; + +import com.baomidou.mybatisplus.extension.activerecord.Model; + +import java.io.Serializable; + +/** + * (TbShopSongOrder)表实体类 + * + * @author ww + * @since 2024-07-08 09:24:27 + */ +@SuppressWarnings("serial") +public class TbShopSongOrder extends Model { + + private Integer id; + //歌曲id + private Integer songId; + private Integer shopId; + //歌曲名称 + private String songName; + //用户id + private Integer userId; + //支付金额 + private Double payMoney; + //状态 -1 未支付 0 已取消 1 已支付 2 演唱中 3 已演唱 + private Integer state; + //创建时间 + private Date createTime; + //下单来源 + private Integer clientType; + //订单编号 + private String orderNo; + //点歌人 + private String fromName; + //收歌人 + private String toName; + //祝福语 + private String note; + + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getSongId() { + return songId; + } + + public void setSongId(Integer songId) { + this.songId = songId; + } + + public String getSongName() { + return songName; + } + + public void setSongName(String songName) { + this.songName = songName; + } + + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + } + + public Double getPayMoney() { + return payMoney; + } + + public void setPayMoney(Double payMoney) { + this.payMoney = payMoney; + } + + public Integer getState() { + return state; + } + + public void setState(Integer state) { + this.state = state; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getClientType() { + return clientType; + } + + public void setClientType(Integer clientType) { + this.clientType = clientType; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getFromName() { + return fromName; + } + + public void setFromName(String fromName) { + this.fromName = fromName; + } + + public String getToName() { + return toName; + } + + public void setToName(String toName) { + this.toName = toName; + } + + public String getNote() { + return note; + } + + public void setNote(String note) { + this.note = note; + } + + public Integer getShopId() { + return shopId; + } + + public void setShopId(Integer shopId) { + this.shopId = shopId; + } +} + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbShopSongOrderMapper.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbShopSongOrderMapper.java new file mode 100644 index 00000000..fc1ae864 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbShopSongOrderMapper.java @@ -0,0 +1,47 @@ +package cn.ysk.cashier.mybatis.mapper; + +import cn.ysk.cashier.mybatis.entity.TbShopSongOrder; +import cn.ysk.cashier.mybatis.vo.SingerSongVo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; + +import java.util.List; + +/** + * (TbShopSongOrder)表数据库访问层 + * + * @author ww + * @since 2024-07-08 09:24:26 + */ +public interface TbShopSongOrderMapper extends BaseMapper { + + + @Select("select " + + "song.img,song.name as songName,song.origin_singer as originSinger,orders.from_name as fromName," + + "orders.to_name as toName,orders.note " + + "from tb_shop_song_order orders " + + "left join tb_shop_song song on orders.song_id=song.id " + + "where state = #{state} and orders.shop_id=#{shopId} order by orders.create_time limit 12") + List findByState(@Param("state") Integer state, @Param("shopId") Integer shopId); + + + @Update("update tb_shop_song_order set state=3 where state=2 and shop_id=#{shopId}") + int upState(@Param("shopId") Integer shopId); + + @Update("update tb_shop_song_order " + + "set state = 2 " + + "where id = (" + + " select id " + + " from (" + + " select id " + + " from tb_shop_song_order " + + " where state = 1 and shop_id = #{shopId}" + + " order by create_time " + + " limit 1" + + " ) as subquery" + + ")") + int setDuringSinging(@Param("shopId") Integer shopId); +} + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/TbShopSongOrderService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/TbShopSongOrderService.java new file mode 100644 index 00000000..89b58178 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/TbShopSongOrderService.java @@ -0,0 +1,24 @@ +package cn.ysk.cashier.mybatis.service; + +import cn.ysk.cashier.dto.shop.TbShopSongOrderQueryCriteria; +import cn.ysk.cashier.dto.shop.TbShopSongQueryCriteria; +import com.baomidou.mybatisplus.extension.service.IService; +import cn.ysk.cashier.mybatis.entity.TbShopSongOrder; + +import java.util.Map; + +/** + * (TbShopSongOrder)表服务接口 + * + * @author ww + * @since 2024-07-08 09:24:27 + */ +public interface TbShopSongOrderService extends IService { + + Map queryAll(TbShopSongOrderQueryCriteria criteria); + + Map singerSongs(Integer shopId); + + void next(Integer shopId); +} + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopSongOrderServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopSongOrderServiceImpl.java new file mode 100644 index 00000000..f13d47fc --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopSongOrderServiceImpl.java @@ -0,0 +1,79 @@ +package cn.ysk.cashier.mybatis.service.impl; + +import cn.ysk.cashier.dto.shop.TbShopSongOrderQueryCriteria; +import cn.ysk.cashier.dto.shop.TbShopSongQueryCriteria; +import cn.ysk.cashier.mybatis.entity.TbShopSong; +import cn.ysk.cashier.mybatis.mapper.TbShopSongMapper; +import cn.ysk.cashier.mybatis.vo.SingerSongVo; +import cn.ysk.cashier.utils.PageUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import cn.ysk.cashier.mybatis.mapper.TbShopSongOrderMapper; +import cn.ysk.cashier.mybatis.entity.TbShopSongOrder; +import cn.ysk.cashier.mybatis.service.TbShopSongOrderService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +/** + * (TbShopSongOrder)表服务实现类 + * + * @author ww + * @since 2024-07-08 09:24:27 + */ +@Service("tbShopSongOrderService") +public class TbShopSongOrderServiceImpl extends ServiceImpl implements TbShopSongOrderService { + + @Autowired + private TbShopSongOrderMapper tbShopSongOrderMapper; + @Override + public Map queryAll(TbShopSongOrderQueryCriteria criteria) { + Page page = new Page<>( + criteria.getPage(), + criteria.getSize()); + QueryWrapper wrapper = new QueryWrapper<>(); + if (StringUtils.isNotBlank(criteria.getShopId())) { + wrapper.eq("shop_id", criteria.getShopId()); + } + if (StringUtils.isNotBlank(criteria.getOrderNo())) { + wrapper.eq("order_no", criteria.getOrderNo()); + } + if (criteria.getState() != null) { + wrapper.eq("state", criteria.getState()); + } + if (StringUtils.isNotBlank(criteria.getName())) { + wrapper.like("song_name", criteria.getName()); + } + wrapper.orderByDesc("create_time"); + Page tbShopSongPage = tbShopSongOrderMapper.selectPage(page, wrapper); + return PageUtil.toPage(tbShopSongPage.getRecords(), tbShopSongPage.getTotal()); + } + + @Override + public Map singerSongs(Integer shopId) { + Map map = new LinkedHashMap<>(3); + map.put("shopId",shopId); + List byState = tbShopSongOrderMapper.findByState(2, shopId); + if(CollectionUtils.isEmpty(byState)){ + map.put("afoot","");//演唱中 + } + map.put("afoot",byState.get(0));//演唱中 + map.put("Waiting",tbShopSongOrderMapper.findByState(1,shopId)); + return map; + } + + @Override + @Transactional + public void next(Integer shopId) { + tbShopSongOrderMapper.upState(shopId); + tbShopSongOrderMapper.setDuringSinging(shopId); + } +} + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/vo/SingerSongVo.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/vo/SingerSongVo.java new file mode 100644 index 00000000..0a590e5f --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/vo/SingerSongVo.java @@ -0,0 +1,14 @@ +package cn.ysk.cashier.mybatis.vo; + +import lombok.Data; + +@Data +public class SingerSongVo { + private String img; + private String songName; + private String originSinger; + private String fromName; + private String toName; + private String note; + +} diff --git a/eladmin-system/src/main/resources/mapper/TbShopSongOrderMapper.xml b/eladmin-system/src/main/resources/mapper/TbShopSongOrderMapper.xml new file mode 100644 index 00000000..53d1218c --- /dev/null +++ b/eladmin-system/src/main/resources/mapper/TbShopSongOrderMapper.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + id + , song_id, song_name, user_id, pay_money, state, create_time, client_type, order_no, from_name, to_name, note + + + + + + + + + + + insert into tb_shop_song_order(song_id, song_name, user_id, pay_money, state, create_time, client_type, + order_no, from_name, to_name, note) + values (#{songId}, #{songName}, #{userId}, #{payMoney}, #{state}, #{createTime}, #{clientType}, #{orderNo}, + #{fromName}, #{toName}, #{note}) + + + + insert into tb_shop_song_order(song_id, song_name, user_id, pay_money, state, create_time, client_type, + order_no, from_name, to_name, note) + values + + (#{entity.songId}, #{entity.songName}, #{entity.userId}, #{entity.payMoney}, #{entity.state}, + #{entity.createTime}, #{entity.clientType}, #{entity.orderNo}, #{entity.fromName}, #{entity.toName}, + #{entity.note}) + + + + + + update tb_shop_song_order + + + song_id = #{songId}, + + + song_name = #{songName}, + + + user_id = #{userId}, + + + pay_money = #{payMoney}, + + + state = #{state}, + + + create_time = #{createTime}, + + + client_type = #{clientType}, + + + order_no = #{orderNo}, + + + from_name = #{fromName}, + + + to_name = #{toName}, + + + note = #{note}, + + + where id = #{id} + + + + + delete + from tb_shop_song_order + where id = #{id} + + + + From 5c960ec661bc860c9ec9c561726f24851961fba2 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Tue, 9 Jul 2024 15:29:31 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=AD=8C=E6=89=8B=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mybatis/service/impl/TbShopSongOrderServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopSongOrderServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopSongOrderServiceImpl.java index f13d47fc..39e0d3d6 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopSongOrderServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopSongOrderServiceImpl.java @@ -63,8 +63,9 @@ public class TbShopSongOrderServiceImpl extends ServiceImpl byState = tbShopSongOrderMapper.findByState(2, shopId); if(CollectionUtils.isEmpty(byState)){ map.put("afoot","");//演唱中 + }else { + map.put("afoot",byState.get(0));//演唱中 } - map.put("afoot",byState.get(0));//演唱中 map.put("Waiting",tbShopSongOrderMapper.findByState(1,shopId)); return map; } From a5cea4293fe9c47fa9dd750479d4e50eeecf08ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9F=A9=E9=B9=8F=E8=BE=89?= <18322780655@163.com> Date: Tue, 9 Jul 2024 16:02:38 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=8F=B0=E6=A1=8C=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/order/TbOrderInfoServiceImpl.java | 4 ++++ .../src/main/java/cn/ysk/cashier/vo/TbOrderInfoVo.java | 2 ++ 2 files changed, 6 insertions(+) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java index 33ecb66d..7143f08c 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java @@ -126,6 +126,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { detail.setRefundNumber(detail.getNum()); }); } + orderInfoVo.setTableName(tbOrderInfo.getTableName()); orderInfoVo.setDetailList(details); BeanUtils.copyProperties(tbOrderInfo, orderInfoVo); orderInfoVo.setRefundAmount(refundAmount); @@ -188,6 +189,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { criteria.setOrderType(null); } } + List dto = tbOrderInfoMapper.toDto(tbOrderInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder))); for (TbOrderInfoDto tbOrderInfo : dto) { List details = tbOrderDetailRepository.searchDetailByOrderId(tbOrderInfo.getId()); @@ -357,6 +359,8 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { @Override public void download(List all, HttpServletResponse response) throws IOException { List> list = new ArrayList<>(); + + all=all.stream().sorted(Comparator.comparing(TbOrderInfoDto::getId).reversed()).collect(Collectors.toList()); for (TbOrderInfoDto tbOrderInfo : all) { Map map = new LinkedHashMap<>(); map.put("订单编号", tbOrderInfo.getOrderNo()); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderInfoVo.java b/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderInfoVo.java index 139cb711..c95b542b 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderInfoVo.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderInfoVo.java @@ -50,6 +50,8 @@ public class TbOrderInfoVo { private String tableId; + private String tableName; + private BigDecimal smallChange; private String sendType; From a09a46e0eadcf6904024e034f6adda10d615780f Mon Sep 17 00:00:00 2001 From: GYJ <1157756119@qq.com> Date: Tue, 9 Jul 2024 16:04:25 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=85=85=E5=80=BC=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/shop/TbShopUserController.java | 41 +++++++++++++------ .../dto/shop/TbShopRechargeListDto.java | 18 ++++++++ .../dto/shop/TbShopRechargeRespDto.java | 36 ++++++++++++++++ .../mybatis/entity/TbShopUserFlow.java | 6 +++ .../mybatis/mapper/ShopUserMapper.java | 22 ++++++++++ .../repository/shop/TbShopUserRepository.java | 6 --- .../impl/shopimpl/TbShopUserServiceImpl.java | 36 +++++++++++++++- .../service/shop/TbShopUserService.java | 14 +++++++ 8 files changed, 159 insertions(+), 20 deletions(-) create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopRechargeListDto.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopRechargeRespDto.java diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopUserController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopUserController.java index f194ed06..ee7d8fd9 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopUserController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopUserController.java @@ -2,6 +2,9 @@ package cn.ysk.cashier.controller.shop; import cn.hutool.core.util.StrUtil; import cn.ysk.cashier.annotation.AnonymousAccess; +import cn.ysk.cashier.annotation.rest.AnonymousGetMapping; +import cn.ysk.cashier.annotation.rest.AnonymousPostMapping; +import cn.ysk.cashier.dto.shop.TbShopRechargeListDto; import cn.ysk.cashier.dto.shop.TbShopUserQueryCriteria; import cn.ysk.cashier.exception.BadRequestException; import cn.ysk.cashier.mybatis.service.TbMShopUserService; @@ -20,10 +23,10 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** -* @website https://eladmin.vip -* @author lyf -* @date 2024-03-01 -**/ + * @author lyf + * @website https://eladmin.vip + * @date 2024-03-01 + **/ @RestController @RequiredArgsConstructor @Api(tags = "/shop/user管理") @@ -41,35 +44,35 @@ public class TbShopUserController { @GetMapping @ApiOperation("查询/shop/user") - public ResponseEntity queryTbShopUser(TbShopUserQueryCriteria criteria, Pageable pageable){ - return new ResponseEntity<>(tbShopUserService.queryAll(criteria,pageable),HttpStatus.OK); + public ResponseEntity queryTbShopUser(TbShopUserQueryCriteria criteria, Pageable pageable) { + return new ResponseEntity<>(tbShopUserService.queryAll(criteria, pageable), HttpStatus.OK); } @GetMapping("queryAllShopUser") @ApiOperation("查询商家用户") - public ResponseEntity queryAllShopUser(TbShopUserQueryCriteria criteria){ - return new ResponseEntity<>(tbShopUserService.queryShopUser(criteria),HttpStatus.OK); + public ResponseEntity queryAllShopUser(TbShopUserQueryCriteria criteria) { + return new ResponseEntity<>(tbShopUserService.queryShopUser(criteria), HttpStatus.OK); } @GetMapping("summary") @ApiOperation("查询会员概述") - public ResponseEntity summary(TbShopUserQueryCriteria criteria){ + public ResponseEntity summary(TbShopUserQueryCriteria criteria) { if (StrUtil.isBlank(criteria.getShopId())) { throw new BadRequestException("店铺id不为空"); } - return new ResponseEntity<>(tbMShopUserService.summary(criteria),HttpStatus.OK); + return new ResponseEntity<>(tbMShopUserService.summary(criteria), HttpStatus.OK); } @PostMapping @ApiOperation("新增/shop/user") - public ResponseEntity createTbShopUser(@Validated @RequestBody TbShopUser resources){ - return new ResponseEntity<>(tbShopUserService.create(resources),HttpStatus.CREATED); + public ResponseEntity createTbShopUser(@Validated @RequestBody TbShopUser resources) { + return new ResponseEntity<>(tbShopUserService.create(resources), HttpStatus.CREATED); } @PutMapping @ApiOperation("修改/shop/user") - public ResponseEntity updateTbShopUser(@Validated @RequestBody TbShopUser resources){ + public ResponseEntity updateTbShopUser(@Validated @RequestBody TbShopUser resources) { tbShopUserService.update(resources); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } @@ -80,4 +83,16 @@ public class TbShopUserController { tbShopUserService.deleteAll(ids); return new ResponseEntity<>(HttpStatus.OK); } + + @GetMapping("/recharge") + @ApiOperation("充值记录") + public ResponseEntity rechargeList(TbShopRechargeListDto criteria, Pageable pageable) { + return new ResponseEntity<>(tbShopUserService.rechargeList(criteria, pageable), HttpStatus.OK); + } + + @PostMapping("/recharge/download") + @ApiOperation("导出充值记录") + public void rechargeListDownload(HttpServletResponse response, @RequestBody TbShopRechargeListDto criteria) throws IOException { + tbShopUserService.rechargeListDownload(response, criteria); + } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopRechargeListDto.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopRechargeListDto.java new file mode 100644 index 00000000..1be68f5a --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopRechargeListDto.java @@ -0,0 +1,18 @@ +package cn.ysk.cashier.dto.shop; + +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * @author GYJ + */ +@Data +public class TbShopRechargeListDto { + private String shopId; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date endTime; +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopRechargeRespDto.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopRechargeRespDto.java new file mode 100644 index 00000000..120744fa --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbShopRechargeRespDto.java @@ -0,0 +1,36 @@ +package cn.ysk.cashier.dto.shop; + +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * @author GYJ + */ +@Data +public class TbShopRechargeRespDto { + private Integer id; + private String shopId; + private String shopName; + private String userId; + private String userName; + private String userPhone; + private Object rechargeAmount; + private String rechargeType; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date rechargeTime; + + public TbShopRechargeRespDto(Integer id, String shopId, String shopName, String userId, String userName, String userPhone, + String rechargeAmount, String rechargeType, Date rechargeTime) { + this.id = id; + this.shopId = shopId; + this.shopName = shopName; + this.userId = userId; + this.userName = userName; + this.userPhone = userPhone; + this.rechargeAmount = rechargeAmount; + this.rechargeType = rechargeType; + this.rechargeTime = rechargeTime; + } +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/entity/TbShopUserFlow.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/entity/TbShopUserFlow.java index d030469a..75152a2f 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/entity/TbShopUserFlow.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/entity/TbShopUserFlow.java @@ -5,16 +5,22 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import lombok.Data; import lombok.EqualsAndHashCode; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; import java.math.BigDecimal; import java.util.Date; /** * @author GYJ */ +@Entity @Data @EqualsAndHashCode(callSuper = true) @TableName("tb_shop_user_flow") +@Table(name="tb_shop_user_flow") public class TbShopUserFlow extends Model { + @Id private Integer id; private Integer shopUserId; diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/ShopUserMapper.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/ShopUserMapper.java index 3c94530b..e6f39314 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/ShopUserMapper.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/ShopUserMapper.java @@ -1,5 +1,7 @@ package cn.ysk.cashier.mybatis.mapper; +import cn.ysk.cashier.dto.shop.TbShopRechargeListDto; +import cn.ysk.cashier.dto.shop.TbShopRechargeRespDto; import cn.ysk.cashier.dto.shop.TbShopUserQueryCriteria; import cn.ysk.cashier.pojo.shop.TbShopUser; import cn.ysk.cashier.vo.ShopUserInfoVo; @@ -30,5 +32,25 @@ public interface ShopUserMapper extends BaseMapper { "" + "") IPage queryUser(TbShopUserQueryCriteria param, Page pageInfo); + + @Select("") + IPage queryRechargeList(TbShopRechargeListDto param, Page pageInfo); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/repository/shop/TbShopUserRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/repository/shop/TbShopUserRepository.java index 8ba9e9bc..acff9e4f 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/repository/shop/TbShopUserRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/repository/shop/TbShopUserRepository.java @@ -16,10 +16,7 @@ package cn.ysk.cashier.repository.shop; import cn.ysk.cashier.pojo.shop.TbShopUser; -import cn.ysk.cashier.vo.ShopUserInfoVo; import org.apache.ibatis.annotations.Param; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; @@ -27,7 +24,6 @@ import org.springframework.data.jpa.repository.Query; import javax.persistence.Tuple; import java.util.Date; import java.util.List; -import java.util.Map; /** * @website https://eladmin.vip @@ -48,6 +44,4 @@ public interface TbShopUserRepository extends JpaRepository @Query("SELECT user.userId from TbShopUser user where user.shopId = :shopId") List getUserIdByShopId(String shopId); - - } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopUserServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopUserServiceImpl.java index e9d131c2..e1b011c7 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopUserServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopUserServiceImpl.java @@ -1,5 +1,8 @@ package cn.ysk.cashier.service.impl.shopimpl; +import cn.hutool.core.date.DateUtil; +import cn.ysk.cashier.dto.shop.TbShopRechargeListDto; +import cn.ysk.cashier.dto.shop.TbShopRechargeRespDto; import cn.ysk.cashier.dto.shop.TbShopUserDto; import cn.ysk.cashier.dto.shop.TbShopUserQueryCriteria; import cn.ysk.cashier.mapper.shop.TbShopUserMapper; @@ -22,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.time.Instant; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; @@ -47,7 +51,7 @@ public class TbShopUserServiceImpl implements TbShopUserService { public Map queryShopUser(TbShopUserQueryCriteria criteria) { IPage iPage = shopUserMapper.queryUser(criteria, new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(criteria.getPage(), criteria.getSize())); - return PageUtil.toPlusPage(iPage.getRecords(),Integer.valueOf(iPage.getTotal()+"")); + return PageUtil.toPlusPage(iPage.getRecords(), Integer.valueOf(iPage.getTotal() + "")); } @Override @@ -129,4 +133,34 @@ public class TbShopUserServiceImpl implements TbShopUserService { FileUtil.downloadExcel(list, response); } + @Override + public IPage rechargeList(TbShopRechargeListDto criteria, Pageable pageable) { + if (criteria.getStartTime() == null) { + criteria.setStartTime(DateUtil.parseDate("2024-01-01 00:00:00")); + } + if (criteria.getEndTime() == null) { + criteria.setEndTime(DateUtil.date(Instant.now())); + } + + return shopUserMapper.queryRechargeList(criteria, + new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(pageable == null ? 0 : pageable.getPageNumber(), pageable == null ? 1000000 : pageable.getPageSize())); + } + + @Override + public void rechargeListDownload(HttpServletResponse response, TbShopRechargeListDto criteria) throws IOException { + List> list = new ArrayList<>(); + IPage page = rechargeList(criteria, null); + for (TbShopRechargeRespDto tbShopRechargeRespDto : page.getRecords()) { + Map map = new LinkedHashMap<>(); + map.put("id", tbShopRechargeRespDto.getId()); + map.put("门店", tbShopRechargeRespDto.getShopName()); + map.put("用户手机号", tbShopRechargeRespDto.getUserPhone()); + map.put("用户名", tbShopRechargeRespDto.getUserName()); + map.put("充值金额", tbShopRechargeRespDto.getRechargeAmount()); + map.put("充值类型", tbShopRechargeRespDto.getRechargeType()); + map.put("充值时间", tbShopRechargeRespDto.getRechargeTime()); + list.add(map); + } + FileUtil.downloadExcel(list, response); + } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopUserService.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopUserService.java index 2fc389f0..ad4c884b 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopUserService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopUserService.java @@ -1,8 +1,12 @@ package cn.ysk.cashier.service.shop; +import cn.ysk.cashier.dto.shop.TbShopRechargeListDto; +import cn.ysk.cashier.dto.shop.TbShopRechargeRespDto; import cn.ysk.cashier.pojo.shop.TbShopUser; import cn.ysk.cashier.dto.shop.TbShopUserDto; import cn.ysk.cashier.dto.shop.TbShopUserQueryCriteria; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import java.util.Map; import java.util.List; @@ -75,4 +79,14 @@ public interface TbShopUserService { */ void download(List all, HttpServletResponse response) throws IOException; + /** + * 充值记录 + * @param criteria 条件 + * @param pageable 分页参数 + * @return Map + */ + IPage rechargeList(TbShopRechargeListDto criteria, Pageable pageable); + + void rechargeListDownload(HttpServletResponse response, TbShopRechargeListDto criteria) throws IOException; + }