| package com.matrix.system.shopXcx.api.action; | 
|   | 
| import com.matrix.biz.bean.BizUser; | 
| 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) { | 
|         BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class); | 
|         ShopActivitiesSeckillInfo seckillInfo = shopActivitiesSeckillInfoDao.selectById(secKillVO.getId()); | 
|         if (seckillInfo == null) { | 
|             return AjaxResult.buildFailInstance("参数有误"); | 
|         } | 
|   | 
|         BigDecimal postage = wxShopOrderService.calculationPostage(seckillInfo.getSiPrice(),bizUser.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); | 
|     } | 
| } |