|  | @@ -4,30 +4,32 @@ package com.yonge.cooleshow.admin.controller.coupon;
 | 
	
		
			
				|  |  |  import com.alibaba.fastjson.JSON;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.core.metadata.IPage;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.admin.io.request.coupon.CouponInfoVO;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.admin.io.request.coupon.CouponInventoryVO;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.entity.CouponInfo;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.entity.CouponInventory;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.queryInfo.CouponInfoQuery;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.queryInfo.CouponInventoryQuery;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.service.CouponInfoService;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.vo.coupon.CouponInfoWrapper;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.wrapper.coupon.CouponInventoryWrapper;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.common.controller.BaseController;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.common.entity.HttpResponseResult;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.common.enums.EStatus;
 | 
	
		
			
				|  |  |  import com.yonge.toolset.base.exception.BizException;
 | 
	
		
			
				|  |  |  import com.yonge.toolset.base.page.PageInfo;
 | 
	
		
			
				|  |  |  import com.yonge.toolset.mybatis.support.PageUtil;
 | 
	
		
			
				|  |  |  import io.swagger.annotations.Api;
 | 
	
		
			
				|  |  |  import io.swagger.annotations.ApiOperation;
 | 
	
		
			
				|  |  | -import io.swagger.annotations.ApiParam;
 | 
	
		
			
				|  |  |  import org.joda.time.DateTime;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.http.HttpStatus;
 | 
	
		
			
				|  |  | -import org.springframework.stereotype.Controller;
 | 
	
		
			
				|  |  |  import org.springframework.web.bind.annotation.GetMapping;
 | 
	
		
			
				|  |  |  import org.springframework.web.bind.annotation.PathVariable;
 | 
	
		
			
				|  |  |  import org.springframework.web.bind.annotation.PostMapping;
 | 
	
		
			
				|  |  |  import org.springframework.web.bind.annotation.RequestBody;
 | 
	
		
			
				|  |  |  import org.springframework.web.bind.annotation.RequestMapping;
 | 
	
		
			
				|  |  | -import org.springframework.web.bind.annotation.RequestParam;
 | 
	
		
			
				|  |  |  import org.springframework.web.bind.annotation.RestController;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import javax.validation.Valid;
 | 
	
	
		
			
				|  | @@ -122,11 +124,9 @@ public class CouponInfoController extends BaseController {
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 启用/停用 优惠券
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  | -    @GetMapping("/updateState")
 | 
	
		
			
				|  |  | +    @PostMapping("/updateState")
 | 
	
		
			
				|  |  |      @ApiOperation(value = "优惠券状态启/停用")
 | 
	
		
			
				|  |  | -    public HttpResponseResult<Boolean> updateCouponStateInfo(
 | 
	
		
			
				|  |  | -            @ApiParam(value = "优惠券ID", required = true) @RequestParam("couponId") Long couponId,
 | 
	
		
			
				|  |  | -            @ApiParam(value = "状态 0 停用 1 启用", required = true) @RequestParam("state") Integer state) {
 | 
	
		
			
				|  |  | +    public HttpResponseResult<Boolean> updateCouponStateInfo(@RequestBody CouponInfoVO.CouponInfo request) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 获取当前登录用户信息
 | 
	
		
			
				|  |  |          SysUser user = sysUserFeignService.queryUserInfo();
 | 
	
	
		
			
				|  | @@ -134,10 +134,16 @@ public class CouponInfoController extends BaseController {
 | 
	
		
			
				|  |  |              return failed(HttpStatus.FORBIDDEN, "请登录");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        if (Objects.isNull(request)
 | 
	
		
			
				|  |  | +                || Objects.isNull(request.getId())
 | 
	
		
			
				|  |  | +                || EStatus.invalid(request.getStatus())) {
 | 
	
		
			
				|  |  | +            throw new BizException("无效请求参数");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          // 更新数据信息
 | 
	
		
			
				|  |  |          CouponInfoVO.CouponInfo info = CouponInfoVO.CouponInfo.builder()
 | 
	
		
			
				|  |  | -                .id(couponId)
 | 
	
		
			
				|  |  | -                .status(state)
 | 
	
		
			
				|  |  | +                .id(request.getId())
 | 
	
		
			
				|  |  | +                .status(request.getStatus())
 | 
	
		
			
				|  |  |                  .updatedBy(user.getId())
 | 
	
		
			
				|  |  |                  .updateTime(DateTime.now().getMillis())
 | 
	
		
			
				|  |  |                  .build();
 | 
	
	
		
			
				|  | @@ -145,8 +151,85 @@ public class CouponInfoController extends BaseController {
 | 
	
		
			
				|  |  |          CouponInfo couponInfo = couponInfoService.saveOrUpdateCouponInfo(JSON.parseObject(info.jsonString(), CouponInfo.class));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 校验状态更新结果
 | 
	
		
			
				|  |  | -        return status(couponInfo.getStatus().intValue() == state);
 | 
	
		
			
				|  |  | +        return status(couponInfo.getStatus().intValue() == request.getStatus());
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 优惠券库存量信息
 | 
	
		
			
				|  |  | +     * @param request CouponInventoryVO.PageRequest
 | 
	
		
			
				|  |  | +     * @return HttpResponseResult<PageInfo<CouponInventoryVO.PageInfo>>
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    @PostMapping(value = "/inventory/page", consumes="application/json", produces="application/json")
 | 
	
		
			
				|  |  | +    @ApiOperation(value = "查询库存量调整分页信息", notes = "传入CouponInventoryVO.PageRequest")
 | 
	
		
			
				|  |  | +    public HttpResponseResult<PageInfo<CouponInventoryVO.PageInfo>> queryCouponInventoryPageInfo(@RequestBody CouponInventoryVO.PageRequest request) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 校验请求参数
 | 
	
		
			
				|  |  | +        if (request.invalidRequestParam()) {
 | 
	
		
			
				|  |  | +            throw new BizException("无效的优惠券ID");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 优惠券信息
 | 
	
		
			
				|  |  | +        IPage<CouponInventoryWrapper> wrapper = couponInfoService.queryCouponInventoryPageInfo(PageUtil.getPage(request),
 | 
	
		
			
				|  |  | +                CouponInventoryQuery.from(request.jsonString()));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 数据转换
 | 
	
		
			
				|  |  | +        List<CouponInventoryVO.PageInfo> pageInfos = JSON.parseArray(JSON.toJSONString(wrapper.getRecords()),
 | 
	
		
			
				|  |  | +                CouponInventoryVO.PageInfo.class);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 分页数据信息
 | 
	
		
			
				|  |  | +        return succeed(PageUtil.getPageInfo(wrapper, pageInfos));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 调整新优惠券库存量信息
 | 
	
		
			
				|  |  | +     * @param info CouponInfoVO.CouponInfo
 | 
	
		
			
				|  |  | +     * @return HttpResponseResult<CouponInfoVO.CouponInfo>
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    @PostMapping(value = "/inventory/update", consumes="application/json", produces="application/json")
 | 
	
		
			
				|  |  | +    @ApiOperation(value = "优惠券库存量更新", notes = "CouponInventoryVO.InventoryInfo")
 | 
	
		
			
				|  |  | +    public HttpResponseResult<Boolean> saveOrUpdate(@Valid @RequestBody CouponInventoryVO.InventoryInfo info) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 获取当前登录用户信息
 | 
	
		
			
				|  |  | +        SysUser user = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  | +        if (Objects.isNull(user) || Objects.isNull(user.getId())) {
 | 
	
		
			
				|  |  | +            return failed(HttpStatus.FORBIDDEN, "请登录");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 校验参数合法性
 | 
	
		
			
				|  |  | +        if (info.invalidRequestParam(user.getId())) {
 | 
	
		
			
				|  |  | +            throw new BizException("无效的请求参数");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 新增或更新信息
 | 
	
		
			
				|  |  | +        int rows = couponInfoService.saveOrUpdateCouponInventoryInfo(JSON.parseObject(info.jsonString(),
 | 
	
		
			
				|  |  | +                CouponInventory.class));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return status(rows > 0);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 库存调整用户信息
 | 
	
		
			
				|  |  | +     * @param request CouponInventoryVO.PageRequest
 | 
	
		
			
				|  |  | +     * @return HttpResponseResult<PageInfo<CouponInventoryVO.PageInfo>>
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    @PostMapping(value = "/inventory/user", consumes="application/json", produces="application/json")
 | 
	
		
			
				|  |  | +    @ApiOperation(value = "查询库存调整用户信息分页", notes = "CouponInventoryVO.PageRequest")
 | 
	
		
			
				|  |  | +    public HttpResponseResult<PageInfo<CouponInventoryVO.PageUserInfo>> queryInventoryUserPageInfo(@RequestBody CouponInventoryVO.PageRequest request) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 校验请求参数
 | 
	
		
			
				|  |  | +        if (Objects.isNull(request) || Objects.isNull(request.getCouponId())) {
 | 
	
		
			
				|  |  | +            throw new BizException("无效的优惠券ID");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 优惠券信息
 | 
	
		
			
				|  |  | +        IPage<CouponInventoryWrapper> wrapper = couponInfoService.queryCouponInventoryPageInfo(PageUtil.getPage(request),
 | 
	
		
			
				|  |  | +                CouponInventoryQuery.from(request.jsonString()).groupByUser(true));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        // 数据转换
 | 
	
		
			
				|  |  | +        List<CouponInventoryVO.PageUserInfo> pageInfos = JSON.parseArray(JSON.toJSONString(wrapper.getRecords()),
 | 
	
		
			
				|  |  | +                CouponInventoryVO.PageUserInfo.class);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 分页数据信息
 | 
	
		
			
				|  |  | +        return succeed(PageUtil.getPageInfo(wrapper, pageInfos));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |