package com.matrix.system.shopXcx.api.action;
|
|
import com.matrix.system.hive.bean.SysVipInfo;
|
import com.matrix.component.redis.RedisUserLoginUtils;
|
import com.matrix.core.pojo.AjaxResult;
|
import com.matrix.system.shopXcx.api.service.WXShopOrderService;
|
import com.matrix.system.shopXcx.api.service.WxShopActivitiesSecKillService;
|
import com.matrix.system.shopXcx.api.vo.SecKillVO;
|
import com.matrix.system.shopXcx.bean.*;
|
import com.matrix.system.shopXcx.dao.*;
|
import com.matrix.system.shopXcx.dto.CreateSecKillDTO;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.math.BigDecimal;
|
import java.util.List;
|
|
/**
|
* @author wzy
|
*/
|
@RestController
|
@CrossOrigin(origins = "*")
|
@RequestMapping(value = "/wxapi/seckill")
|
public class WxShopActivitiesSecKillAction {
|
|
@Autowired
|
private ShopActivitiesDao shopActivitiesDao;
|
|
@Autowired
|
private ShopActivitiesSeckillInfoDao shopActivitiesSeckillInfoDao;
|
@Autowired
|
private ShopProductAttrRefDao shopProductAttrRefDao;
|
@Autowired
|
private ShopProductImgDao shopProductImgDao;
|
@Autowired
|
private ShopSkuDao shopSkuDao;
|
@Autowired
|
private ShopProductParamRefDao shopProductParamRefDao;
|
@Autowired
|
private WXShopOrderService wxShopOrderService;
|
@Autowired
|
private WxShopActivitiesSecKillService wxShopActvitiesSecKillService;
|
|
@Autowired
|
private RedisUserLoginUtils redisUserLoginUtils;
|
|
|
/**
|
* 获取正在进行的秒杀活动列表
|
*
|
* @return
|
*/
|
@GetMapping(value = "/findSecKillActList/{shopId}")
|
public AjaxResult findSecKillActList(@PathVariable("shopId") Long shopId) {
|
List<ShopActivities> list = shopActivitiesDao.selectSecKillActivitiesForIng(shopId);
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, list);
|
}
|
|
/**
|
* 根据活动Id查询该秒杀活动下的产品列表
|
*
|
* @param secKillVO
|
* @return
|
*/
|
@PostMapping(value = "/findSecKillGoodsListById")
|
public AjaxResult findSecKillGoodsListById(@RequestBody SecKillVO secKillVO) {
|
List<ShopActivitiesSeckillInfo> list = shopActivitiesSeckillInfoDao.selectSecKillGoodsListForWx(secKillVO);
|
AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(list);
|
return ajaxResult;
|
}
|
|
/**
|
* 查询秒杀产品详情
|
*
|
* @param siId 秒杀信息id
|
* @return
|
*/
|
@GetMapping(value = "/findSecKillGoodsInfo/{siId}")
|
public AjaxResult findSecKillGoodsInfo(@PathVariable("siId") Long siId) {
|
ShopActivitiesSeckillInfo seckillInfo = shopActivitiesSeckillInfoDao.selectById(siId);
|
if (seckillInfo == null) {
|
return AjaxResult.buildFailInstance("参数异常");
|
}
|
|
ShopActivities shopActivities = shopActivitiesDao.selectById(seckillInfo.getActId());
|
|
int goodsId = seckillInfo.getGoods().getId();
|
List<ShopProductAttrRef> shopProductAttrRefs = shopProductAttrRefDao.selectByPid(goodsId);
|
List<ShopProductImg> shopProductImgs = shopProductImgDao.selectByPid(goodsId);
|
List<ShopSku> shopSkus = shopSkuDao.selectByPid(goodsId);
|
List<ShopProductParamRef> shopProductParamRefs = shopProductParamRefDao.selectByPid(goodsId);
|
seckillInfo.getGoods().setAttrRefs(shopProductAttrRefs);
|
seckillInfo.getGoods().setProductImgs(shopProductImgs);
|
seckillInfo.getGoods().setSkus(shopSkus);
|
seckillInfo.getGoods().setParams(shopProductParamRefs);
|
|
AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功");
|
if (shopActivities.getActEndTime().getTime() < System.currentTimeMillis()) {
|
shopActivities.setActStatus(ShopActivities.ACTIVITIES_STATUS_CLOSE);
|
}
|
ajaxResult.putInMap("goodsInfo", seckillInfo);
|
ajaxResult.putInMap("activity", shopActivities);
|
return ajaxResult;
|
}
|
|
/**
|
* 计算秒杀价格
|
*
|
* @param secKillVO
|
* @return
|
*/
|
@PostMapping(value = "/calSecKillPrice")
|
public AjaxResult calSecKillPrice(@RequestBody SecKillVO secKillVO) {
|
SysVipInfo sysVipInfo = redisUserLoginUtils.getLoginUser(SysVipInfo.class);
|
ShopActivitiesSeckillInfo seckillInfo = shopActivitiesSeckillInfoDao.selectById(secKillVO.getId());
|
if (seckillInfo == null) {
|
return AjaxResult.buildFailInstance("参数有误");
|
}
|
|
BigDecimal postage = wxShopOrderService.calculationPostage(seckillInfo.getSiPrice(),sysVipInfo.getCompanyId());
|
BigDecimal payPrice = seckillInfo.getSiPrice().multiply(BigDecimal.valueOf(secKillVO.getCount())).add(postage);
|
AjaxResult ajaxResult = new AjaxResult(AjaxResult.STATUS_SUCCESS, null);
|
ajaxResult.putInMap("totalPrice", payPrice);
|
ajaxResult.putInMap("postage", postage);
|
return ajaxResult;
|
}
|
|
/**
|
* 创建秒杀订单
|
*
|
* @param secKillDTO id,addressId,count,shopId,shippingMethod
|
* @return
|
* @throws Exception
|
*/
|
@PostMapping(value = "/createSecKill")
|
public AjaxResult createSecKill(@RequestBody CreateSecKillDTO secKillDTO) throws Exception {
|
return wxShopActvitiesSecKillService.createSecKillOrder(secKillDTO);
|
}
|
}
|