ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/LotteryEvent.java
@@ -4,12 +4,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; /** * @author zhibing.pu @@ -24,66 +26,85 @@ * 主键 */ @TableId(value = "id", type = IdType.INPUT) @ApiModelProperty("活动id") private String id; /** * 门店id */ @TableField("shop_id") @ApiModelProperty("门店id") private Integer shopId; /** * 抽奖名称 */ @TableField("name") @ApiModelProperty("抽奖名称") private String name; /** * 活动简介名称 */ @TableField("activity_profile") @ApiModelProperty("活动简介名称") private String activityProfile; /** * 开启方式(1=新注册用户,2=下单,3=分享小程序,4=普通抽奖,5=答题抽奖) */ @TableField("activity_type") @ApiModelProperty("开启方式(1=新注册用户,2=下单,3=分享小程序,4=普通抽奖,5=答题抽奖)") private Integer activityType; /** * 可抽奖次数 */ @TableField("times") @ApiModelProperty("可抽奖次数") private Integer times; /** * 活动开始时间 */ @TableField("start_time") @ApiModelProperty("活动开始时间") private LocalDateTime startTime; /** * 活动结束时间 */ @TableField("end_time") @ApiModelProperty("活动结束时间") private LocalDateTime endTime; /** * 分享抽奖间隔天数 */ @TableField("interval_time") @ApiModelProperty("分享抽奖间隔天数") private Integer intervalTime; /** * 下单支付金额 */ @TableField("pay_money") @ApiModelProperty("下单支付金额") private BigDecimal payMoney; /** * 答题抽奖正确率% */ @TableField("accuracy") @ApiModelProperty("答题抽奖正确率%") private BigDecimal accuracy; /** * 答题时间限制(分钟) */ @TableField("answering_time") @ApiModelProperty("答题时间限制(分钟)") private Integer answeringTime; /** * 封面图 */ @TableField("cover_image") @ApiModelProperty("封面图") private String coverImage; /** * 详情介绍 */ @TableField("activity_content") @ApiModelProperty("详情介绍") private String activityContent; /** * 删除标记 @@ -104,10 +125,13 @@ * 更新用户id */ @TableField("update_user_id") private Integer updateUserId; private Long updateUserId; /** * 更新时间 */ @TableField("update_time") private LocalDateTime updateTime; @ApiModelProperty("奖品列表") private List<LotteryEventPrize> prizes; } ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/LotteryEventPrize.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.annotations.TableName; import com.baomidou.mybatisplus.enums.IdType; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @@ -18,36 +19,43 @@ /** * 主键 */ @TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty("奖品id") private String id; /** * 抽奖id */ @TableField("lottery_event_id") @ApiModelProperty("抽奖id") private String lotteryEventId; /** * 奖品类型(1=优惠券,2=平台商品,3=线下商品,4=积分) */ @TableField("prize_type") @ApiModelProperty("奖品类型(1=优惠券,2=平台商品,3=线下商品,4=积分)") private Integer prizeType; /** * 奖品id */ @TableField("object_id") @ApiModelProperty("奖品id") private String objectId; /** * 奖品名称 */ @TableField("object_name") @ApiModelProperty("奖品名称") private String objectName; /** * 奖品数量 */ @TableField("number") @ApiModelProperty("奖品数量") private Integer number; /** * 中奖率% */ @TableField("win_rate") @ApiModelProperty("中奖率%") private BigDecimal winRate; } ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/service/LotteryEventClient.java
@@ -23,6 +23,6 @@ * @param activityType * @return */ @PostMapping("/mer/lotteryEvent/getLotteryEventList") @PostMapping("/lotteryEvent/getLotteryEventList") R<List<LotteryEvent>> getLotteryEventList(@RequestParam("activityType") Integer activityType); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/member/Member.java
@@ -162,19 +162,24 @@ */ @TableField("belong_district") private String belongDistrict; @TableField("frozen_flag") private Integer frozenFlag; /** * 绑定类型1商城订单2活动订单3线下订单4核销优惠券5核销奖品6商户创建7平台变动8商户绑定 */ @TableField("binding_type") private Integer bindingType; /** * 上次确认服务的id */ @TableField("last_service_id") private String lastServiceId; @Override protected Serializable pkVal() { return this.userId; } } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/Shop.java
@@ -222,6 +222,11 @@ @TableField("platform_birthday_flag") private Integer platformBirthdayFlag; /** * 抽奖1开2关 */ @TableField("lottery_draw_flag") private Integer lotteryDrawFlag; /** * 店铺设置状态 */ @TableField("shop_custom_status") ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java
@@ -176,6 +176,11 @@ public R saveMemberGiftRecord(MemberGiftRecord memberGiftRecord) { return R.fail("添加奖品数据失败:" + throwable.getMessage()); } @Override public R editMember(Member member) { return R.fail("修改会员失败:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java
@@ -293,4 +293,13 @@ */ @PostMapping("/member/saveMemberGiftRecord") R saveMemberGiftRecord(@RequestBody MemberGiftRecord memberGiftRecord); /** * 修改会员数据 * * @param member * @return */ @PostMapping("/member/editMember") R editMember(@RequestBody Member member); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerLotteryEventController.java
@@ -1,18 +1,42 @@ package com.ruoyi.goods.controller.business; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.uuid.IdUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.goods.api.domain.LotteryEvent; import com.ruoyi.goods.api.domain.LotteryEventPrize; import com.ruoyi.goods.domain.dto.DelShopLotteryDrawDto; import com.ruoyi.goods.domain.dto.ShopLotteryDrawListDto; import com.ruoyi.goods.domain.dto.ShopWinningRecordDto; import com.ruoyi.goods.domain.vo.ShopLotteryDrawListVo; import com.ruoyi.goods.domain.vo.ShopLotteryDrawVo; import com.ruoyi.goods.domain.vo.ShopWinningRecordVo; import com.ruoyi.goods.service.goods.GoodsService; import com.ruoyi.goods.service.lottery.ILotteryEventPrizeService; import com.ruoyi.goods.service.lottery.ILotteryEventService; import org.springframework.web.bind.annotation.*; import com.ruoyi.goods.service.lottery.IUserLotteryEventService; import com.ruoyi.system.api.domain.poji.goods.Goods; import com.ruoyi.system.api.domain.poji.shop.Shop; import com.ruoyi.system.api.service.RemoteShopService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang.StringUtils; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.List; /** * @author zhibing.pu * @Date 2025/5/8 18:13 */ @Api(value = "商户端商户相关接口", tags = "商户端商户相关接口", description = "商户端商户相关接口") @RestController @RequestMapping("/mer/lotteryEvent") public class MerLotteryEventController { @@ -20,19 +44,109 @@ @Resource private ILotteryEventService lotteryEventService; @Resource private RemoteShopService remoteShopService; /** * 根据开启方式获取活动列表 * * @param activityType * @return */ @ResponseBody @PostMapping("/getLotteryEventList") public R<List<LotteryEvent>> getLotteryEventList(@RequestParam("activityType") Integer activityType) { List<LotteryEvent> list = lotteryEventService.list(new LambdaQueryWrapper<LotteryEvent>().eq(LotteryEvent::getActivityType, activityType) .eq(LotteryEvent::getDelFlag, 0).last(" and now() between start_time and end_time")); return R.ok(list); @Resource private ILotteryEventPrizeService lotteryEventPrizeService; @Resource private IUserLotteryEventService userLotteryEventService; @Resource private GoodsService goodsService; @RequestMapping(value = "/getShopLotteryDrawList", method = RequestMethod.POST) @ApiOperation(value = "获取门店抽奖活动列表【2.0】") public R<ShopLotteryDrawVo> getShopLotteryDrawList(@RequestBody ShopLotteryDrawListDto dto) { Page<ShopLotteryDrawListVo> page = new Page<>(); page.setSize(dto.getPageSize()); page.setCurrent(dto.getPageNum()); Shop shop = remoteShopService.getShop(dto.getShopId()).getData(); ShopLotteryDrawVo shopLotteryDrawVo = new ShopLotteryDrawVo(); shopLotteryDrawVo.setLotteryDrawFlag(shop.getLotteryDrawFlag()); List<ShopLotteryDrawListVo> shopLotteryDrawList = lotteryEventService.getShopLotteryDrawList(page, dto.getShopId()); page.setRecords(shopLotteryDrawList); shopLotteryDrawVo.setPage(page); return R.ok(shopLotteryDrawVo); } @RequestMapping(value = "/delShopLotteryDraw", method = RequestMethod.POST) @ApiOperation(value = "门店删除抽奖活动【2.0】") public R delShopLotteryDraw(@RequestBody DelShopLotteryDrawDto dto) { LotteryEvent lotteryEvent = lotteryEventService.getById(dto.getId()); if (null == lotteryEvent) { return R.fail("抽奖活动不存在"); } if (LocalDateTime.now().isAfter(lotteryEvent.getStartTime())) { return R.fail("删除失败"); } if (!lotteryEvent.getShopId().equals(dto.getShopId())) { return R.fail("删除失败"); } lotteryEvent.setDelFlag(1); lotteryEventService.updateById(lotteryEvent); return R.ok(); } @RequestMapping(value = "/getShopLotteryDrawInfo", method = RequestMethod.POST) @ApiOperation(value = "获取门店抽奖详情【2.0】") public R<LotteryEvent> getShopLotteryDrawInfo(@RequestBody DelShopLotteryDrawDto dto) { LotteryEvent lotteryEvent = lotteryEventService.getById(dto.getId()); if (null == lotteryEvent) { return R.fail("抽奖活动不存在"); } if (!lotteryEvent.getShopId().equals(dto.getShopId())) { return R.fail("查询失败"); } List<LotteryEventPrize> list = lotteryEventPrizeService.list(new LambdaQueryWrapper<LotteryEventPrize>().eq(LotteryEventPrize::getLotteryEventId, dto.getId())); lotteryEvent.setPrizes(list); return R.ok(lotteryEvent); } @RequestMapping(value = "/editShopLotteryDraw", method = RequestMethod.POST) @ApiOperation(value = "保存门店抽奖【2.0】") public R editShopLotteryDraw(@RequestBody LotteryEvent lotteryEvent) { if (lotteryEvent.getId() == null) { lotteryEvent.setId(IdUtils.simpleUUID()); } lotteryEvent.setUpdateTime(LocalDateTime.now()); lotteryEvent.setUpdateUserId(SecurityUtils.getUserId()); lotteryEventService.saveOrUpdate(lotteryEvent); //先删除原有的奖品 lotteryEventPrizeService.remove(new LambdaQueryWrapper<LotteryEventPrize>().eq(LotteryEventPrize::getLotteryEventId, lotteryEvent.getId())); //添加新的奖品 List<LotteryEventPrize> prizes = lotteryEvent.getPrizes(); prizes.forEach(s -> { s.setId(IdUtils.simpleUUID()); if (s.getPrizeType() == 2 && StringUtils.isEmpty(s.getObjectName())) { Goods goods = goodsService.getById(s.getObjectId()); s.setObjectName(goods.getGoodsName()); } s.setLotteryEventId(lotteryEvent.getId()); }); lotteryEventPrizeService.saveOrUpdateBatch(prizes); return R.ok(); } @RequestMapping(value = "/getShopWinningRecord", method = RequestMethod.POST) @ApiOperation(value = "获取中奖记录列表【2.0】") public R<Page<ShopWinningRecordVo>> getShopWinningRecord(@RequestBody ShopWinningRecordDto dto) { LotteryEvent lotteryEvent = lotteryEventService.getById(dto.getId()); if (null == lotteryEvent) { return R.fail("抽奖活动不存在"); } if (!lotteryEvent.getShopId().equals(dto.getShopId())) { return R.fail("查询失败"); } Page<ShopWinningRecordVo> page = new Page<>(); page.setSize(dto.getPageSize()); page.setCurrent(dto.getPageNum()); List<ShopWinningRecordVo> shopWinningRecordVoList = userLotteryEventService.getShopWinningRecord(page, dto.getId()); return R.ok(page.setRecords(shopWinningRecordVoList)); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/concole/MerLotteryEventController.java
New file @@ -0,0 +1,39 @@ package com.ruoyi.goods.controller.concole; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.core.domain.R; import com.ruoyi.goods.api.domain.LotteryEvent; import com.ruoyi.goods.service.lottery.ILotteryEventService; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; /** * @author zhibing.pu * @Date 2025/5/8 18:13 */ @RestController @RequestMapping("/lotteryEvent") public class MerLotteryEventController { @Resource private ILotteryEventService lotteryEventService; /** * 根据开启方式获取活动列表 * * @param activityType * @return */ @ResponseBody @PostMapping("/getLotteryEventList") public R<List<LotteryEvent>> getLotteryEventList(@RequestParam("activityType") Integer activityType) { List<LotteryEvent> list = lotteryEventService.list(new LambdaQueryWrapper<LotteryEvent>().eq(LotteryEvent::getActivityType, activityType) .eq(LotteryEvent::getDelFlag, 0).last(" and now() between start_time and end_time")); return R.ok(list); } } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/DelShopLotteryDrawDto.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.goods.domain.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @author zhibing.pu * @Date 2025/6/5 10:32 */ @ApiModel @Data public class DelShopLotteryDrawDto { @ApiModelProperty("门店id") private Long shopId; @ApiModelProperty("抽奖活动id") private String id; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/ShopLotteryDrawListDto.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.goods.domain.dto; import com.ruoyi.system.api.domain.dto.MgtPageDto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @author zhibing.pu * @Date 2025/6/5 9:23 */ @Data @ApiModel public class ShopLotteryDrawListDto extends MgtPageDto { @ApiModelProperty(value = "商户id") private Long shopId; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/ShopWinningRecordDto.java
New file @@ -0,0 +1,17 @@ package com.ruoyi.goods.domain.dto; import com.ruoyi.system.api.domain.dto.MgtPageDto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @author zhibing.pu * @Date 2025/6/5 11:24 */ @Data @ApiModel public class ShopWinningRecordDto extends MgtPageDto { @ApiModelProperty("门店id") private Long shopId; @ApiModelProperty("抽奖id") private String id; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/ShopLotteryDrawListVo.java
New file @@ -0,0 +1,24 @@ package com.ruoyi.goods.domain.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @author zhibing.pu * @Date 2025/6/5 9:27 */ @Data @ApiModel public class ShopLotteryDrawListVo { @ApiModelProperty("数据id") private String id; @ApiModelProperty("抽奖名称") private String name; @ApiModelProperty("简介") private String activityProfile; @ApiModelProperty("抽奖图片") private String coverImage; @ApiModelProperty("抽奖开始时间") private String startTime; @ApiModelProperty("抽奖结束时间") private String endTime; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/ShopLotteryDrawVo.java
New file @@ -0,0 +1,19 @@ package com.ruoyi.goods.domain.vo; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @author zhibing.pu * @Date 2025/6/5 9:25 */ @Data @ApiModel public class ShopLotteryDrawVo { @ApiModelProperty(value = "抽奖1开2关") private Integer lotteryDrawFlag; @ApiModelProperty("抽奖列表") private Page<ShopLotteryDrawListVo> page; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/ShopWinningRecordVo.java
New file @@ -0,0 +1,21 @@ package com.ruoyi.goods.domain.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @author zhibing.pu * @Date 2025/6/5 11:09 */ @Data @ApiModel public class ShopWinningRecordVo { @ApiModelProperty("用户名") private String userName; @ApiModelProperty("用户电话") private String userPhone; @ApiModelProperty("抽奖时间") private String lotteryTime; @ApiModelProperty("奖品名称") private String awardName; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/LotteryEventMapper.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.goods.api.domain.LotteryEvent; import com.ruoyi.goods.domain.vo.AppLotteryEventPageVo; import com.ruoyi.goods.domain.vo.ShopLotteryDrawListVo; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -23,4 +24,14 @@ * @return */ List<AppLotteryEventPageVo> pageAppLotteryEvent(Page<AppLotteryEventPageVo> page, @Param("userId") Long userId); /** * 获取门店抽奖列表 * * @param page * @param shopId * @return */ List<ShopLotteryDrawListVo> getShopLotteryDrawList(Page<ShopLotteryDrawListVo> page, @Param("shopId") Long shopId); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/UserLotteryEventMapper.java
@@ -1,11 +1,27 @@ package com.ruoyi.goods.mapper.lottery; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.goods.api.domain.UserLotteryEvent; import com.ruoyi.goods.domain.vo.ShopWinningRecordVo; import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; /** * @author zhibing.pu * @Date 2025/5/12 10:40 */ public interface UserLotteryEventMapper extends BaseMapper<UserLotteryEvent> { /** * 获取门店中奖记录 * * @param page * @param id * @return */ List<Map<String, Object>> getShopWinningRecord(Page<ShopWinningRecordVo> page, @Param("id") String id); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java
@@ -13,6 +13,7 @@ import com.ruoyi.goods.api.domain.UserLotteryEventQuestions; import com.ruoyi.goods.domain.vo.AppLotteryEventPageVo; import com.ruoyi.goods.domain.vo.LotteryEventVo; import com.ruoyi.goods.domain.vo.ShopLotteryDrawListVo; import com.ruoyi.goods.domain.vo.UserLotteryEventVo; import com.ruoyi.goods.mapper.lottery.LotteryEventMapper; import com.ruoyi.goods.service.lottery.ILotteryEventPrizeService; @@ -198,6 +199,7 @@ case 2: memberGiftRecord.setGiftType(2); memberGiftRecord.setGoodsId(userLotteryEvent.getObjectId()); memberGiftRecord.setGiftName(userLotteryEvent.getObjectName()); memberGiftRecord.setGoodsNumber(userLotteryEvent.getNumber()); break; case 3: @@ -236,4 +238,17 @@ public List<AppLotteryEventPageVo> pageAppLotteryEvent(Page<AppLotteryEventPageVo> page, Long userId) { return this.baseMapper.pageAppLotteryEvent(page, userId); } /** * 获取门店抽奖列表 * * @param page * @param shopId * @return */ @Override public List<ShopLotteryDrawListVo> getShopLotteryDrawList(Page<ShopLotteryDrawListVo> page, Long shopId) { return this.baseMapper.getShopLotteryDrawList(page, shopId); } } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/UserLotteryEventServiceImpl.java
@@ -1,10 +1,20 @@ package com.ruoyi.goods.service.impl.lottery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.goods.api.domain.UserLotteryEvent; import com.ruoyi.goods.domain.vo.ShopWinningRecordVo; import com.ruoyi.goods.mapper.lottery.UserLotteryEventMapper; import com.ruoyi.goods.service.lottery.IUserLotteryEventService; import com.ruoyi.system.api.domain.poji.member.Member; import com.ruoyi.system.api.service.RemoteMemberService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; import java.util.Map; import java.util.StringJoiner; import java.util.stream.Collectors; /** * @author zhibing.pu @@ -12,4 +22,53 @@ */ @Service public class UserLotteryEventServiceImpl extends ServiceImpl<UserLotteryEventMapper, UserLotteryEvent> implements IUserLotteryEventService { @Resource private RemoteMemberService remoteMemberService; /** * 获取店铺中中奖记录 * * @return */ @Override public List<ShopWinningRecordVo> getShopWinningRecord(Page<ShopWinningRecordVo> page, String id) { List<Map<String, Object>> shopWinningRecord = this.baseMapper.getShopWinningRecord(page, id); List<ShopWinningRecordVo> collect = shopWinningRecord.stream().map(item -> { Long user_id = Long.valueOf(item.get("user_id").toString()); Member member = remoteMemberService.getMember(user_id).getData(); String create_time = item.get("create_time").toString(); String content = item.get("content").toString(); String[] prizes = content.split(","); StringJoiner awardName = new StringJoiner("、"); for (String prize : prizes) { String[] split = prize.split("_"); String name = ""; switch (split[0]) { case "1": name = "优惠券"; break; case "2": name = split[2] + "x" + split[3]; break; case "3": name = split[2] + "x" + split[3]; break; case "4": name = "积分"; break; } awardName.add(name); } ShopWinningRecordVo shopWinningRecordVo = new ShopWinningRecordVo(); shopWinningRecordVo.setUserName(member.getRealName()); shopWinningRecordVo.setUserPhone(member.getMobile()); shopWinningRecordVo.setLotteryTime(create_time); shopWinningRecordVo.setAwardName(awardName.toString()); return shopWinningRecordVo; }).collect(Collectors.toList()); return collect; } } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/lottery/ILotteryEventService.java
@@ -6,6 +6,7 @@ import com.ruoyi.goods.api.domain.LotteryEvent; import com.ruoyi.goods.domain.vo.AppLotteryEventPageVo; import com.ruoyi.goods.domain.vo.LotteryEventVo; import com.ruoyi.goods.domain.vo.ShopLotteryDrawListVo; import java.util.List; @@ -42,4 +43,13 @@ * @return */ List<AppLotteryEventPageVo> pageAppLotteryEvent(Page<AppLotteryEventPageVo> page, Long userId); /** * 获取门店的抽奖列表 * * @param page * @return */ List<ShopLotteryDrawListVo> getShopLotteryDrawList(Page<ShopLotteryDrawListVo> page, Long shopId); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/lottery/IUserLotteryEventService.java
@@ -1,7 +1,11 @@ package com.ruoyi.goods.service.lottery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.goods.api.domain.UserLotteryEvent; import com.ruoyi.goods.domain.vo.ShopWinningRecordVo; import java.util.List; /** @@ -9,4 +13,10 @@ * @Date 2025/5/12 10:40 */ public interface IUserLotteryEventService extends IService<UserLotteryEvent> { /** * 获取店铺中中奖记录 */ List<ShopWinningRecordVo> getShopWinningRecord(Page<ShopWinningRecordVo> page, String id); } ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/LotteryEventMapper.xml
@@ -27,4 +27,17 @@ and a.activity_type in (4, 5)) as aa order by aa.sort, aa.startTime </select> <select id="getShopLotteryDrawList" resultType="com.ruoyi.goods.domain.vo.ShopLotteryDrawListVo"> select id, `name`, activity_profile as activityProfile, cover_image as coverImage, DATE_FORMAT(start_time, '%Y-%m-%d %H:%i') as startTime, DATE_FORMAT(end_time, '%Y-%m-%d %H:%i') as endTime from t_lottery_event where shop_id = #{shopId} order by create_time desc </select> </mapper> ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/UserLotteryEventMapper.xml
@@ -1,5 +1,15 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.goods.mapper.lottery.UserLotteryEventMapper"> <select id="getShopWinningRecord" resultType="map"> select aa.user_id, DATE_FORMAT(any_value(aa.create_time), '%Y-%m-%d %H:%i') as create_time, GROUP_CONCAT(CONCAT(aa.prize_type, '_', aa.object_id, '_', aa.object_name, '_', aa.number)) as content from (select * from t_user_lottery_event where prize_type != 5 and lottery_event_id = #{id} order by create_time) as aa group by aa.user_id </select> </mapper> ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java
@@ -53,7 +53,7 @@ } @RequestMapping(value = "/pageMerMember", method = RequestMethod.POST) @ApiOperation(value = "分页获取商户绑定会员列表") @ApiOperation(value = "分页获取商户绑定会员列表【2.0】") public R<Page<MerMemberPageVo>> pageMerMember(@RequestBody MerMemberPageDto merMemberPageDto) { Long userId = SecurityUtils.getUserId(); Page<MerMemberPageVo> page = new Page<>(); ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java
@@ -50,7 +50,7 @@ * @author jqs34 * @date: 2023/4/30 12:49 */ @PostMapping("/getMember") public R<Member> getMember(@RequestBody Long userId) { Member member = memberService.getByUserId(userId); @@ -60,6 +60,20 @@ return R.ok(member); } /** * 修改会员数据 * * @param member * @return */ @PostMapping("/editMember") public R editMember(@RequestBody Member member) { memberService.updateById(member); return R.ok(); } /** * 小程序登录 */ ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberPageVo.java
@@ -44,13 +44,16 @@ @ApiModelProperty(value = "用户标签") private String userTags; @ApiModelProperty(value = "商品类型") private String goodsType; @ApiModelProperty(value = "最近消费时间",hidden = true) @ApiModelProperty(value = "最近消费时间", hidden = true) private Date lastPayTime; @ApiModelProperty(value = "活跃度") private String memberActiveness; @ApiModelProperty(value = "调理问题") private String memberNurse; } ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
@@ -161,7 +161,8 @@ tm.birthday birthday, tm.user_tags userTags, tm.goods_type goodsType, tmt.last_service_time lastPayTime tmt.last_service_time lastPayTime, tm.memberNurse FROM t_member tm INNER JOIN t_member_total tmt ON tm.member_id = tmt.member_id WHERE tm.relation_shop_id = #{param.shopId} AND tm.binding_flag = 1 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerConsumerController.java
@@ -43,7 +43,7 @@ private UserServiceRecordService userServiceRecordService; @RequestMapping(value = "/listMerConsumerGoods", method = RequestMethod.POST) @ApiOperation(value = "获取用户服务列表") @ApiOperation(value = "获取用户服务列表【2.0】") public R<MerConsumerGoodsVo> listMerConsumerGoods(@RequestBody MerConsumerGoodsDto merConsumerGoodsDto) { Long userId = SecurityUtils.getUserId(); merConsumerGoodsDto.setUserId(userId); ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java
@@ -5,6 +5,7 @@ import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.domain.dto.*; import com.ruoyi.order.domain.pojo.order.Order; import com.ruoyi.order.domain.vo.*; import com.ruoyi.order.service.order.OrderService; import com.ruoyi.system.api.constant.AppErrorConstant; @@ -16,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.Date; import java.util.List; /** @@ -71,7 +73,12 @@ Long userId = SecurityUtils.getUserId(); merVerifyCodeDto.setUserId(userId); String verifyCode = merVerifyCodeDto.getVerifyCode(); MerVerifyOrderVo merVerifyOrderVo = orderService.verifyOrder(verifyCode,merVerifyCodeDto.getShopId()); MerVerifyOrderVo merVerifyOrderVo = null; if (!verifyCode.contains("http")) { merVerifyOrderVo = orderService.verifyOrder(verifyCode, merVerifyCodeDto.getShopId()); } else { //三方订单 } return R.ok(merVerifyOrderVo); } @@ -80,7 +87,12 @@ public R<MerVerifyOrderVo> sureVerifyOrder(@RequestBody MerVerifyOrderDto merVerifyOrderDto) { Long userId = SecurityUtils.getUserId(); merVerifyOrderDto.setUserId(userId); MerVerifyOrderVo merVerifyOrderVo = orderService.sureVerifyOrder(merVerifyOrderDto); MerVerifyOrderVo merVerifyOrderVo = null; if (!merVerifyOrderDto.getOrderId().contains("http")) { merVerifyOrderVo = orderService.sureVerifyOrder(merVerifyOrderDto); } else { //三方订单 } return R.ok(merVerifyOrderVo); } @@ -133,19 +145,43 @@ orderService.createNewOrder(merNewOrderDto); return R.ok(); } @RequestMapping(value = "/pageMerOrder", method = RequestMethod.POST) @ApiOperation(value = "获取商户端订单列表") @ApiOperation(value = "获取商户端订单列表【2.0】") public R<Page<MerOrderPageVo>> pageMerOrder(@RequestBody MerOrderPageDto merOrderPageDto) { Long userId = SecurityUtils.getUserId(); merOrderPageDto.setUserId(userId); Page<MerOrderPageVo> page = new Page<>(); page.setSize(merOrderPageDto.getPageSize()); page.setCurrent(merOrderPageDto.getPageNum()); List<MerOrderPageVo> merOrderPageVoList = orderService.pageMerOrder(page,merOrderPageDto); List<MerOrderPageVo> merOrderPageVoList = orderService.pageMerOrder(page, merOrderPageDto); return R.ok(page.setRecords(merOrderPageVoList)); } @RequestMapping(value = "/cancelMerOrder", method = RequestMethod.POST) @ApiOperation(value = "商户端取消线下订单【2.0】") public R cancelMerOrder(@RequestBody CancelMerOrderDto dto) { Order order = orderService.getById(dto.getOrderId()); if (null == order) { return R.fail("订单不存在"); } if (order.getOrderStatus() == 0) { return R.fail("订单已取消"); } if (!order.getShopId().equals(dto.getShopId())) { return R.fail("取消失败"); } if (3 != order.getOrderFrom()) { return R.fail("取消失败"); } order.setOrderStatus(0); order.setCancelTime(new Date()); orderService.updateById(order); return R.ok(); } @RequestMapping(value = "/totalMerOrder", method = RequestMethod.POST) @ApiOperation(value = "商户端订单管理统计") public R<MerTotalOrderVo> totalMerOrder(@RequestBody MerOrderPageDto merOrderPageDto) { @@ -154,9 +190,9 @@ MerTotalOrderVo totalOrderVo = orderService.totalMerOrder(merOrderPageDto); return R.ok(totalOrderVo); } @RequestMapping(value = "/pageMerMemberOrder", method = RequestMethod.POST) @ApiOperation(value = "分页商户端用户收银记录") @ApiOperation(value = "分页商户端用户收银记录【2.0】") public R<Page<MerMemberOrderVo>> pageMerMemberOrder(@RequestBody MerMemberNoClearOrderDto merMemberNoClearOrderDto) { Long userId = SecurityUtils.getUserId(); merMemberNoClearOrderDto.setUserId(userId); ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/CancelMerOrderDto.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.order.domain.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @author zhibing.pu * @Date 2025/6/5 17:53 */ @Data @ApiModel public class CancelMerOrderDto { @ApiModelProperty("商户id") private Long shopId; @ApiModelProperty("订单id") private String orderId; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerOrderPageDto.java
@@ -27,7 +27,7 @@ @ApiModelProperty(value = "搜索关键词") private String keyword; @ApiModelProperty(value = "1.全部2.待核销3.已核销") @ApiModelProperty(value = "0.已取消1.全部2.待核销3.已核销") private Integer type; @ApiModelProperty(value = "订单开始时间") @@ -35,7 +35,7 @@ @ApiModelProperty(value = "订单结束时间") private String endOrderDate; @ApiModelProperty(value = "订单来源1.店铺商品2.平台秒杀活动3.线下创建") @ApiModelProperty(value = "订单来源1.商城2.秒杀活动3.线下创建4.抽奖5.美团6.抖音7.快手") private Integer orderFrom; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerConsumerGoodsListVo.java
@@ -24,31 +24,34 @@ @ApiModelProperty(value="商品类型1周期2服务3体验4单品") private Integer goodsType; @ApiModelProperty(value="商品名称") @ApiModelProperty(value = "商品名称") private String goodsName; @ApiModelProperty(value="商品标签") @ApiModelProperty(value = "商品标签") private String goodsTags; @ApiModelProperty(value = "商品简介") private String goodsIntroduction; @ApiModelProperty(value="商品图片") @ApiModelProperty(value = "商品图片") private String goodsPicture; @ApiModelProperty(value="商品调理问题") @ApiModelProperty(value = "商品调理问题") private String goodsNurses; @ApiModelProperty(value="周期标记") @ApiModelProperty(value = "周期标记") private Integer cycleNumFlag; @ApiModelProperty(value="服务次数") @ApiModelProperty(value = "服务次数") private Integer serviceNum; @ApiModelProperty(value="消耗次数") @ApiModelProperty(value = "消耗次数") private Integer usedNum; @ApiModelProperty(value="待确认次数") @ApiModelProperty(value = "待确认次数") private Integer sureNum; @ApiModelProperty(value = "是否选中") private Boolean optionFlag; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberOrderVo.java
@@ -1,11 +1,13 @@ package com.ruoyi.order.domain.vo; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.system.api.domain.vo.MerCouponGoodsListVo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; import java.util.List; /** * @ClassName MerMemberOrderVo @@ -55,14 +57,17 @@ @ApiModelProperty(value="未收金额") private BigDecimal unPaidMoney; @ApiModelProperty(value="收款时间") @ApiModelProperty(value = "收款时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date receiveMoneyTime; @ApiModelProperty(value="收款金额") @ApiModelProperty(value = "收款金额") private BigDecimal thisReceiveMoney; @ApiModelProperty(value="收款方式") @ApiModelProperty(value = "收款方式") private String thisReceiveType; @ApiModelProperty(value = "商品信息") private List<MerCouponGoodsListVo> goodsList; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyAwardVo.java
@@ -31,7 +31,7 @@ @ApiModelProperty(value = "奖品来源") private String giftFrom; @ApiModelProperty(value = "礼物类型1优惠券2商品3现金4实物") @ApiModelProperty(value = "礼物类型1优惠券2商品3现金4实物5积分") private Integer giftType; @ApiModelProperty(value = "奖品名称") ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java
@@ -1,6 +1,7 @@ package com.ruoyi.order.service.impl.order; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.domain.R; @@ -87,20 +88,29 @@ public List<AppConsumerPageVo> pageUserConsumerGoods(Page page, AppConsumerPageDto appConsumerPageDto){ return consumerGoodsMapper.pageUserConsumerGoods(page, appConsumerPageDto); } /** * 获取会员服务商品 * * @param merConsumerGoodsDto * @return */ @Override public MerConsumerGoodsVo listMerConsumerGoods(MerConsumerGoodsDto merConsumerGoodsDto){ public MerConsumerGoodsVo listMerConsumerGoods(MerConsumerGoodsDto merConsumerGoodsDto) { MerConsumerGoodsVo merConsumerGoodsVo = new MerConsumerGoodsVo(); if(merConsumerGoodsDto.getGoodsType()==1){ if (merConsumerGoodsDto.getGoodsType() == 1) { List<MerConsumerGoodsListVo> noSureList = consumerGoodsMapper.listMerNoSureConsumerGoods(merConsumerGoodsDto); merConsumerGoodsVo.setNoSureList(noSureList); } List<MerConsumerGoodsListVo> sureList = consumerGoodsMapper.listMerConsumerGoods(merConsumerGoodsDto); Member member = remoteMemberService.getMember(merConsumerGoodsDto.getUserId()).getData(); String lastServiceId = member.getLastServiceId(); if (StringUtils.isNotEmpty(lastServiceId)) { List<String> list = JSON.parseArray(lastServiceId, String.class); sureList.forEach(s -> { s.setOptionFlag(list.contains(s.getConsumerGoodsId())); }); } merConsumerGoodsVo.setSureList(sureList); return merConsumerGoodsVo; } @@ -174,13 +184,13 @@ } } //判断商品确认次数 if(sureNum>oldConsumerGoods.getSureNum()){ if (sureNum > oldConsumerGoods.getSureNum()) { throw new ServiceException(AppErrorConstant.GOODS_SURE_FAILED); }else{ } else { int surpNum = oldConsumerGoods.getSureNum(); surpNum = surpNum - sureNum; oldConsumerGoods.setSureNum(surpNum); if(surpNum==0){ if (surpNum == 0) { oldConsumerGoods.setDelFlag(1); } this.saveOrUpdate(oldConsumerGoods); @@ -304,20 +314,26 @@ serviceRecord.setConsumerGoodsNames(goodsNames); userServiceRecordService.saveOrUpdate(serviceRecord); //服务记录详情 for(ServiceRecordDetail serviceRecordDetail1 : serviceRecordDetailList){ for (ServiceRecordDetail serviceRecordDetail1 : serviceRecordDetailList) { serviceRecordDetail1.setRecordId(serviceRecord.getId()); } serviceRecordDetailService.saveBatch(serviceRecordDetailList); //保存本次确认的服务商品id,用于下次进入页面后默认勾选上 List<String> collect = goodsList.stream().map(MerSureConsumerGoodsListDto::getConsumerGoodsId).collect(Collectors.toList()); Member member = remoteMemberService.getMember(merSureConsumerGoodsDto.getUserId()).getData(); member.setLastServiceId(JSON.toJSONString(collect)); remoteMemberService.editMember(member); //更新商户和会员服务统计 MemberTotalChangeDto memberTotalChange = new MemberTotalChangeDto(); memberTotalChange.setUserId(merSureConsumerGoodsDto.getMemberUserId()); memberTotalChange.setTypeService(2); memberTotalChange.setServiceCount(serviceCount); remoteMemberService.changeMemberTotal(memberTotalChange); if(!sendData.isEmpty()){ Member member = remoteMemberService.getMember(userId).getData(); if (!sendData.isEmpty()) { R<Shop> r = remoteShopService.getShop(shopId); if(r.getCode() != 200){ if (r.getCode() != 200) { throw new ServiceException(r.getMsg()); } Shop shop = r.getData(); @@ -327,11 +343,10 @@ Integer number = Integer.valueOf(sendDatum.get("number").toString()); String msg = "{\"name\":\"" + (StringUtils.isEmpty(member.getRealName()) ? member.getNickName() : member.getRealName()) + "\"," + "\"store\":\"" + shop.getShopName() + "\",\"product\":\"" + product + "\"}"; if(number == 2){ MsgUtils.sendMsg(member.getMobile(),"SMS_464376210",msg); } if(number == 0){ MsgUtils.sendMsg(member.getMobile(),"SMS_464321234",msg); if (number == 0) { MsgUtils.sendMsg(member.getMobile(), "SMS_464321234", msg); } else { MsgUtils.sendMsg(member.getMobile(), "SMS_464376210", msg); } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -3032,9 +3032,27 @@ if (merMemberNoClearOrderVo.getUnPaidMoney() == null) { merMemberNoClearOrderVo.setUnPaidMoney(zeroBig); } if(merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig)<0){ if (merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig) < 0) { merMemberNoClearOrderVo.setUnPaidMoney(zeroBig); } List<MerCouponGoodsListVo> goodsList = new ArrayList<>(); orderGoodsService.listByOrderId(merMemberNoClearOrderVo.getOrderId()).forEach(orderGoodsVo -> { MerCouponGoodsListVo merCouponGoodsListVo = new MerCouponGoodsListVo(); merCouponGoodsListVo.setGoodsId(orderGoodsVo.getGoodsId()); merCouponGoodsListVo.setGoodsName(orderGoodsVo.getGoodsName()); merCouponGoodsListVo.setGoodsNum(orderGoodsVo.getBuyNum()); if (orderGoodsVo.getGoodsType() == 1) { merCouponGoodsListVo.setGoodsType("周期"); } else if (orderGoodsVo.getGoodsType() == 2) { merCouponGoodsListVo.setGoodsType("服务"); } else if (orderGoodsVo.getGoodsType() == 3) { merCouponGoodsListVo.setGoodsType("体验"); } else if (orderGoodsVo.getGoodsType() == 4) { merCouponGoodsListVo.setGoodsType("单品"); } goodsList.add(merCouponGoodsListVo); }); merMemberNoClearOrderVo.setGoodsList(goodsList); } } return merMemberNoClearOrderVoList; @@ -4801,17 +4819,17 @@ if (memberGiftRecord.getGiftFrom() == 1) { BirthdayCard birthdayCard = remoteMemberService.getBirthdayCard().getData(); //判断生日活动状态 if(birthdayCard!=null&&birthdayCard.getCardStatus()==1){ if (birthdayCard != null && birthdayCard.getCardStatus() == 1) { shop = remoteShopService.getShop(shopId).getData(); //判断指定区域全部店铺 if(birthdayCard.getAreaFlag()==2&&birthdayCard.getShopFlag()==1&&!StringUtils.checkString(birthdayCard.getDesignatedArea(),shop.getShopCityCode())){ if (birthdayCard.getAreaFlag() == 2 && birthdayCard.getShopFlag() == 1 && !StringUtils.checkString(birthdayCard.getDesignatedArea(), shop.getShopCityCode())) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } //判断指定店铺 if(birthdayCard.getShopFlag()==2&&!StringUtils.checkString(birthdayCard.getApplicableShop(),shopId.toString())){ if (birthdayCard.getShopFlag() == 2 && !StringUtils.checkString(birthdayCard.getApplicableShop(), shopId.toString())) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } }else{ } else { throw new ServiceException(AppErrorConstant.BIRTHDAY_CARD_ERROR); } } @@ -4819,16 +4837,20 @@ if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shopId)) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } merVerifyAwardVo.setUserName(member.getRealName()); merVerifyAwardVo.setUserMobile(member.getMobile()); if (memberGiftRecord.getGiftFrom() == 1) { merVerifyAwardVo.setGiftFrom("平台生日卡"); if (1 == memberGiftRecord.getPrizeFrom()) { if (memberGiftRecord.getGiftFrom() == 1) { merVerifyAwardVo.setGiftFrom("平台生日卡"); } else { merVerifyAwardVo.setGiftFrom("商户生日卡"); } } else { merVerifyAwardVo.setGiftFrom("商户生日卡"); merVerifyAwardVo.setGiftFrom("平台抽奖"); } merVerifyAwardVo.setGiftType(memberGiftRecord.getGiftType()); //礼物类型1优惠券2商品3现金4实物 //礼物类型1优惠券2商品3现金4实物5积分 switch (memberGiftRecord.getGiftType()) { case 1: merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName()); ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -365,24 +365,32 @@ toc.order_status orderStatus, toc.order_money orderGoodsMoney, toc.coupon_money couponDiscount, CASE toc.pay_type WHEN 1 THEN toc.order_money-toc.coupon_money WHEN 2 THEN toc.order_money-toc.coupon_money-toc.online_pay_money END receivableMoney, CASE toc.pay_type WHEN 1 THEN toc.order_money-toc.coupon_money WHEN 2 THEN toc.order_money-toc.coupon_money-toc.online_pay_money END receivableMoney, toc.receivable_deposit receivableDeposit, toc.pay_money payMoney, (CASE WHEN null = toc.change_receivable_money or toc.change_receivable_money = 0 THEN toc.receivable_money ELSE toc.change_receivable_money END) relReceiveMoney, (CASE WHEN null = toc.change_receivable_money or toc.change_receivable_money = 0 THEN toc.receivable_money ELSE toc.change_receivable_money END) relReceiveMoney, CASE toc.pay_type WHEN 1 THEN toc.pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END receiveMoney, (CASE WHEN null = toc.change_receivable_money or toc.change_receivable_money = 0 THEN toc.receivable_money ELSE toc.change_receivable_money END) - (CASE toc.pay_type WHEN 1 THEN toc.pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END) unPaidMoney, (CASE WHEN null = toc.change_receivable_money or toc.change_receivable_money = 0 THEN toc.receivable_money ELSE toc.change_receivable_money END) - (CASE toc.pay_type WHEN 1 THEN toc.pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END) unPaidMoney, toc.order_remark orderRemark, toc.create_time createTime, toc.order_from orderFrom, CASE toc.order_from WHEN 1 THEN '商城订单' WHEN 2 THEN CONCAT('平台秒杀活动(',toc.activity_name,')') WHEN 3 THEN '线下创建' END orderFromDesc, CASE toc.order_from WHEN 1 THEN '商城订单' WHEN 2 THEN CONCAT('平台秒杀活动(',toc.activity_name,')') WHEN 3 THEN '线下创建' END orderFromDesc, toc.activity_name activityName FROM t_order toc WHERE toc.del_flag = 0 AND toc.shop_id = #{param.shopId} and if(toc.order_from = 1, 1 = 1, toc.order_status = 3)<!--临时增加过滤--> WHERE toc.del_flag = 0 AND toc.shop_id = #{param.shopId} <if test="param.memberUserId != null and param.memberUserId != ''"> AND toc.user_id = #{param.memberUserId} </if> <if test="param.type != null and param.type ==0 "> AND toc.order_status = 0 </if> <if test="param.type != null and param.type ==1 "> AND (toc.order_status = 2 OR toc.order_status = 3) AND toc.order_status in(0, 2, 3) </if> <if test="param.type != null and param.type ==2 "> AND toc.order_status = 2 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/business/MerShopController.java
@@ -286,4 +286,18 @@ shopAppointableTimeService.updateById(shopAppointableTime); return R.ok(); } @RequestMapping(value = "/getMyShopList", method = RequestMethod.POST) @ApiOperation(value = "获取当前账户可切换的门店列表【2.0】") public R<List<Shop>> getMyShopList() { Long userId = SecurityUtils.getUserId(); List<ShopRelUser> shopRelUser = shopRelUserService.getByUserId(userId); List<Shop> collect = shopRelUser.stream().map(e -> { Shop shop = shopService.getById(e.getShopId()); return shop; }).collect(Collectors.toList()); return R.ok(collect); } }