package com.tzy.app.controller; import java.util.Arrays; import java.util.List; import com.github.pagehelper.PageHelper; import com.tzy.app.dto.ActDto; import com.tzy.app.dto.AppActivityConfigDto; import com.tzy.common.core.domain.MsgResult; import com.tzy.common.core.domain.entity.SysUser; import com.tzy.common.dto.OutDTO; import com.tzy.common.exception.ServiceException; import com.tzy.common.utils.ShiroUtils; import com.tzy.common.utils.StringUtils; import com.tzy.coupon.card.dto.CouponDto; import com.tzy.coupon.card.service.CardBaseInfoService; import com.tzy.coupon.card.service.CardRecordService; import com.tzy.coupon.card.service.IAppUserCardRecordService; import com.tzy.framework.util.RedisUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.beanutils.ConvertUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import com.tzy.common.annotation.Log; import com.tzy.common.enums.BusinessType; import com.tzy.app.domain.AppActConfig; import com.tzy.app.service.IAppActConfigService; import com.tzy.common.core.controller.BaseController; import com.tzy.common.core.domain.AjaxResult; import com.tzy.common.utils.poi.ExcelUtil; import com.tzy.common.core.page.TableDataInfo; import javax.annotation.Resource; /** * appActConfigController * * @author tencheer * @date 2022-08-08 */ @Slf4j @Api("商家活动管理") @RestController @RequestMapping("/act/config") public class AppActConfigController extends BaseController { @Resource private IAppActConfigService appActConfigService; @Resource private CardBaseInfoService cardBaseInfoService; @Resource private CardRecordService cardRecordService; @Resource private RedisUtils redisUtils; /** * 查询appActConfig列表 */ @ApiOperation("获取商家活动列表") @Log(title = "appActConfig", businessType = BusinessType.SEARCH) @PostMapping("/page") public TableDataInfo page(@RequestBody AppActConfig appActConfig) { PageHelper.startPage(appActConfig.getPage(), appActConfig.getRows()); List actConfigList = appActConfigService.selectAppActConfigList(appActConfig); return getDataTable(actConfigList); } /** * 修改appActConfig */ @ApiOperation("根据ID查询商家活动") @Log(title = "appActConfig", businessType = BusinessType.SEARCH) @GetMapping("/find/{id}") public OutDTO find(@PathVariable("id") Long id) { AppActivityConfigDto appActConfig = appActConfigService.selectAppActConfigById(id); return OutDTO.ok().put("actConfig", appActConfig); } /** * 新增保存appActConfig */ @ApiOperation("新增商家活动") @Log(title = "appActConfig", businessType = BusinessType.INSERT) @PostMapping("/add") public OutDTO addSave(@RequestBody AppActConfig appActConfig) { appActConfigService.insertAppActConfig(appActConfig); return OutDTO.ok(); } /** * 修改保存appActConfig */ @ApiOperation("修改商家活动") @Log(title = "appActConfig", businessType = BusinessType.UPDATE) @PostMapping("/update") public OutDTO editSave(@RequestBody AppActConfig appActConfig) { appActConfigService.updateAppActConfig(appActConfig); return OutDTO.ok(); } /** * 删除appActConfig */ @ApiOperation("删除商家活动") @Log(title = "appActConfig", businessType = BusinessType.DELETE) @PostMapping( "/del") public OutDTO delete(String ids) { appActConfigService.deleteAppActConfigByIds(ids); return OutDTO.ok(); } @ApiOperation("获取商家活动绑定的优惠券") @Log(title = "appActConfig", businessType = BusinessType.SEARCH) @GetMapping( "/cards/{id}") public OutDTO findByIds(@PathVariable("id") Long id){ // 根据ID查询活动 AppActivityConfigDto appActConfig = appActConfigService.selectAppActConfigById(id); if(appActConfig == null){ throw new ServiceException("活动不存在"); } String couponIds = appActConfig.getCouponIds(); if(StringUtils.isEmpty(couponIds)){ throw new ServiceException("优惠券信息不存在"); } String[] splits = couponIds.split(","); Long[] couponIdArr = (Long[]) ConvertUtils.convert(splits, Long.class); List couponDtoList = cardBaseInfoService.findCardByIds(couponIdArr); couponDtoList.forEach(couponDto -> { int usedNum = cardRecordService.countUsedByCardId(couponDto.getId()); // 优惠券已使用数量 couponDto.setUsedNum(usedNum); }); return OutDTO.ok().put("couponList", couponDtoList); } @ApiOperation("开启关闭商家活动") @Log(title = "appActConfig", businessType = BusinessType.UPDATE) @PostMapping("/open") public OutDTO open(@RequestBody AppActConfig appActConfig){ Long id = appActConfig.getId(); if(id == null){ throw new ServiceException("参数id不能为空"); } Long status = appActConfig.getStatus(); if(status == null){ throw new ServiceException("参数status不能为空"); } appActConfigService.updateStatus(id, status); redisUtils.del("app_act_cache"); // 每次开启关闭商家活动删除缓存 return OutDTO.ok(); } }