From 1730a7fc4bb96f258d9dc8dec2e629cadbfdefc0 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期三, 18 六月 2025 13:47:42 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/2.0' into 2.0 --- ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml | 2 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtOneClinkSyncPageVO.java | 26 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/goods/GoodsService.java | 10 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/UpdateGoodsPriceDTO.java | 19 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java | 10 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/ShopFileMapper.java | 5 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopFileServiceImpl.java | 5 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/lottery/ILotteryEventService.java | 43 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtOneClinkSyncingPageDTO.java | 22 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtLotteryEventQuestionVO.java | 30 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtLotteryEventController.java | 106 +++ ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtOneClinkSyncingEditDto.java | 45 + ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtUserAnswersPageDTO.java | 15 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java | 22 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java | 26 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtOneClinkSyncingShopPageVo.java | 49 + ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventJoinUserPageDTO.java | 11 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Pop.java | 5 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventPrizeDTO.java | 20 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/ShopFileService.java | 6 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/UserLotteryEventMapper.java | 1 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java | 81 ++ ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/UserLotteryEventQuestionsAnswersMapper.java | 6 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtLotteryEventPageVo.java | 40 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java | 55 + ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/LotteryEvent.java | 2 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtLotteryEventJoinUserPageVO.java | 24 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventPageDto.java | 31 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java | 12 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/LotteryEventMapper.java | 4 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/OneClinkSyncingService.java | 46 + ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopFileMapper.xml | 6 ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/UserLotteryEventQuestionsAnswersMapper.xml | 35 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/OneClinkSyncingMapper.java | 29 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/config/OneClinkSyncing.java | 123 +++ ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml | 48 + ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtUserAnswersPageVO.java | 26 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java | 37 + ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java | 23 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MGtOneClinkSyncingShopPageDTO.java | 16 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/lottery/IUserLotteryEventQuestionsAnswersService.java | 5 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/PageShopMgtGoodsVO.java | 3 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java | 25 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventQuestionDTO.java | 24 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/UserLotteryEventQuestionsAnswersServiceImpl.java | 13 ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/OneClinkSyncingMapper.xml | 21 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java | 17 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java | 254 +++++++ ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/LotteryEventMapper.xml | 68 ++ ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventEditDTO.java | 129 +++ ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtLotteryEventDetailVO.java | 65 + ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventQuestionAnswersDTO.java | 19 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtOneClinkSyncingVO.java | 38 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/OneClinkSyncingServiceImpl.java | 134 ++++ 54 files changed, 1,891 insertions(+), 46 deletions(-) diff --git a/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/LotteryEvent.java b/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/LotteryEvent.java index 25f8c49..39127c6 100644 --- a/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/LotteryEvent.java +++ b/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/LotteryEvent.java @@ -115,7 +115,7 @@ * 创建用户id */ @TableField("create_user_id") - private Integer createUserId; + private Long createUserId; /** * 创建时间 */ diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MGtOneClinkSyncingShopPageDTO.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MGtOneClinkSyncingShopPageDTO.java new file mode 100644 index 0000000..f2cd212 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MGtOneClinkSyncingShopPageDTO.java @@ -0,0 +1,16 @@ +package com.ruoyi.system.api.domain.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class MGtOneClinkSyncingShopPageDTO extends MgtPageDto { + @ApiModelProperty("一键同步id") + private Integer syncingId; + + @ApiModelProperty(value = "选择门店ids",hidden = true) + private List<Long> shopIds; + +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/config/OneClinkSyncing.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/config/OneClinkSyncing.java new file mode 100644 index 0000000..efe74ef --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/config/OneClinkSyncing.java @@ -0,0 +1,123 @@ +package com.ruoyi.system.api.domain.poji.config; + +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * <p> + * 一键同步表 + * </p> + * + * @author hlg + * @since 2025/6/16 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_one_clink_syncing") +public class OneClinkSyncing extends Model<OneClinkSyncing> { + + private static final long serialVersionUID = 1L; + + /** + * syncing id + */ + @TableId(value = "syncing_id", type = IdType.AUTO) + private Integer syncingId; + + /** + * 删除标记 + */ + @TableField("del_flag") + private Integer delFlag; + + /** + * 同步名称(标题) + */ + @TableField("syncing_name") + private String syncingName; + + /** + * 封面图片 + */ + @TableField("cover_url") + private String coverUrl; + + /** + * 详情图,多个逗号分隔 + */ + @TableField("details_picture") + private String detailsPicture; + + /** + * 领券1开2关 + */ + @TableField("platform_coupon_flag") + private Integer platformCouponFlag; + + /** + * 生日卡1开2关 + */ + @TableField("platform_birthday_flag") + private Integer platformBirthdayFlag; + + /** + * 店铺详情 + */ + @TableField("shop_detail") + private String shopDetail; + + /** + * 同步门店数 + */ + @TableField("shop_num") + private Integer shopNum = 0; + + @TableField("create_time") + private Date createTime; + + @TableField("create_user_id") + private Long createUserId; + + @TableField("update_time") + private Date updateTime; + + @TableField("update_user_id") + private Long updateUserId; + + /** + * 最近一次同步时间 + */ + @TableField("syncing_time") + private Date syncingTime; + + /** + * 最近一次同步操作人 + */ + @TableField("syncing_user_id") + private Long syncingUserId; + + /** + * 选择的门店ids,多个以逗号隔开 + */ + @TableField("shop_ids") + private String shopIds; + + private List<Long> shopIdList; + private Long userId; + + @Override + protected Serializable pkVal() { + return this.syncingId; + } +} \ No newline at end of file diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtOneClinkSyncingShopPageVo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtOneClinkSyncingShopPageVo.java new file mode 100644 index 0000000..a4c4446 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtOneClinkSyncingShopPageVo.java @@ -0,0 +1,49 @@ +package com.ruoyi.system.api.domain.vo; + +import com.ruoyi.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author jqs34 + * @ClassName MgtShopPageVo + * @description: TODO + * @date 2023年04月21日 + * @version: 1.0 + */ +@Data +public class MgtOneClinkSyncingShopPageVo { + + @ApiModelProperty(value = "商户id") + private Long shopId; + @ApiModelProperty(value="商户编号") + private String shopNumber; + @ApiModelProperty(value="店铺名称") + private String shopName; + @ApiModelProperty(value="店铺标签") + private String shopTags; + @ApiModelProperty(value="来源渠道") + private String shopSource; + + @ApiModelProperty(value="所属经销商") + private String belongShopName; + @ApiModelProperty(value="签约区域") + private String signAreaName; + @ApiModelProperty(value="合作期限") + private String cooperationTime; + @ApiModelProperty(value="店铺地址") + private String shopAddress; + @ApiModelProperty(value="店长") + private String shopownerName; + @ApiModelProperty(value="店长联系方式") + private String shopownerPhone; + @ApiModelProperty(value="店铺状态") + private String shopCustomStatus; + @ApiModelProperty(value="店铺活动次数") + private Integer shopActivityCount; + @ApiModelProperty(value="冻结状态0解冻1冻结") + private Integer frozenFlag; + +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java index 3696a02..0d487e8 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java @@ -1,7 +1,9 @@ package com.ruoyi.system.api.factory; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.dto.*; +import com.ruoyi.system.api.domain.poji.config.OneClinkSyncing; import com.ruoyi.system.api.domain.vo.ShopProportionVo; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.model.QwH5LoginVo; @@ -162,6 +164,21 @@ public List<Shop> getFranchiseeIdsBYDealerId(Long shopId) { return Collections.emptyList(); } + + @Override + public Page<MgtOneClinkSyncingShopPageVo> getMgtShopPageVoByShopIds(MGtOneClinkSyncingShopPageDTO dto) { + return null; + } + + @Override + public List<Shop> getShopListByShopName(String content) { + return null; + } + + @Override + public R updateShopByOneClinkSyncing(OneClinkSyncing oneClinkSyncing) { + return R.fail("一键同步商户信息失败:"+throwable.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java index 53fa050..eba3ccf 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java @@ -1,8 +1,10 @@ package com.ruoyi.system.api.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.dto.*; +import com.ruoyi.system.api.domain.poji.config.OneClinkSyncing; import com.ruoyi.system.api.domain.poji.shop.Shop; import com.ruoyi.system.api.domain.vo.ShopProportionVo; import com.ruoyi.system.api.domain.vo.*; @@ -216,4 +218,28 @@ */ @PostMapping("/shop/getFranchiseeIdsBYDealerId") List<Shop> getFranchiseeIdsBYDealerId(@RequestBody Long shopId); + + /** + * 根据shopIds分页查看 + * @param dto + * @return + */ + @PostMapping("/shop/getMgtShopPageVoByShopIds") + Page<MgtOneClinkSyncingShopPageVo> getMgtShopPageVoByShopIds(@RequestBody MGtOneClinkSyncingShopPageDTO dto); + + /** + * 根据shopName模糊查询门店集合 + * @param content + * @return + */ + @PostMapping("/shop/getShopListByShopName") + List<Shop> getShopListByShopName(@RequestBody String content); + + /** + * 一键同步 + * @param oneClinkSyncing + * @return + */ + @PostMapping("/shop/updateShopByOneClinkSyncing") + R updateShopByOneClinkSyncing(@RequestBody OneClinkSyncing oneClinkSyncing); } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java index e08b353..eabdc44 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java @@ -134,7 +134,7 @@ } @RequestMapping(value = "/pageShopMgtGoods", method = RequestMethod.POST) - @ApiOperation(value = "分页获取门店内商品信息",tags = "管理台商户相关接口") + @ApiOperation(value = "商品信息-分页获取门店内商品信息【2.0】",tags = "管理台商户相关接口") public R<Page<PageShopMgtGoodsVO>> pageShopMgtGoods(@RequestBody PageShopMgtGoodsDTO pageShopMgtGoodsDTO) { Page<PageShopMgtGoodsVO> page = new Page<>(); page.setSize(pageShopMgtGoodsDTO.getPageSize()); @@ -144,5 +144,11 @@ return R.ok(page.setRecords(pageShopMgtGoods)); } - //修改价格 转为经销商 + + @RequestMapping(value = "/updateGoodsPrice", method = RequestMethod.POST) + @ApiOperation(value = "商品信息-修改价格【2.0】",tags = "管理台商户相关接口") + public R<Void> updateGoodsPrice(@RequestBody UpdateGoodsPriceDTO updateGoodsPriceDTO) { + return goodsService.updateGoodsPrice(updateGoodsPriceDTO); + } + } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtLotteryEventController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtLotteryEventController.java new file mode 100644 index 0000000..97c8a19 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtLotteryEventController.java @@ -0,0 +1,106 @@ +package com.ruoyi.goods.controller.management; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.log.annotation.Log; +import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.goods.api.domain.LotteryEvent; +import com.ruoyi.goods.domain.dto.*; +import com.ruoyi.goods.domain.vo.*; +import com.ruoyi.goods.service.lottery.ILotteryEventService; +import com.ruoyi.goods.service.lottery.IUserLotteryEventQuestionsAnswersService; +import com.ruoyi.goods.service.lottery.IUserLotteryEventService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.Collections; +import java.util.List; + +/** + * @author hlg + * @Date 2025/6/16 + */ +@RestController +@Api(value = "管理后台抽奖相关接口", tags = "管理后台抽奖相关接口", description = "管理后台抽奖相关接口") +@RequestMapping("/mgt/lotteryEvent") +public class MgtLotteryEventController { + @Resource + private ILotteryEventService lotteryEventService; + @Resource + private IUserLotteryEventService userLotteryEventService; + @Resource + private IUserLotteryEventQuestionsAnswersService userLotteryEventQuestionsAnswersService; + + @RequestMapping(value = "/editLotteryEvent", method = RequestMethod.POST) + @Log(title = "抽奖管理", businessType = BusinessType.UPDATE,operContent = "编辑抽奖活动") + @ApiOperation(value = "平台添加/修改抽奖活动【2.0】") + public R<ShopLotteryDrawVo> editLotteryEvent(@Valid @RequestBody MgtLotteryEventEditDTO dto) { + return lotteryEventService.editLotteryEvent(dto); + } + @RequestMapping(value = "/pageMgtLotteryEvent", method = RequestMethod.POST) + @ApiOperation(value = "分页获取抽奖列表【2.0】") + public R<Page<MgtLotteryEventPageVo>> pageMgtLotteryEvent(@RequestBody MgtLotteryEventPageDto dto) { + Page<MgtLotteryEventPageVo> page = new Page<>(); + page.setSize(dto.getPageSize()); + page.setCurrent(dto.getPageNum()); + page.setOptimizeCountSql(false); + List<MgtLotteryEventPageVo> mgtGoodsPageVoList = lotteryEventService.pageMgtLotteryEvent(page,dto); + return R.ok(page.setRecords(mgtGoodsPageVoList)); + } + + @RequestMapping(value = "/getLotteryEventDetailById/{id}", method = RequestMethod.POST) + @ApiOperation(value = "查看抽奖活动详情【2.0】") + public R<MgtLotteryEventDetailVO> getLotteryEventDetailById(@PathVariable("id") String id) { + return lotteryEventService.getLotteryEventDetailById(id); + } + + //查看-参与人信息 + @RequestMapping(value = "/getLotteryEventJoinUserPageById/{id}", method = RequestMethod.POST) + @ApiOperation(value = "查看抽奖活动-参与人信息【2.0】") + public R<Page<ShopWinningRecordVo>> getLotteryEventJoinUserPageById(@RequestBody MgtLotteryEventJoinUserPageDTO dto) { + 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)); + } + //查看-答题情况 + @RequestMapping(value = "/getUserAnswersPage", method = RequestMethod.POST) + @ApiOperation(value = "查看抽奖活动-答题情况【2.0】") + public R<Page<MgtUserAnswersPageVO>> getUserAnswersPage(@RequestBody MgtUserAnswersPageDTO dto) { + //检查是否答题类型 + LotteryEvent lotteryEvent = lotteryEventService.getById(dto.getLotteryEventId()); + if (null == lotteryEvent || lotteryEvent.getDelFlag()!=0 ){ + return R.fail("该抽奖活动不存在"); + } + if ( lotteryEvent.getActivityType()!=5){ + return R.fail("请选择答题抽奖类型的活动"); + } + Page<MgtUserAnswersPageVO> page = new Page<>(); + page.setSize(dto.getPageSize()); + page.setCurrent(dto.getPageNum()); + List<MgtUserAnswersPageVO> shopWinningRecordVoList = userLotteryEventQuestionsAnswersService.getUserAnswersPage(page, dto.getLotteryEventId(),dto.getUserId()); + return R.ok(page.setRecords(shopWinningRecordVoList)); + } + + //删除 + @RequestMapping(value = "/deleteMgtLotteryEvent/{id}", method = RequestMethod.POST) + @Log(title = "抽奖管理", businessType = BusinessType.DELETE,operContent = "删除抽奖活动") + @ApiOperation(value = "删除抽奖活动【2.0】") + public R deleteMgtLotteryEvent(@PathVariable("id") String id) { + return lotteryEventService.deleteMgtLotteryEvent(id); + } + + //立即结束 + @RequestMapping(value = "/endImmediatelyLotteryEvent/{id}", method = RequestMethod.POST) + @Log(title = "抽奖管理", businessType = BusinessType.UPDATE,operContent = "立即结束") + @ApiOperation(value = "立即结束【2.0】") + public R endImmediatelyLotteryEvent(@PathVariable("id") String id) { + return lotteryEventService.endImmediatelyLotteryEvent(id); + } + + +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventEditDTO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventEditDTO.java new file mode 100644 index 0000000..202c91b --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventEditDTO.java @@ -0,0 +1,129 @@ +package com.ruoyi.goods.domain.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.ruoyi.system.api.domain.dto.MgtBaseDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.Valid; +import javax.validation.constraints.*; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class MgtLotteryEventEditDTO extends MgtBaseDto { + + @ApiModelProperty("活动id,不传为新增") + private String id; + + @ApiModelProperty("抽奖名称") + @NotEmpty(message = "抽奖名称不能为空") + private String name; + + @ApiModelProperty("活动简介名称") + @NotEmpty(message = "活动简介不能为空") + private String activityProfile; + + @ApiModelProperty("开启方式(1=新注册用户,2=下单,3=分享小程序,4=普通抽奖,5=答题抽奖)") + @Min(value = 1,message = "开启方式选值错误") + @Max(value = 5,message = "开启方式选值错误") + @NotNull(message = "开启方式不能为空") + private Integer activityType; + + @ApiModelProperty("可抽奖次数") + @NotNull(message = "可抽奖次数不能为空") + private Integer times; + + @ApiModelProperty("活动开始时间") + @NotEmpty(message = "活动开始时间不能为空") + private LocalDateTime startTime; + + @ApiModelProperty("活动结束时间") + @NotEmpty(message = "活动结束时间不能为空") + private LocalDateTime endTime; + + + /** + * 下单类型所需 + */ + @ApiModelProperty("下单支付金额") + private BigDecimal payMoney; + + /** + * 分享类型所需 + */ + @ApiModelProperty("分享抽奖间隔天数") + private Integer intervalTime; + + /** + * 答题类型所需 + */ + @ApiModelProperty("答题时间限制(分钟)") + private Integer answeringTime; + @ApiModelProperty("答题抽奖正确率%") + private BigDecimal accuracy; + @ApiModelProperty("抽奖题目设置") + private List<MgtLotteryEventQuestionDTO> mgtLotteryQuestionDTOList; + + @ApiModelProperty("封面图") + @NotEmpty(message = "封面图不能为空") + private String coverImage; + + @ApiModelProperty("详情介绍") + @NotEmpty(message = "详情介绍不能为空") + private String activityContent; + + @ApiModelProperty("抽奖奖品设置") + @NotEmpty(message = "抽奖奖品不能为空") + @Valid + private List<MgtLotteryEventPrizeDTO> mgtLotteryEventPrizeDTOList; + + /** + * 即线下抽奖方式不能新增 + */ + @AssertTrue(message = "当开启方式为线下抽奖时,活动id不能为空") + public boolean isIdValid() { + return activityType != 6 || id != null; + } + + /** + * activityType=2时 payMoney不能为空 + */ + @AssertTrue(message = "当开启方式为下单时,下单支付金额不能为空") + public boolean isPayMoneyValid() { + return activityType != 2 || payMoney != null; + } + + /** + * activityType=3时 intervalTime不能为空 + */ + @AssertTrue(message = "当开启方式为下单时,分享抽奖间隔天数不能为空") + public boolean isIntervalTimeValid() { + return activityType != 3 || intervalTime != null; + } + + /** + * activityType=5时 answeringTime不能为空 + */ + @AssertTrue(message = "当活动类型为答题抽奖时,答题时间限制不能为空") + public boolean isAnsweringTimeValid() { + return activityType != 5 || answeringTime != null; + } + + /** + * activityType=5时 accuracy不能为空 + */ + @AssertTrue(message = "当活动类型为答题抽奖时,抽奖要求的正确率不能为空") + public boolean isAccuracyValid() { + return activityType != 5 || accuracy != null; + } + + /** + * activityType=5时 mgtLotteryQuestionDTOList不能为空 + */ + @AssertTrue(message = "当活动类型为答题抽奖时,问题列表不能为空") + public boolean isQuestionListValid() { + return activityType != 5 || (mgtLotteryQuestionDTOList != null && !mgtLotteryQuestionDTOList.isEmpty()); + } +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventJoinUserPageDTO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventJoinUserPageDTO.java new file mode 100644 index 0000000..acf0f79 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventJoinUserPageDTO.java @@ -0,0 +1,11 @@ +package com.ruoyi.goods.domain.dto; + +import com.ruoyi.system.api.domain.dto.MgtPageDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class MgtLotteryEventJoinUserPageDTO extends MgtPageDto { + @ApiModelProperty("活动id") + private String id; +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventPageDto.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventPageDto.java new file mode 100644 index 0000000..95efdde --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventPageDto.java @@ -0,0 +1,31 @@ +package com.ruoyi.goods.domain.dto; + +import com.ruoyi.system.api.domain.dto.MgtPageDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +@Data +public class MgtLotteryEventPageDto extends MgtPageDto { + @ApiModelProperty("抽奖名称") + private String name; + + @ApiModelProperty("抽奖方式(0-全部 1=新注册用户,2=下单,3=分享小程序,4=普通抽奖,5=答题抽奖,6=线下抽奖)") + private Integer activityType; + + @ApiModelProperty("抽奖状态:0-全部 1-未开始,2-进行中,已结束") + private Integer status; + + @ApiModelProperty("创建对象") + private String createObject; + + @ApiModelProperty(value = "门店ids",hidden = true) + private List<Long> shopIds; + + @ApiModelProperty(value = "平台创建标志 0-未包含平台创建 1-包含",hidden = true) + private Integer flag=1; + + +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventPrizeDTO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventPrizeDTO.java new file mode 100644 index 0000000..636240f --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventPrizeDTO.java @@ -0,0 +1,20 @@ +package com.ruoyi.goods.domain.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class MgtLotteryEventPrizeDTO { + @ApiModelProperty("奖品类型(1=优惠券,2=平台商品,3=线下商品,4=积分)") + private Integer prizeType; + @ApiModelProperty("奖品id") + private String objectId; + @ApiModelProperty("奖品名称") + private String objectName; + @ApiModelProperty("奖品数量") + private Integer number; + @ApiModelProperty("中奖率%") + private BigDecimal winRate; +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventQuestionAnswersDTO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventQuestionAnswersDTO.java new file mode 100644 index 0000000..852db90 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventQuestionAnswersDTO.java @@ -0,0 +1,19 @@ +package com.ruoyi.goods.domain.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class MgtLotteryEventQuestionAnswersDTO { + /** + * 选项 + */ + @ApiModelProperty("选项") + private String answer; + /** + * 是否是正确答案(0=否,1=是) + */ + @TableField(value = "is_right") + private Integer isRight; +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventQuestionDTO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventQuestionDTO.java new file mode 100644 index 0000000..d3fa759 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtLotteryEventQuestionDTO.java @@ -0,0 +1,24 @@ +package com.ruoyi.goods.domain.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class MgtLotteryEventQuestionDTO { + /** + * 题干名称 + */ + @ApiModelProperty("题干名称") + private String name; + /** + * 排序 + */ + @ApiModelProperty("排序") + private Integer sort; + + @ApiModelProperty("题干选项集合") + private List<MgtLotteryEventQuestionAnswersDTO> answersDTOList; +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtUserAnswersPageDTO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtUserAnswersPageDTO.java new file mode 100644 index 0000000..e4e83eb --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtUserAnswersPageDTO.java @@ -0,0 +1,15 @@ +package com.ruoyi.goods.domain.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.ruoyi.system.api.domain.dto.MgtPageDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class MgtUserAnswersPageDTO extends MgtPageDto { + @ApiModelProperty("用户id") + private Long userId; + + @ApiModelProperty(value = "抽奖活动id") + private String lotteryEventId; +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/UpdateGoodsPriceDTO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/UpdateGoodsPriceDTO.java new file mode 100644 index 0000000..c5e901a --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/UpdateGoodsPriceDTO.java @@ -0,0 +1,19 @@ +package com.ruoyi.goods.domain.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class UpdateGoodsPriceDTO { + @ApiModelProperty(value = "当前门店id") + private Long shopId; + + @ApiModelProperty(value = "商品id") + private Long goodsId; + @ApiModelProperty(value = "商品绑定门店id") + private Long bindShopId; + @ApiModelProperty("修改价格") + private BigDecimal goodsPrice; +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtLotteryEventDetailVO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtLotteryEventDetailVO.java new file mode 100644 index 0000000..cde70df --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtLotteryEventDetailVO.java @@ -0,0 +1,65 @@ +package com.ruoyi.goods.domain.vo; + +import com.ruoyi.goods.api.domain.LotteryEventPrize; +import com.ruoyi.goods.domain.dto.MgtLotteryEventPrizeDTO; +import com.ruoyi.goods.domain.dto.MgtLotteryEventQuestionDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class MgtLotteryEventDetailVO { + @ApiModelProperty("活动id") + private String id; + @ApiModelProperty("门店id") + private Integer shopId; + @ApiModelProperty("门店id") + private String shopName; + @ApiModelProperty("抽奖名称") + private String name; + @ApiModelProperty("活动简介名称") + private String activityProfile; + @ApiModelProperty("开启方式(1=新注册用户,2=下单,3=分享小程序,4=普通抽奖,5=答题抽奖,6=线下抽奖)") + private Integer activityType; + @ApiModelProperty("可抽奖次数") + private Integer times; + @ApiModelProperty("活动开始时间") + private LocalDateTime startTime; + @ApiModelProperty("活动结束时间") + private LocalDateTime endTime; + + /** + * 下单类型所需 + */ + @ApiModelProperty("下单支付金额") + private BigDecimal payMoney; + + /** + * 分享类型所需 + */ + @ApiModelProperty("分享抽奖间隔天数") + private Integer intervalTime; + + /** + * 答题类型所需 + */ + @ApiModelProperty("答题时间限制(分钟)") + private Integer answeringTime; + @ApiModelProperty("答题抽奖正确率%") + private BigDecimal accuracy; + @ApiModelProperty("抽奖题目设置") + private List<MgtLotteryEventQuestionVO> mgtLotteryQuestionVOList; + + @ApiModelProperty("封面图") + private String coverImage; + + @ApiModelProperty("详情介绍") + private String activityContent; + + @ApiModelProperty("抽奖奖品设置") + private List<LotteryEventPrize> lotteryEventPrizeList; + +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtLotteryEventJoinUserPageVO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtLotteryEventJoinUserPageVO.java new file mode 100644 index 0000000..37fe304 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtLotteryEventJoinUserPageVO.java @@ -0,0 +1,24 @@ +package com.ruoyi.goods.domain.vo; + +import com.baomidou.mybatisplus.annotations.TableField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class MgtLotteryEventJoinUserPageVO { + + + @ApiModelProperty(value = "用户昵称") + private String nickName; + @ApiModelProperty(value = "手机号") + private String mobile; + + @ApiModelProperty(value = "参与时间") + private LocalDateTime createTime; + + @ApiModelProperty(value = "奖品名称,多个以,隔开") + private String objectName; + +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtLotteryEventPageVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtLotteryEventPageVo.java new file mode 100644 index 0000000..ff73d16 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtLotteryEventPageVo.java @@ -0,0 +1,40 @@ +package com.ruoyi.goods.domain.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class MgtLotteryEventPageVo { + + @ApiModelProperty("活动id") + private String id; + + @ApiModelProperty(value = "门店id",hidden = true) + private Integer shopId; + + @ApiModelProperty("抽奖名称") + private String name; + + @ApiModelProperty("抽奖方式(1=新注册用户,2=下单,3=分享小程序,4=普通抽奖,5=答题抽奖,6=线下抽奖)") + private Integer activityType; + + @ApiModelProperty("抽奖时间") + private String activityTime; + + @ApiModelProperty("创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm") + private LocalDateTime createTime; + + @ApiModelProperty("创建对象") + private String createObject; + + @ApiModelProperty("抽奖状态:1-未开始,2-进行中,已结束") + private Integer status; + + @ApiModelProperty("立即结束标志位:0-无,1-有") + private Integer flag; +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtLotteryEventQuestionVO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtLotteryEventQuestionVO.java new file mode 100644 index 0000000..7fd7fb9 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtLotteryEventQuestionVO.java @@ -0,0 +1,30 @@ +package com.ruoyi.goods.domain.vo; + +import com.ruoyi.goods.api.domain.LotteryEventQuestionsAnswers; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class MgtLotteryEventQuestionVO { + @ApiModelProperty("题干id") + private String id; + + @ApiModelProperty(value = "抽奖活动id") + private String lotteryEventId; + /** + * 题干名称 + */ + @ApiModelProperty("题干名称") + private String name; + /** + * 排序 + */ + @ApiModelProperty("排序") + private Integer sort; + + @ApiModelProperty("题干选项集合") + private List<LotteryEventQuestionsAnswers> answersVOList; + +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtUserAnswersPageVO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtUserAnswersPageVO.java new file mode 100644 index 0000000..f2b2124 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtUserAnswersPageVO.java @@ -0,0 +1,26 @@ +package com.ruoyi.goods.domain.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class MgtUserAnswersPageVO { + @ApiModelProperty("排序") + private Integer sort; + + @ApiModelProperty(value = "题干名称") + private String name; + + @ApiModelProperty("选项") + private String answer;//会有多个选项,用分号隔开 + + @ApiModelProperty(value = "正确答案选项") + private String rightAnswer; + + @ApiModelProperty(value = "用户选择答案") + private String userAnswer; + + @ApiModelProperty(value = "是否正确(0-否,1-是)") + private Integer isCorrect; +} diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/PageShopMgtGoodsVO.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/PageShopMgtGoodsVO.java index 0a3c749..cac25d1 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/PageShopMgtGoodsVO.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/PageShopMgtGoodsVO.java @@ -24,6 +24,9 @@ @ApiModelProperty(value = "商品id") private String goodsId; + @ApiModelProperty(value = "商品绑定门店id") + private String bindShopId; + @Excel(name = "商品名称", width = 30, sort = 3) @ApiModelProperty(value = "商品名称") private String goodsName; diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/LotteryEventMapper.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/LotteryEventMapper.java index 1e85866..8d3e87a 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/LotteryEventMapper.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/LotteryEventMapper.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.goods.api.domain.LotteryEvent; +import com.ruoyi.goods.domain.dto.MgtLotteryEventPageDto; import com.ruoyi.goods.domain.vo.AppLotteryEventPageVo; +import com.ruoyi.goods.domain.vo.MgtLotteryEventPageVo; import com.ruoyi.goods.domain.vo.ShopLotteryDrawListVo; import org.apache.ibatis.annotations.Param; @@ -34,4 +36,6 @@ * @return */ List<ShopLotteryDrawListVo> getShopLotteryDrawList(Page<ShopLotteryDrawListVo> page, @Param("shopId") Long shopId); + + List<MgtLotteryEventPageVo> pageMgtLotteryEvent(Page<MgtLotteryEventPageVo> page, @Param("dto") MgtLotteryEventPageDto dto); } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/UserLotteryEventMapper.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/UserLotteryEventMapper.java index a61e79d..3e28c25 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/UserLotteryEventMapper.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/UserLotteryEventMapper.java @@ -3,6 +3,7 @@ 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.MgtLotteryEventJoinUserPageVO; import com.ruoyi.goods.domain.vo.ShopWinningRecordVo; import org.apache.ibatis.annotations.Param; diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/UserLotteryEventQuestionsAnswersMapper.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/UserLotteryEventQuestionsAnswersMapper.java index b7c238e..7cb0177 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/UserLotteryEventQuestionsAnswersMapper.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/UserLotteryEventQuestionsAnswersMapper.java @@ -1,11 +1,17 @@ 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.UserLotteryEventQuestionsAnswers; +import com.ruoyi.goods.domain.vo.MgtUserAnswersPageVO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @author zhibing.pu * @Date 2025/5/19 16:06 */ public interface UserLotteryEventQuestionsAnswersMapper extends BaseMapper<UserLotteryEventQuestionsAnswers> { + List<MgtUserAnswersPageVO> getUserAnswersPage(Page<MgtUserAnswersPageVO> page, @Param("lotteryEventId") String lotteryEventId, @Param("userId") Long userId); } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/goods/GoodsService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/goods/GoodsService.java index ed637b1..61d54e2 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/goods/GoodsService.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/goods/GoodsService.java @@ -1,6 +1,7 @@ package com.ruoyi.goods.service.goods; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.domain.R; import com.ruoyi.goods.domain.dto.*; import com.ruoyi.goods.domain.vo.*; import com.ruoyi.system.api.domain.dto.AppActivityGoodsPageDto; @@ -220,4 +221,13 @@ * @return List<PageShopMgtGoodsVO> */ List<PageShopMgtGoodsVO> pageShopMgtGoods(Page<PageShopMgtGoodsVO> page, PageShopMgtGoodsDTO pageShopMgtGoodsDTO); + + /** + * @description 修改商品价格 + * @author huliguo + * @date 2025/6/13 + * @param updateGoodsPriceDTO + * @return + */ + R<Void> updateGoodsPrice(UpdateGoodsPriceDTO updateGoodsPriceDTO); } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java index 63f5f10..9596137 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java @@ -9,6 +9,7 @@ import com.ruoyi.common.core.utils.bean.BeanUtils; import com.ruoyi.common.core.utils.uuid.IdUtils; import com.ruoyi.common.security.utils.CodeFactoryUtil; +import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.goods.domain.dto.*; import com.ruoyi.goods.domain.pojo.goods.GoodsTotal; import com.ruoyi.goods.domain.vo.*; @@ -32,6 +33,7 @@ import com.ruoyi.system.api.domain.poji.goods.GoodsFile; import com.ruoyi.system.api.domain.poji.goods.ShopGoods; import com.ruoyi.system.api.domain.poji.shop.Shop; +import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.MerGoodsPriceListVo; import com.ruoyi.system.api.domain.vo.MgtSelectGoodsPageVo; import com.ruoyi.system.api.domain.vo.ShopRelUserVo; @@ -42,6 +44,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.nio.charset.StandardCharsets; +import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -706,7 +709,7 @@ public List<PageShopMgtGoodsVO> pageShopMgtGoods(Page<PageShopMgtGoodsVO> page,PageShopMgtGoodsDTO pageShopMgtGoodsDTO) { //1.查找门店 Shop shop = remoteShopService.getShop(pageShopMgtGoodsDTO.getShopId()).getData(); - if (null == shop || shop.getDelFlag() != 0) { + if (null == shop || shop.getDelFlag() != 0 || shop.getShopStatus() == -1) { return Collections.emptyList(); } List<Shop> shops = new ArrayList<>(); @@ -749,7 +752,7 @@ //5.门店信息 list.forEach(mgtGoodsPageVo -> { // 获取门店信息 - Shop shopInfo = shopMap.get(Long.valueOf(mgtGoodsPageVo.getShopId())); + Shop shopInfo = shopMap.get(Long.valueOf(mgtGoodsPageVo.getBindShopId())); // 如果门店信息不为空,则设置门店信息 if (shopInfo != null) { mgtGoodsPageVo.setShopName(shopInfo.getShopName()); @@ -763,4 +766,34 @@ return list; } + + @Override + public R<Void> updateGoodsPrice(UpdateGoodsPriceDTO updateGoodsPriceDTO) { + //判断当前登录人员类型 + SysUser sysUser = SecurityUtils.getSysUser(); + if ("01".equals(sysUser.getUserType())){ + //B端 + Shop shop = remoteShopService.getShop(updateGoodsPriceDTO.getShopId()).getData(); + if (null == shop || shop.getDelFlag() != 0 || shop.getShopStatus() == -1) { + return R.fail("该门店不存在"); + } + //判断是否经销商 是否开启价格修改权限 + int modifyPricePermission = shop.getModifyPricePermission()==null?0:shop.getModifyPricePermission(); + if (1 != shop.getShopType() || 1 != modifyPricePermission){ + return R.fail("权限不足"); + } + }else if (!"00".equals(sysUser.getUserType())){ + //也不是平台 + return R.fail("用户类型错误"); + } + //修改门店内商品价格 + ShopGoods shopGoods = shopGoodsService.getByShopIdAndGoodsId(updateGoodsPriceDTO.getBindShopId(), String.valueOf(updateGoodsPriceDTO.getGoodsId())); + if (null == shopGoods || shopGoods.getDelFlag() != 0){ + return R.fail("该门店不存在该商品"); + } + shopGoods.setUpdateUserId(sysUser.getUserId()); + shopGoods.setSalesPrice(updateGoodsPriceDTO.getGoodsPrice()); + shopGoodsService.updateById(shopGoods); + return R.ok(); + } } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java index c180e93..01fc373 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java @@ -1,25 +1,19 @@ package com.ruoyi.goods.service.impl.lottery; import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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 com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.bean.BeanUtils; 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.api.domain.UserLotteryEvent; -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.api.domain.*; +import com.ruoyi.goods.domain.dto.*; +import com.ruoyi.goods.domain.vo.*; import com.ruoyi.goods.mapper.lottery.LotteryEventMapper; -import com.ruoyi.goods.service.lottery.ILotteryEventPrizeService; -import com.ruoyi.goods.service.lottery.ILotteryEventService; -import com.ruoyi.goods.service.lottery.IUserLotteryEventQuestionsService; -import com.ruoyi.goods.service.lottery.IUserLotteryEventService; +import com.ruoyi.goods.service.lottery.*; import com.ruoyi.system.api.domain.poji.member.Member; import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord; import com.ruoyi.system.api.domain.poji.shop.Shop; @@ -29,8 +23,10 @@ import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import javax.annotation.Resources; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.*; @@ -64,7 +60,12 @@ @Resource private RemoteShopService remoteShopService; - + + @Resource + private ILotteryEventQuestionsAnswersService lotteryEventQuestionsAnswersService; + + @Resource + private ILotteryEventQuestionsService lotteryEventQuestionsService; /** * 根据id查询抽奖活动信息 @@ -251,4 +252,231 @@ public List<ShopLotteryDrawListVo> getShopLotteryDrawList(Page<ShopLotteryDrawListVo> page, Long shopId) { return this.baseMapper.getShopLotteryDrawList(page, shopId); } + + @Override + @Transactional + public R<ShopLotteryDrawVo> editLotteryEvent(MgtLotteryEventEditDTO dto) { + //先检查开始-结束时间范围内,系统中是否有该活动 + List<LotteryEvent> lotteryEvents = this.baseMapper.selectList(new LambdaQueryWrapper<LotteryEvent>() + .eq(LotteryEvent::getDelFlag, 0)//未删除的 + .eq(LotteryEvent::getActivityType, dto.getActivityType())//类型相同的 + .between(LotteryEvent::getStartTime, dto.getStartTime(), dto.getEndTime())//开始时间在这个活动的(开始-结束)范围内的 + .or() + .between(LotteryEvent::getEndTime, dto.getStartTime(), dto.getEndTime())//结束时间在这个活动的(开始-结束)范围内的 + ); + if (null != lotteryEvents && !lotteryEvents.isEmpty()) { + // 新增记录时直接返回错误 + if (dto.getId() == null) { + return R.fail("新增抽奖活动与现有抽奖活动时间范围冲突"); + } + // 更新记录时,检查是否与其他记录(非自身)冲突 + boolean hasConflict = lotteryEvents.stream() + .anyMatch(event -> !event.getId().equals(dto.getId())); + if (hasConflict) { + return R.fail("编辑抽奖活动与现有其他活动时间范围冲突"); + } + } + LotteryEvent lotteryEvent = new LotteryEvent(); + if (null != dto.getId()) { + //编辑 + lotteryEvent=this.baseMapper.selectById(dto.getId()); + if (null == lotteryEvent||lotteryEvent.getDelFlag() != 0) { + return R.fail("该抽奖活动已被删除"); + } + if (!lotteryEvent.getActivityType().equals(dto.getActivityType())) { + return R.fail("编辑抽奖活动不能修改开启方式"); + } + if(!lotteryEvent.getName().equals(dto.getName())) { + return R.fail("编辑抽奖活动不能修改抽奖名称"); + } + //答题类型 + if (lotteryEvent.getActivityType().equals(5)){ + //将之前的题干数据、答案选项数据删除 + //先删除答案选项数据 + lotteryEventQuestionsAnswersService.remove(new LambdaQueryWrapper<LotteryEventQuestionsAnswers>() + .eq(LotteryEventQuestionsAnswers::getLotteryEventId,lotteryEvent.getId())); + //再删除题干数据 + lotteryEventQuestionsService.remove(new LambdaQueryWrapper<LotteryEventQuestions>() + .eq(LotteryEventQuestions::getLotteryEventId,lotteryEvent.getId())); + } + //奖品数据删除 + lotteryEventPrizeService.remove(new LambdaQueryWrapper<LotteryEventPrize>() + .eq(LotteryEventPrize::getLotteryEventId,lotteryEvent.getId())); + } + //新增 + BeanUtils.copyProperties(dto, lotteryEvent); + if (dto.getId() == null) { + lotteryEvent.setCreateTime(LocalDateTime.now()); + lotteryEvent.setCreateUserId(dto.getUserId()); + }else { + lotteryEvent.setUpdateTime(LocalDateTime.now()); + lotteryEvent.setUpdateUserId(dto.getUserId()); + } + //保存抽奖活动 + this.saveOrUpdate(lotteryEvent); + // 保存奖品数据 + LotteryEvent finalLotteryEvent = lotteryEvent;//jdk8及之后 变量在初始化后确实没有被重新赋值,可直接引用,无需显式声明为 final + List<LotteryEventPrize> prizeList = dto.getMgtLotteryEventPrizeDTOList().stream() + .map(prizeDTO -> { + LotteryEventPrize prize = new LotteryEventPrize(); + prize.setLotteryEventId(finalLotteryEvent.getId()); + prize.setPrizeType(prizeDTO.getPrizeType()); + if (null != prizeDTO.getObjectId()){ + prize.setObjectId(prizeDTO.getObjectId()); + } + prize.setObjectName(prizeDTO.getObjectName()); + prize.setNumber(prizeDTO.getNumber()); + prize.setWinRate(prizeDTO.getWinRate()); + return prize; + }) + .collect(Collectors.toList()); + lotteryEventPrizeService.saveBatch(prizeList); + if (dto.getActivityType().equals(5)) { + //保存题干数据 + for (MgtLotteryEventQuestionDTO questionDTO : dto.getMgtLotteryQuestionDTOList()) { + LotteryEventQuestions question = new LotteryEventQuestions(); + question.setLotteryEventId(finalLotteryEvent.getId()); + question.setName(questionDTO.getName()); + question.setSort(questionDTO.getSort()); + lotteryEventQuestionsService.save(question); + //保存答案选项数据 + List<LotteryEventQuestionsAnswers> answersList = questionDTO.getAnswersDTOList().stream() + .map(answersDTO -> { + LotteryEventQuestionsAnswers answer = new LotteryEventQuestionsAnswers(); + answer.setLotteryEventId(finalLotteryEvent.getId()); + answer.setLotteryEventQuestionsId(question.getId()); + answer.setAnswer(answersDTO.getAnswer()); + answer.setIsRight(answersDTO.getIsRight()); + return answer; + }).collect(Collectors.toList()); + lotteryEventQuestionsAnswersService.saveBatch(answersList); + } + } + return R.ok(); + } + + @Override + public List<MgtLotteryEventPageVo> pageMgtLotteryEvent(Page<MgtLotteryEventPageVo> page, MgtLotteryEventPageDto dto) { + Map<Long,Shop> map; + if (dto.getCreateObject()!=null){ + //根据 条件-创建对象 模糊查找门店集合 + List<Shop> shopList=remoteShopService.getShopListByShopName(dto.getCreateObject()); + if (null != shopList && !shopList.isEmpty()) { + List<Long> shopIds = shopList.stream().map(Shop::getShopId).collect(Collectors.toList()); + dto.setShopIds(shopIds); + //转为map 方便后续取商户名称 + map = shopList.stream().collect(Collectors.toMap(Shop::getShopId, shop -> shop)); + } else { + map = new HashMap<>(); + } + //判断“平台创建”是否包含了 条件-创建对象 + if (!"平台创建".contains(dto.getCreateObject())){ + dto.setFlag(0);//未包含,只查找门店ids + } + } else { + map = new HashMap<>(); + } + //获取分页信息 + List<MgtLotteryEventPageVo> voList = this.baseMapper.pageMgtLotteryEvent(page, dto); + //填充创建对象 + voList.forEach(x->{ + if (x.getActivityType()!=6){ + x.setCreateObject("平台创建"); + }else { + //线下抽奖,获取门店名称 + x.setCreateObject(map.get(Long.valueOf(x.getShopId())).getShopName()); + } + + }); + return voList; + } + + @Override + public R<MgtLotteryEventDetailVO> getLotteryEventDetailById(String id) { + LotteryEvent lotteryEvent = this.getById(id); + if (null == lotteryEvent) { + return R.fail("该抽奖活动不存在"); + } + MgtLotteryEventDetailVO vo = new MgtLotteryEventDetailVO(); + BeanUtils.copyProperties(lotteryEvent, vo); + if (lotteryEvent.getActivityType()==6){ + //线下抽奖 取商户名称 + Shop data = remoteShopService.getShop(Long.valueOf(lotteryEvent.getShopId())).getData(); + if (null != data){ + vo.setShopName(data.getShopName()); + } + //题干数据 + List<LotteryEventQuestions> questionsList = lotteryEventQuestionsService.getBaseMapper().selectList(new LambdaQueryWrapper<LotteryEventQuestions>().eq(LotteryEventQuestions::getLotteryEventId, lotteryEvent.getId())); + + List<MgtLotteryEventQuestionVO> questionsVOList = questionsList.stream().map(question -> { + MgtLotteryEventQuestionVO questionVO = new MgtLotteryEventQuestionVO(); + BeanUtils.copyProperties(question, questionVO); + //答案选项数据 + List<LotteryEventQuestionsAnswers> answersList = lotteryEventQuestionsAnswersService.getBaseMapper().selectList(new LambdaQueryWrapper<LotteryEventQuestionsAnswers>() + .eq(LotteryEventQuestionsAnswers::getLotteryEventId, lotteryEvent.getId()) + .eq(LotteryEventQuestionsAnswers::getLotteryEventQuestionsId, questionVO.getLotteryEventId())); + questionVO.setAnswersVOList(answersList); + return questionVO; + }).collect(Collectors.toList()); + //题干数据排序 + // 自定义 Comparator 实现 + Comparator<LotteryEventQuestions> sortComparator = new Comparator<LotteryEventQuestions>() { + @Override + public int compare(LotteryEventQuestions q1, LotteryEventQuestions q2) { + return Integer.compare(q1.getSort(), q2.getSort()); + } + }; + // 应用排序 + Collections.sort(questionsList, sortComparator); + vo.setMgtLotteryQuestionVOList(questionsVOList); + } + //奖项信息 + List<LotteryEventPrize> prizeList = lotteryEventPrizeService.getBaseMapper().selectList(new LambdaQueryWrapper<LotteryEventPrize>() + .eq(LotteryEventPrize::getLotteryEventId, lotteryEvent.getId())); + vo.setLotteryEventPrizeList(prizeList); + + return R.ok(vo); + } + + @Override + public R deleteMgtLotteryEvent(String id) { + LotteryEvent lotteryEvent = this.getById(id); + if (null == lotteryEvent || lotteryEvent.getDelFlag()!=0) { + return R.ok(); + } + + //1.奖品数据删除 + lotteryEventPrizeService.remove(new LambdaQueryWrapper<LotteryEventPrize>() + .eq(LotteryEventPrize::getLotteryEventId,lotteryEvent.getId())); + //2.答题类型 + if (lotteryEvent.getActivityType().equals(5)){ + //先删除答案选项数据 + lotteryEventQuestionsAnswersService.remove(new LambdaQueryWrapper<LotteryEventQuestionsAnswers>() + .eq(LotteryEventQuestionsAnswers::getLotteryEventId,lotteryEvent.getId())); + //再删除题干数据 + lotteryEventQuestionsService.remove(new LambdaQueryWrapper<LotteryEventQuestions>() + .eq(LotteryEventQuestions::getLotteryEventId,lotteryEvent.getId())); + } + //3.抽奖活动删除 + lotteryEvent.setDelFlag(1); + this.updateById(lotteryEvent); + return R.ok(); + } + + @Override + public R endImmediatelyLotteryEvent(String id) { + LotteryEvent lotteryEvent = this.getById(id); + if (null == lotteryEvent || lotteryEvent.getDelFlag()!=0) { + return R.fail("该抽奖活动不存在"); + } + LocalDateTime now = LocalDateTime.now(); + if (!now.isBefore(lotteryEvent.getStartTime()) && !now.isAfter(lotteryEvent.getEndTime())) { + return R.fail("该抽奖活动不在活动时间范围内"); + } + lotteryEvent.setEndTime(now);//将结束时间设置为当前时间 + lotteryEvent.setUpdateUserId(SecurityUtils.getUserId()); + lotteryEvent.setUpdateTime(now); + this.updateById(lotteryEvent); + return R.ok(); + } } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/UserLotteryEventQuestionsAnswersServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/UserLotteryEventQuestionsAnswersServiceImpl.java index 3e7ac76..820a85d 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/UserLotteryEventQuestionsAnswersServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/UserLotteryEventQuestionsAnswersServiceImpl.java @@ -1,17 +1,22 @@ package com.ruoyi.goods.service.impl.lottery; 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 com.ruoyi.goods.api.domain.LotteryEvent; import com.ruoyi.goods.api.domain.LotteryEventQuestionsAnswers; import com.ruoyi.goods.api.domain.UserLotteryEventQuestionsAnswers; +import com.ruoyi.goods.domain.vo.MgtUserAnswersPageVO; import com.ruoyi.goods.mapper.lottery.UserLotteryEventQuestionsAnswersMapper; import com.ruoyi.goods.service.lottery.ILotteryEventQuestionsAnswersService; +import com.ruoyi.goods.service.lottery.ILotteryEventService; import com.ruoyi.goods.service.lottery.IUserLotteryEventQuestionsAnswersService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; - +import java.util.Collections; +import java.util.List; /** @@ -44,5 +49,11 @@ return BigDecimal.ZERO; } + @Override + public List<MgtUserAnswersPageVO> getUserAnswersPage(Page<MgtUserAnswersPageVO> page, String lotteryEventId, Long userId) { + //获取分页信息 + return this.getBaseMapper().getUserAnswersPage(page,lotteryEventId,userId); + } + } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/lottery/ILotteryEventService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/lottery/ILotteryEventService.java index 29a1855..f599d73 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/lottery/ILotteryEventService.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/lottery/ILotteryEventService.java @@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.domain.R; 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 com.ruoyi.goods.domain.dto.MgtLotteryEventEditDTO; +import com.ruoyi.goods.domain.dto.MgtLotteryEventJoinUserPageDTO; +import com.ruoyi.goods.domain.dto.MgtLotteryEventPageDto; +import com.ruoyi.goods.domain.vo.*; import java.util.List; @@ -52,4 +53,40 @@ * @return */ List<ShopLotteryDrawListVo> getShopLotteryDrawList(Page<ShopLotteryDrawListVo> page, Long shopId); + + /** + * 平台添加抽奖活动 + * @param dto + * @return + */ + R<ShopLotteryDrawVo> editLotteryEvent(MgtLotteryEventEditDTO dto); + + /** + * 分页查询抽奖活动 + * @param page + * @param dto + * @return + */ + List<MgtLotteryEventPageVo> pageMgtLotteryEvent(Page<MgtLotteryEventPageVo> page, MgtLotteryEventPageDto dto); + + /** + * 查看抽奖活动详情 + * @param id + * @return + */ + R<MgtLotteryEventDetailVO> getLotteryEventDetailById(String id); + + /** + * 删除抽奖活动 + * @param id + * @return + */ + R deleteMgtLotteryEvent(String id); + + /** + * 立即结束抽奖活动 + * @param id + * @return + */ + R endImmediatelyLotteryEvent(String id); } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/lottery/IUserLotteryEventQuestionsAnswersService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/lottery/IUserLotteryEventQuestionsAnswersService.java index afb3e15..b1fed74 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/lottery/IUserLotteryEventQuestionsAnswersService.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/lottery/IUserLotteryEventQuestionsAnswersService.java @@ -1,9 +1,12 @@ 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.UserLotteryEventQuestionsAnswers; +import com.ruoyi.goods.domain.vo.MgtUserAnswersPageVO; import java.math.BigDecimal; +import java.util.List; /** * @author zhibing.pu @@ -19,4 +22,6 @@ * @return */ BigDecimal getCorrectAnswerRate(Long userId, String lotteryEventId); + + List<MgtUserAnswersPageVO> getUserAnswersPage(Page<MgtUserAnswersPageVO> page, String lotteryEventId, Long userId); } diff --git a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml index 42a9767..85671ec 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml +++ b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml @@ -540,7 +540,7 @@ ELSE "下架中" END goodsStatus, tg.create_time, - tsg.shop_id, + tsg.shop_id bindShopId, tsg.sales_price shopPrice from t_goods tg LEFT JOIN t_goods_file tgf ON tg.goods_id = tgf.goods_id AND tgf.del_flag = 0 AND tgf.file_type = 1 diff --git a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/LotteryEventMapper.xml b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/LotteryEventMapper.xml index 0419a27..769c513 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/LotteryEventMapper.xml +++ b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/LotteryEventMapper.xml @@ -40,4 +40,72 @@ where shop_id = #{shopId} order by create_time desc </select> + <select id="pageMgtLotteryEvent" resultType="com.ruoyi.goods.domain.vo.MgtLotteryEventPageVo"> + SELECT + id, + shop_id, + name, + activity_type, + CONCAT(start_time,'-',end_time) activityTime, + create_time, + CASE + WHEN NOW() < start_time THEN 1 -- 未开始 + WHEN NOW() BETWEEN start_time AND end_time THEN 2 -- 进行中 + ELSE 3 -- 已结束 + END AS `status`, + CASE + WHEN NOW() BETWEEN start_time AND end_time THEN 1 + ELSE 0 + END AS flag + FROM + t_lottery_event + where + del_flag =0 + <choose> + <when test="dto.status != null and dto.status == 0"> + -- 0-全部状态,不添加额外条件 + </when> + <when test="dto.status != null and dto.status == 1"> + AND start_time > NOW() -- 1-未开始 + </when> + <when test="dto.status != null and dto.status == 2"> + AND start_time <= NOW() AND end_time >= NOW() -- 2-进行中 + </when> + <when test="dto.status != null and dto.status == 3"> + AND end_time < NOW() -- 3-已结束 + </when> + </choose> + <if test="null != dto.name and ''!= dto.name "> + `name` like concat('%',#{dto.name},'%') + </if> + <if test="null != dto.activityType and dto.activityType!=0 "> + activity_type = #{dto.activityType} + </if> + + <choose> + <when test="dto.shopIds != null and dto.shopIds.size() > 0"> + <choose> + <when test="dto.flag != null and dto.flag == 1"> + -- flag=1: 需要查询shop_id为null的记录 即平台创建的 + AND (shop_id IN + <foreach collection="dto.shopIds" item="shopId" open="(" separator="," close=")"> + #{shopId} + </foreach> + OR shop_id IS NULL) + </when> + <otherwise> + -- flag不为1: 只查询shopIds的值 + AND shop_id IN + <foreach collection="dto.shopIds" item="shopId" open="(" separator="," close=")"> + #{shopId} + </foreach> + </otherwise> + </choose> + </when> + <when test="dto.nameflag != null and dto.nameflag == 1"> + -- shopIds为空但flag=1: 即查询平台创建,其他店铺没有类似的名称 + AND shop_id IS NULL + </when> + </choose> + </select> </mapper> diff --git a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/UserLotteryEventQuestionsAnswersMapper.xml b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/UserLotteryEventQuestionsAnswersMapper.xml new file mode 100644 index 0000000..c981660 --- /dev/null +++ b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/UserLotteryEventQuestionsAnswersMapper.xml @@ -0,0 +1,35 @@ +<?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.UserLotteryEventQuestionsAnswersMapper"> + + <select id="getUserAnswersPage" resultType="com.ruoyi.goods.domain.vo.MgtUserAnswersPageVO"> + SELECT + q.sort AS sort, + q.name AS name, + GROUP_CONCAT(a.answers ORDER BY a.id SEPARATOR ';') AS answer, + r.answers AS rightAnswer, + ua_answer.answers AS userAnswer, -- 使用关联表获取用户选择的答案文本 + ua.is_correct AS isCorrect + FROM + t_user_lottery_event_questions_answers ua + LEFT JOIN + t_lottery_event_questions q + ON ua.lottery_event_question_id = q.id + LEFT JOIN + t_lottery_event_questions_answers a + ON q.id = a.lottery_event_questions_id + LEFT JOIN + t_lottery_event_questions_answers r + ON q.id = r.lottery_event_questions_id AND r.is_right = 1 + LEFT JOIN + t_lottery_event_questions_answers ua_answer + ON ua.lottery_event_questions_answers_id = ua_answer.id + WHERE + ua.user_id = #{userId} + AND ua.lottery_event_id = #{lotteryEventId} + GROUP BY + ua.lottery_event_question_id, q.sort, q.name, r.answers, ua.is_correct, ua_answer.answers + ORDER BY + q.sort ASC + </select> +</mapper> diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java index a1502ea..0c2d32d 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java @@ -1,6 +1,7 @@ package com.ruoyi.shop.controller.console; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.constant.CacheConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; @@ -14,6 +15,7 @@ import com.ruoyi.shop.service.task.ShopTaskService; import com.ruoyi.system.api.constant.AppErrorConstant; import com.ruoyi.system.api.domain.dto.*; +import com.ruoyi.system.api.domain.poji.config.OneClinkSyncing; import com.ruoyi.system.api.domain.poji.shop.Shop; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.*; @@ -451,8 +453,26 @@ * @param shopId * @return */ - @PostMapping("/shop/getFranchiseeIdsBYDealerId") + @PostMapping("/getFranchiseeIdsBYDealerId") List<Shop> getFranchiseeIdsBYDealerId(@RequestBody Long shopId){ return shopService.getFranchiseeIdsBYDealerId(shopId); } + + /** + * 根据shopIds分页查看 + * @param dto + * @return + */ + @PostMapping("/getMgtShopPageVoByShopIds") + Page<MgtOneClinkSyncingShopPageVo> getMgtShopPageVoByShopIds(@RequestBody MGtOneClinkSyncingShopPageDTO dto){ + return shopService.getMgtShopPageVoByShopIds(dto); + } + + /** + * 一键同步商户信息 + */ + @PostMapping("/updateShopByOneClinkSyncing") + R updateShopByOneClinkSyncing(@RequestBody OneClinkSyncing oneClinkSyncing){ + return shopService.updateShopByOneClinkSyncing(oneClinkSyncing); + } } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java index b657b71..35d06f0 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java @@ -22,10 +22,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.validation.annotation.Validated; -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 org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; @@ -633,4 +630,11 @@ List<Map<String, String>> bankBranchCode = bankBranchCodeService.getBankBranchCode(dto.getBankNumber()); return R.ok(bankBranchCode); } + + @RequestMapping(value = "/changeShopType", method = RequestMethod.GET) + @ApiOperation(value = "修改商户类型(转为经销商,转为加盟商)【2.0】") + public R<Void> changeShopType(@RequestParam Long shopId){ + return shopService.changeShopType(shopId); + } + } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java index 54001ca..4f6f949 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java @@ -4,13 +4,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.shop.domain.dto.*; import com.ruoyi.shop.domain.vo.*; +import com.ruoyi.system.api.domain.dto.MGtOneClinkSyncingShopPageDTO; import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto; import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto; +import com.ruoyi.system.api.domain.poji.config.OneClinkSyncing; import com.ruoyi.system.api.domain.poji.shop.Shop; -import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo; -import com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo; -import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo; -import com.ruoyi.system.api.domain.vo.MgtUserTaskMsgVo; +import com.ruoyi.system.api.domain.vo.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -295,4 +294,22 @@ List<Shop> listShopByCityCode(@Param("cityCodes")List<String> cityCodes); List<Shop> getFranchiseeIdsBYDealerId(@Param("shopId")Long shopId); + + + /** + * 设置加盟商的归属经销商为null + * @param shopId + */ + void setBelongShopIdNull(@Param("shopId")Long shopId); + + /** + * 根据shopIds获取一键同步的店铺信息 + * @param page + * @param scope + * @return + */ + List<MgtOneClinkSyncingShopPageVo> getMgtShopPageVoByShopIds(Page page, @Param("list") List<Long> scope); + + void updateShopByOneClinkSyncing(@Param("param") OneClinkSyncing oneClinkSyncing); + } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/ShopFileMapper.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/ShopFileMapper.java index c900108..3b11451 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/ShopFileMapper.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/ShopFileMapper.java @@ -2,6 +2,9 @@ import com.ruoyi.shop.domain.pojo.task.ShopFile; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * <p> @@ -17,4 +20,6 @@ * @param shopId */ void deleteByShopId(Long shopId); + + void deleteBatchByShopIds(@Param("shopIds") List<Long> shopIds); } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java index 3d1b4c7..a1ef893 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java @@ -26,6 +26,7 @@ import com.ruoyi.shop.domain.pojo.task.ShopFile; import com.ruoyi.shop.domain.pojo.task.ShopTask; import com.ruoyi.shop.domain.vo.*; +import com.ruoyi.shop.domain.vo.MgtShopPageVo; import com.ruoyi.shop.enums.WxApplyMentStateEnum; import com.ruoyi.shop.mapper.shop.ShopMapper; import com.ruoyi.shop.service.shop.*; @@ -40,6 +41,7 @@ import com.ruoyi.system.api.constant.AppErrorConstant; import com.ruoyi.system.api.constant.SecurityConstant; import com.ruoyi.system.api.domain.dto.*; +import com.ruoyi.system.api.domain.poji.config.OneClinkSyncing; import com.ruoyi.system.api.domain.poji.config.SysTag; import com.ruoyi.system.api.domain.poji.member.Member; import com.ruoyi.system.api.domain.poji.shop.Shop; @@ -50,6 +52,7 @@ import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; @@ -1957,4 +1960,82 @@ public List<Shop> getFranchiseeIdsBYDealerId(Long shopId) { return shopMapper.getFranchiseeIdsBYDealerId(shopId); } + + /** + * 修改商户类型 + * @param shopId + * @return + */ + @Override + public R<Void> changeShopType(Long shopId) { + Shop shop = shopMapper.selectById(shopId); + if(null == shop|| shop.getDelFlag() != 0){ + return R.fail("商户不存在"); + } + //商户修改类型 1-经销商 2-加盟商 + shop.setShopType(shop.getShopType()==1?2:1); + if (shop.getShopType()==2){ + //经销商转加盟商: 先解绑该经销商下所有加盟商 + shopMapper.setBelongShopIdNull(shopId); + } + shop.setUpdateUserId(SecurityUtils.getUserId()); + shopMapper.updateById(shop); + + return R.ok(); + } + + @Override + public Page<MgtOneClinkSyncingShopPageVo> getMgtShopPageVoByShopIds(MGtOneClinkSyncingShopPageDTO dto) { + Page<MgtOneClinkSyncingShopPageVo> page = new Page<>(); + page.setSize(dto.getPageSize()); + page.setCurrent(dto.getPageNum()); + List<MgtOneClinkSyncingShopPageVo> mgtShopPageVoList = shopMapper.getMgtShopPageVoByShopIds(page,dto.getShopIds()); + return page.setRecords(mgtShopPageVoList); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public R updateShopByOneClinkSyncing(OneClinkSyncing oneClinkSyncing) { + if (StringUtils.isBlank(oneClinkSyncing.getShopIds())) { + return R.fail("请选择要更新的门店"); + } + // 1. 转换门店ID列表 + List<Long> shopIdList = Arrays.stream(oneClinkSyncing.getShopIds().split(",")) + .map(String::trim) + .filter(StringUtils::isNotBlank) + .map(Long::parseLong) + .collect(Collectors.toList()); + // 批量删除封面和Banner图 + shopFileService.deleteBatchByShopIds(shopIdList); + //批量添加封面图 + List<ShopFile> coverUrlList = shopIdList.stream() + .map(shopId -> new ShopFile() + .setShopId(shopId) + .setFileType(1) + .setFileUrl(oneClinkSyncing.getCoverUrl()) + .setDelFlag(0)) + .collect(Collectors.toList()); + shopFileService.saveBatch(coverUrlList); + //批量添加banner图 + List<String> bannerUrlList = Arrays.stream(oneClinkSyncing.getDetailsPicture().split(",")) + .map(String::trim) + .filter(StringUtils::isNotBlank) + .collect(Collectors.toList()); + List<ShopFile> bannerList = new ArrayList<>(); + for (Long shopId : shopIdList) { + for (String bannerUrl : bannerUrlList) { + bannerList.add(new ShopFile() + .setShopId(shopId) + .setFileType(2) // Banner图 + .setFileUrl(bannerUrl) + .setDelFlag(0)); + } + } + shopFileService.saveBatch(coverUrlList); + + //批量修改门店信息 + oneClinkSyncing.setShopIdList(shopIdList); + shopMapper.updateShopByOneClinkSyncing(oneClinkSyncing); + return R.ok(); + } } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopFileServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopFileServiceImpl.java index 606d193..238d8ee 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopFileServiceImpl.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopFileServiceImpl.java @@ -45,4 +45,9 @@ shopFileMapper.deleteByShopId(shopId); } + @Override + public void deleteBatchByShopIds(List<Long> shopIdList) { + shopFileMapper.deleteBatchByShopIds(shopIdList); + } + } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java index 8f218df..e0883a5 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java @@ -8,9 +8,12 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.shop.domain.dto.*; import com.ruoyi.shop.domain.vo.*; +import com.ruoyi.shop.domain.vo.MgtShopPageVo; +import com.ruoyi.system.api.domain.dto.MGtOneClinkSyncingShopPageDTO; import com.ruoyi.system.api.domain.dto.MerBaseDto; import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto; import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto; +import com.ruoyi.system.api.domain.poji.config.OneClinkSyncing; import com.ruoyi.system.api.domain.poji.member.Member; import com.ruoyi.system.api.domain.poji.shop.Shop; import com.ruoyi.system.api.domain.vo.*; @@ -71,7 +74,7 @@ * @param mgtShopPageDto * @return */ - List<MgtShopPageVo> pageMgtShop(Page page, MgtShopPageDto mgtShopPageDto,List<Long> scope); + List<MgtShopPageVo> pageMgtShop(Page page, MgtShopPageDto mgtShopPageDto, List<Long> scope); /** * 获取商户详情 @@ -468,4 +471,22 @@ * @return */ List<Shop> getFranchiseeIdsBYDealerId(Long shopId); + /** + * 修改商户类型 + * @param shopId + * @return + */ + R<Void> changeShopType(Long shopId); + + /** + * 根据ids分页获取一键同步的商户信息 + * @param dto + * @return + */ + Page<MgtOneClinkSyncingShopPageVo> getMgtShopPageVoByShopIds(MGtOneClinkSyncingShopPageDTO dto); + + /** + * 一键同步商户信息 + */ + R updateShopByOneClinkSyncing(OneClinkSyncing oneClinkSyncing); } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/ShopFileService.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/ShopFileService.java index 7f9a676..0b477df 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/ShopFileService.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/ShopFileService.java @@ -27,4 +27,10 @@ * @param shopId */ void deleteByShopId(Long shopId); + + /** + * 通过商户ids批量删除关联 + * @param shopIdList + */ + void deleteBatchByShopIds(List<Long> shopIdList); } diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml index 56019ea..743f260 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml +++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml @@ -1040,6 +1040,26 @@ WHERE shop_id = #{shopId} </update> + <update id="setBelongShopIdNull"> + UPDATE t_shop + SET belong_shop_id = NULL + WHERE belong_shop_id = #{shopId} and del_flag = 0 and shopstatus!=-1 and shop_type = 2 + </update> + <update id="updateShopByOneClinkSyncing"> + UPDATE t_shop + SET + shop_detail = #{param.shopDetail}, + platform_coupon_flag = #{param.platformCouponFlag}, + platform_birthday_flag = #{param.platformBirthdayFlag}, + update_user_id = #{param.userId}, + update_time = NOW() + WHERE + shop_id IN + <foreach item="id" collection="param.shopIdList" open="(" separator="," close=")"> + #{id} + </foreach> + </update> + <select id="listShopIdByCityCode" resultType="java.lang.Long"> SELECT shop_id FROM t_shop @@ -1089,5 +1109,33 @@ and belong_shop_id = #{shopId} </select> + <select id="getMgtShopPageVoByShopIds" resultType="com.ruoyi.system.api.domain.vo.MgtOneClinkSyncingShopPageVo"> + SELECT + ts.shop_id shopId, + ts.shop_number shopNumber, + ts.shop_name shopName, + ts.shop_tags shopTags, + ts.shop_source shopSource, + belong.shop_name belongShopName, + ts.sign_area_name signAreaName, + CONCAT(ts.cooperation_start_time,'-',ts.cooperation_end_time) cooperationTime, + CONCAT(ts.shop_area_name,ts.shop_address) shopAddress, + ts.shopowner_name shopownerName, + ts.shopowner_phone shopownerPhone, + tsm.shop_marketing_total shopActivityCount, + ts.shop_custom_status shopCustomStatus, + ts.frozen_flag frozenFlag + FROM t_shop ts + LEFT JOIN t_shop_marketing tsm ON tsm.shop_id = ts.shop_id + left join t_shop belong on ts.belong_shop_id = belong.shop_id + WHERE ts.del_flag = 0 + <if test="list !=null and list.size()>0" > + AND ts.shop_id IN + <foreach collection="list" item="item" open="(" separator="," close=")"> + #{item} + </foreach> + </if> + + </select> </mapper> diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopFileMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopFileMapper.xml index d72bdb3..37e52c7 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopFileMapper.xml +++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopFileMapper.xml @@ -70,4 +70,10 @@ UPDATE t_shop_file SET del_flag = 1 WHERE shop_id = #{shopId} </update> + <update id="deleteBatchByShopIds"> + update t_shop_file set del_flag =1 where shop_id in + <foreach collection="shopIds" item="shopId" open="(" separator="," close=")"> + #{shopId} + </foreach> + </update> </mapper> diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java index 17efee6..10b3457 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java @@ -1,5 +1,6 @@ package com.ruoyi.system.controller.management; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.poi.ExcelUtil; @@ -7,6 +8,7 @@ import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.system.api.domain.dto.MGtOneClinkSyncingShopPageDTO; import com.ruoyi.system.api.domain.dto.MgtBaseGetDto; import com.ruoyi.system.api.domain.dto.MgtClassNumDto; import com.ruoyi.system.api.domain.dto.MgtPageDto; @@ -81,6 +83,9 @@ @Resource private BottomNavService bottomNavService; + + @Resource + private OneClinkSyncingService oneClinkSyncingService; @RequestMapping(value = "/getCustomConfig", method = RequestMethod.POST) @@ -159,7 +164,7 @@ @RequestMapping(value = "/editBanner", method = RequestMethod.POST) @Log(title = "banner管理", businessType = BusinessType.UPDATE,operContent = "修改banner") - @ApiOperation(value = "修改banner") + @ApiOperation(value = "修改banner【2.0】") public R editBanner(@RequestBody MgtBannerEditDto mgtBannerEditDto) { Long userId = SecurityUtils.getUserId(); mgtBannerEditDto.setUserId(userId); @@ -180,7 +185,7 @@ } @RequestMapping(value = "/getBanner", method = RequestMethod.POST) - @ApiOperation(value = "获取banner编辑信息") + @ApiOperation(value = "获取banner编辑信息【2.0】") public R<MgtBannerGetVo> getBanner(@RequestBody MgtBaseGetDto mgtBaseGetDto) { Long userId = SecurityUtils.getUserId(); mgtBaseGetDto.setUserId(userId); @@ -212,7 +217,7 @@ @RequestMapping(value = "/editPop", method = RequestMethod.POST) @Log(title = "弹窗管理", businessType = BusinessType.UPDATE,operContent = "修改弹窗广告") - @ApiOperation(value = "修改弹窗广告") + @ApiOperation(value = "修改弹窗广告【2.0】") public R editPop(@RequestBody MgtPopEditDto mgtPopEditDto) { Long userId = SecurityUtils.getUserId(); mgtPopEditDto.setUserId(userId); @@ -221,7 +226,7 @@ } @RequestMapping(value = "/getPop", method = RequestMethod.POST) - @ApiOperation(value = "获取弹窗编辑信息") + @ApiOperation(value = "获取弹窗编辑信息【2.0】") public R<MgtPopGetVo> getPop(@RequestBody MgtBaseGetDto mgtBaseGetDto) { Long userId = SecurityUtils.getUserId(); mgtBaseGetDto.setUserId(userId); @@ -240,13 +245,13 @@ } @RequestMapping(value = "/getBottomNav", method = RequestMethod.GET) - @ApiOperation(value = "获取底部导航栏配置数据") + @ApiOperation(value = "获取底部导航栏配置数据【2.0】") public R<List<BottomNav>> getBottomNav() { List<BottomNav> list = bottomNavService.getAllBottomNav(); return R.ok(list); } @RequestMapping(value = "/editBottomNav", method = RequestMethod.PUT) - @ApiOperation(value = "获取底部导航栏配置数据") + @ApiOperation(value = "获取底部导航栏配置数据【2.0】") public R<Void> editBottomNav(@RequestBody BottomNavDto bottomNavDto) { return bottomNavService.editBottomNav(bottomNavDto); } @@ -265,7 +270,7 @@ @RequestMapping(value = "/editQuickEntry", method = RequestMethod.POST) @Log(title = "快速入口管理", businessType = BusinessType.UPDATE,operContent = "修改快速入口") - @ApiOperation(value = "修改快速入口") + @ApiOperation(value = "修改快速入口【2.0】") public R editQuickEntry(@RequestBody MgtQuickEntryEditDto mgtQuickEntryEditDto) { Long userId = SecurityUtils.getUserId(); mgtQuickEntryEditDto.setUserId(userId); @@ -274,7 +279,7 @@ } @RequestMapping(value = "/getQuickEntry", method = RequestMethod.POST) - @ApiOperation(value = "获取快速入口编辑信息") + @ApiOperation(value = "获取快速入口编辑信息【2.0】") public R<MgtQuickEntryGetVo> getQuickEntry(@RequestBody MgtBaseGetDto mgtBaseGetDto) { Long userId = SecurityUtils.getUserId(); mgtBaseGetDto.setUserId(userId); @@ -630,5 +635,39 @@ return R.ok(bulletinBoard); } + @RequestMapping(value = "/pageOneClinkSyncing", method = RequestMethod.POST) + @ApiOperation(value = "分页获取一键同步【2.0】") + public R<IPage<MgtOneClinkSyncPageVO>> pageOneClinkSyncing(@RequestBody MgtOneClinkSyncingPageDTO mgtPageDto) { + return R.ok(oneClinkSyncingService.pageOneClinkSyncing(mgtPageDto)); + } + + @RequestMapping(value = "/editOneClinkSyncing", method = RequestMethod.POST) + @Log(title = "一键同步管理", businessType = BusinessType.UPDATE,operContent = "修改一键同步") + @ApiOperation(value = "修改一键同步【2.0】") + public R editOneClinkSyncing(@RequestBody MgtOneClinkSyncingEditDto dto) { + Long userId = SecurityUtils.getUserId(); + dto.setUserId(userId); + return oneClinkSyncingService.editOneClinkSyncing(dto); + } + + @RequestMapping(value = "/getOneClinkSyncing", method = RequestMethod.POST) + @ApiOperation(value = "获取一键同步信息(查看详情)【2.0】") + public R<MgtOneClinkSyncingVO> getOneClinkSyncing(@RequestBody MGtOneClinkSyncingShopPageDTO dto ) { + return oneClinkSyncingService.getOneClinkSyncing(dto); + } + + @RequestMapping(value = "/deleteOneClinkSyncing", method = RequestMethod.GET) + @Log(title = "一键同步管理", businessType = BusinessType.DELETE,operContent = "删除一键同步") + @ApiOperation(value = "删除一键同步【2.0】") + public R deleteOneClinkSyncing(@RequestParam("syncingId") Integer syncingId ) { + return oneClinkSyncingService.deleteOneClinkSyncing(syncingId); + } + + @RequestMapping(value = "/executeOneClinkSyncing", method = RequestMethod.GET) + @Log(title = "一键同步管理", businessType = BusinessType.UPDATE,operContent = "执行一键同步") + @ApiOperation(value = "执行一键同步【2.0】") + public R executeOneClinkSyncing(@RequestParam("syncingId") Integer syncingId ) { + return oneClinkSyncingService.executeOneClinkSyncing(syncingId); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtOneClinkSyncingEditDto.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtOneClinkSyncingEditDto.java new file mode 100644 index 0000000..3452bbb --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtOneClinkSyncingEditDto.java @@ -0,0 +1,45 @@ +package com.ruoyi.system.domain.dto; + +import com.ruoyi.system.api.domain.dto.AppBaseDto; +import com.ruoyi.system.api.domain.dto.MgtBaseDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author hlg + * @ClassName MgtOneClinkSyncingDto + * @date 2025/6/16 + */ +@Data +public class MgtOneClinkSyncingEditDto extends MgtBaseDto { + + + @ApiModelProperty(value = "syncingId 新增不传") + private Integer syncingId; + + @ApiModelProperty(value = "标题") + private String syncingName; + + @ApiModelProperty(value = "封面图url") + private String coverUrl; + + @ApiModelProperty(value = "详情图,多个逗号分隔") + private String detailsPicture; + + @ApiModelProperty(value = "领券1开2关") + private Integer platformCouponFlag; + + @ApiModelProperty(value = "生日卡1开2关") + private Integer platformBirthdayFlag; + + @ApiModelProperty(value = "选择门店数") + private Integer shopNum; + + @ApiModelProperty(value = "选择的门店ids,多个以逗号隔开") + private String shopIds; + + @ApiModelProperty(value = "店铺详情") + private String shopDetail; +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtOneClinkSyncingPageDTO.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtOneClinkSyncingPageDTO.java new file mode 100644 index 0000000..1c6de66 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtOneClinkSyncingPageDTO.java @@ -0,0 +1,22 @@ +package com.ruoyi.system.domain.dto; + +import com.ruoyi.system.api.domain.dto.MgtPageDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class MgtOneClinkSyncingPageDTO { + @ApiModelProperty("页码") + private Integer pageNum=0; + + @ApiModelProperty("分页大小") + private Integer pageSize=10; + @ApiModelProperty(value = "同步标题") + private String syncingName; + + @ApiModelProperty(value = "操作同步时间范围-开始时间") + private String syncingStartTime; + + @ApiModelProperty(value = "操作同步时间范围-结束时间") + private String syncingEndTime; +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Pop.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Pop.java index ca2f7b0..2318efb 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Pop.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Pop.java @@ -91,11 +91,6 @@ @TableField("jump_type") private Integer jumpType; - /** - * 小程序APPID - */ - @TableField("appid") - private String appid; @Override protected Serializable pkVal() { diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtOneClinkSyncPageVO.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtOneClinkSyncPageVO.java new file mode 100644 index 0000000..10f4f3f --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtOneClinkSyncPageVO.java @@ -0,0 +1,26 @@ +package com.ruoyi.system.domain.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class MgtOneClinkSyncPageVO { + @ApiModelProperty(value = "同步id") + private Integer syncingId; + @ApiModelProperty(value = "标题") + private String syncingName; + @ApiModelProperty(value = "封面图url") + private String coverUrl; + @ApiModelProperty(value = "详情图,多个逗号分隔") + private String detailsPicture; + @ApiModelProperty(value = "领券1开2关") + private Integer platformCouponFlag; + @ApiModelProperty(value = "生日卡1开2关") + private Integer platformBirthdayFlag; + @ApiModelProperty(value = "同步门店数") + private Integer shopNum; + @ApiModelProperty(value = "最近一次同步时间") + private Date syncingTime; +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtOneClinkSyncingVO.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtOneClinkSyncingVO.java new file mode 100644 index 0000000..f50f852 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtOneClinkSyncingVO.java @@ -0,0 +1,38 @@ +package com.ruoyi.system.domain.vo; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.system.api.domain.vo.MgtOneClinkSyncingShopPageVo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class MgtOneClinkSyncingVO { + @ApiModelProperty("syncing id") + private Integer syncingId; + + @ApiModelProperty("同步名称(标题)") + private String syncingName; + + @ApiModelProperty("封面图片") + private String coverUrl; + + @ApiModelProperty("详情图,多个逗号分隔") + private String detailsPicture; + + @ApiModelProperty("领券1开2关") + private String platformCouponFlag; + + + @ApiModelProperty("生日卡1开2关") + private String platformBirthdayFlag; + + @ApiModelProperty("店铺详情") + private String shopDetail; + + @ApiModelProperty("商户列表") + private Page<MgtOneClinkSyncingShopPageVo> page; + + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/OneClinkSyncingMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/OneClinkSyncingMapper.java new file mode 100644 index 0000000..528c84d --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/OneClinkSyncingMapper.java @@ -0,0 +1,29 @@ +package com.ruoyi.system.mapper.config; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.ruoyi.system.domain.dto.MgtOneClinkSyncingPageDTO; +import com.ruoyi.system.api.domain.poji.config.OneClinkSyncing; +import com.ruoyi.system.domain.vo.MgtOneClinkSyncPageVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * <p> + * 一键同步 Mapper 接口 + * </p> + * + * @author hlg + * @since 2025-06-16 + */ +@Mapper +public interface OneClinkSyncingMapper extends BaseMapper<OneClinkSyncing> { + /** + * 分页查询一键同步 + * @param page + * @param mgtPageDto + * @return + */ + IPage<MgtOneClinkSyncPageVO> pageOneClinkSyncing(@Param("page") IPage<MgtOneClinkSyncPageVO> page, @Param("dto") MgtOneClinkSyncingPageDTO mgtPageDto); + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/OneClinkSyncingService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/OneClinkSyncingService.java new file mode 100644 index 0000000..abd37b8 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/OneClinkSyncingService.java @@ -0,0 +1,46 @@ +package com.ruoyi.system.service.config; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.system.api.domain.dto.MGtOneClinkSyncingShopPageDTO; +import com.ruoyi.system.domain.dto.MgtOneClinkSyncingEditDto; +import com.ruoyi.system.domain.dto.MgtOneClinkSyncingPageDTO; +import com.ruoyi.system.api.domain.poji.config.OneClinkSyncing; +import com.ruoyi.system.domain.vo.MgtOneClinkSyncPageVO; +import com.ruoyi.system.domain.vo.MgtOneClinkSyncingVO; + +/** + * <p> + * 一键同步 服务类 + * </p> + * + * @author jqs + * @since 2023-04-25 + */ +public interface OneClinkSyncingService extends IService<OneClinkSyncing> { + /** + * @description 获取一键同步分页 + * @author hlg + * @date 2025/6/16 10:35 + * @param mgtPageDto + * @return MgtOneClinkSyncPageVO + */ + IPage<MgtOneClinkSyncPageVO> pageOneClinkSyncing(MgtOneClinkSyncingPageDTO mgtPageDto); + + /** + * 修改一键同步 + * @param dto + */ + R editOneClinkSyncing(MgtOneClinkSyncingEditDto dto); + + /** + * 获取详情 + * @param dto + */ + R<MgtOneClinkSyncingVO> getOneClinkSyncing(MGtOneClinkSyncingShopPageDTO dto); + + R deleteOneClinkSyncing(Integer syncingId); + + R executeOneClinkSyncing(Integer syncingId); +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/OneClinkSyncingServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/OneClinkSyncingServiceImpl.java new file mode 100644 index 0000000..c419c1c --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/OneClinkSyncingServiceImpl.java @@ -0,0 +1,134 @@ +package com.ruoyi.system.service.impl.config; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.bean.BeanUtils; +import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.system.api.domain.dto.MGtOneClinkSyncingShopPageDTO; +import com.ruoyi.system.api.domain.vo.MgtOneClinkSyncingShopPageVo; +import com.ruoyi.system.api.service.RemoteShopService; +import com.ruoyi.system.domain.dto.MgtOneClinkSyncingEditDto; +import com.ruoyi.system.domain.dto.MgtOneClinkSyncingPageDTO; +import com.ruoyi.system.api.domain.poji.config.OneClinkSyncing; +import com.ruoyi.system.domain.vo.MgtOneClinkSyncPageVO; +import com.ruoyi.system.domain.vo.MgtOneClinkSyncingVO; +import com.ruoyi.system.mapper.config.OneClinkSyncingMapper; +import com.ruoyi.system.service.config.OneClinkSyncingService; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * <p> + * 广告 服务实现类 + * </p> + * + * @author jqs + * @since 2023-04-25 + */ +@Service +public class OneClinkSyncingServiceImpl extends ServiceImpl<OneClinkSyncingMapper, OneClinkSyncing> implements OneClinkSyncingService { + + private final RemoteShopService remoteShopService; + + public OneClinkSyncingServiceImpl(RemoteShopService remoteShopService) { + this.remoteShopService = remoteShopService; + } + + @Override + public IPage<MgtOneClinkSyncPageVO> pageOneClinkSyncing(MgtOneClinkSyncingPageDTO mgtPageDto) { + //分页查询 + IPage<MgtOneClinkSyncPageVO> page = new Page<>(mgtPageDto.getPageNum(),mgtPageDto.getPageSize()); + return this.baseMapper.pageOneClinkSyncing(page,mgtPageDto); + } + + @Override + public R editOneClinkSyncing(MgtOneClinkSyncingEditDto dto) { + OneClinkSyncing oneClinkSyncing = new OneClinkSyncing(); + if (null != dto.getSyncingId()){ + oneClinkSyncing = this.getById(dto.getSyncingId()); + if(oneClinkSyncing.getDelFlag() != 0 ){ + return R.fail("该一键同步不存在"); + } + oneClinkSyncing.setUpdateTime(new Date()); + oneClinkSyncing.setUpdateUserId(dto.getUserId()); + }else { + oneClinkSyncing.setCreateUserId(dto.getUserId()); + oneClinkSyncing.setCreateTime(new Date()); + } + oneClinkSyncing.setSyncingName(dto.getSyncingName()); + oneClinkSyncing.setCoverUrl(dto.getCoverUrl()); + oneClinkSyncing.setDetailsPicture(dto.getDetailsPicture()); + oneClinkSyncing.setPlatformBirthdayFlag(dto.getPlatformBirthdayFlag()); + oneClinkSyncing.setPlatformCouponFlag(dto.getPlatformCouponFlag()); + oneClinkSyncing.setShopNum(dto.getShopNum()); + oneClinkSyncing.setShopIds(dto.getShopIds()); + oneClinkSyncing.setShopDetail(dto.getShopDetail()); + + this.saveOrUpdate(oneClinkSyncing); + return R.ok(); + } + + @Override + public R<MgtOneClinkSyncingVO> getOneClinkSyncing(MGtOneClinkSyncingShopPageDTO dto) { + MgtOneClinkSyncingVO vo = new MgtOneClinkSyncingVO(); + OneClinkSyncing oneClinkSyncing = this.getById(dto.getSyncingId()); + if (null == oneClinkSyncing|| oneClinkSyncing.getDelFlag() != 0){ + return R.fail("该一键同步不存在"); + } + + BeanUtils.copyProperties(oneClinkSyncing, vo); + + if (oneClinkSyncing.getShopIds() == null || oneClinkSyncing.getShopIds().trim().isEmpty()) { + return R.ok(vo); // 返回空列表 + } + List<Long> shopIds = Arrays.stream(oneClinkSyncing.getShopIds().split(",")) + .map(String::trim) // 去除空格 + .filter(s -> !s.isEmpty()) // 过滤空字符串 + .map(Long::parseLong) // 转换为Long + .collect(Collectors.toList()); + dto.setShopIds(shopIds); + //查找这几家店铺信息 + Page<MgtOneClinkSyncingShopPageVo> mgtShopPageVoByShopIds = remoteShopService.getMgtShopPageVoByShopIds(dto); + vo.setPage(mgtShopPageVoByShopIds); + return R.ok(vo); + } + + @Override + public R deleteOneClinkSyncing(Integer syncingId) { + //删除 + OneClinkSyncing oneClinkSyncing = this.getById(syncingId); + if (null == oneClinkSyncing || oneClinkSyncing.getDelFlag()==0){ + return R.ok(); + } + oneClinkSyncing.setDelFlag(1); + oneClinkSyncing.setUpdateTime(new Date()); + oneClinkSyncing.setUpdateUserId(SecurityUtils.getUserId()); + this.updateById(oneClinkSyncing); + return R.ok(); + } + + @Override + public R executeOneClinkSyncing(Integer syncingId) { + //根据oneClinkSyncing,修改门店信息 + OneClinkSyncing oneClinkSyncing = this.getById(syncingId); + if (null == oneClinkSyncing || oneClinkSyncing.getDelFlag()==0){ + return R.fail("该一键同步不存在"); + } + if (oneClinkSyncing.getShopIds() == null || oneClinkSyncing.getShopIds().trim().isEmpty()) { + return R.fail("请先选择门户"); + } + + R r = remoteShopService.updateShopByOneClinkSyncing(oneClinkSyncing); + + oneClinkSyncing.setSyncingTime(new Date()); + oneClinkSyncing.setSyncingUserId(SecurityUtils.getUserId()); + this.updateById(oneClinkSyncing); + return R.ok(); + } +} diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/OneClinkSyncingMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/OneClinkSyncingMapper.xml new file mode 100644 index 0000000..c781269 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/OneClinkSyncingMapper.xml @@ -0,0 +1,21 @@ +<?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.system.mapper.config.OneClinkSyncingMapper"> + + + <select id="pageOneClinkSyncing" resultType="com.ruoyi.system.domain.vo.MgtOneClinkSyncPageVO"> + select + syncing_id, + syncing_name, + cover_url, + details_picture, + platform_coupon_flag, + platform_birthday_flag, + shop_num, + syncing_time + from + t_one_clink_syncing + where + del_flag=0 + </select> +</mapper> -- Gitblit v1.7.1