|  |  |  | 
|---|
|  |  |  | import com.xzx.gc.common.utils.IdUtils; | 
|---|
|  |  |  | import com.xzx.gc.entity.*; | 
|---|
|  |  |  | import com.xzx.gc.order.dto.AddJhyOrderDto; | 
|---|
|  |  |  | import com.xzx.gc.order.dto.JhyOrderConfirmDto; | 
|---|
|  |  |  | import com.xzx.gc.order.dto.JhyOrderConfirmItemsDto; | 
|---|
|  |  |  | import com.xzx.gc.order.dto.JhyOrderListDto; | 
|---|
|  |  |  | import com.xzx.gc.order.mapper.*; | 
|---|
|  |  |  | import com.xzx.gc.order.vo.JhyOrderDetailsVo; | 
|---|
|  |  |  | 
|---|
|  |  |  | private JhyInfoMapper jhyInfoMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private AccountMapper accountMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ScoreDetailsMapper scoreDetailsMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private IdUtils idUtils; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void addJhyOrder(AddJhyOrderDto orderDto) { | 
|---|
|  |  |  | //        JhyInfo jhyInfo = jhyInfoMapper.selectJhyInfoByUserId(orderDto.getUserId()); | 
|---|
|  |  |  | //        if (jhyInfo != null && JhyInfo.CHECK_PASS.equals(jhyInfo.getStatus())) { | 
|---|
|  |  |  | //            throw new RestException(-3, "集货员不能下单"); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | JhyInfo jhyInfo = jhyInfoMapper.selectJhyInfoByUserId(orderDto.getUserId()); | 
|---|
|  |  |  | if (jhyInfo != null && JhyInfo.CHECK_PASS.equals(jhyInfo.getStatus())) { | 
|---|
|  |  |  | throw new RestException(-3, "集货员不能下单"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // TODO 判断地址附近500米是否有集物员 | 
|---|
|  |  |  | String orderNo = idUtils.generate("JW", 10); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public PageInfo<JhyOrderListVo> orderList(JhyOrderListDto orderListDto) { | 
|---|
|  |  |  | JhyInfo jhyInfo = jhyInfoMapper.selectJhyInfoByUserId(orderListDto.getUserId()); | 
|---|
|  |  |  | if (jhyInfo == null || !JhyInfo.CHECK_PASS.equals(jhyInfo.getStatus())) { | 
|---|
|  |  |  | throw new RestException(-3, "不是集货员"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | PageHelper.startPage(orderListDto.getPageNo(), orderListDto.getPageSize()); | 
|---|
|  |  |  | List<JhyOrderListVo> data = jhyOrderMapper.selectJhyOrderList(orderListDto); | 
|---|
|  |  |  | return new PageInfo<>(data); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | BigDecimal total = BigDecimal.ZERO; | 
|---|
|  |  |  | for (JhyOrderItems item : items) { | 
|---|
|  |  |  | item.setPrice(item.getPrice().multiply(BigDecimal.valueOf(40))); | 
|---|
|  |  |  | total = total.add(StrUtil.isNotBlank(item.getScore()) ? new BigDecimal(item.getScore()) : BigDecimal.ZERO); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | order.setStatus(JhyOrder.ORDER_STATUS_CANCEL); | 
|---|
|  |  |  | jhyOrderMapper.updateByPrimaryKey(order); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void confirmOrder(JhyOrderConfirmDto confirmDto) { | 
|---|
|  |  |  | JhyInfo jhyInfo = jhyInfoMapper.selectJhyInfoByUserId(confirmDto.getUserId()); | 
|---|
|  |  |  | if (jhyInfo == null || !JhyInfo.CHECK_PASS.equals(jhyInfo.getStatus())) { | 
|---|
|  |  |  | throw new RestException(-3, "不是集物员"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | BigDecimal totalScore = BigDecimal.ZERO; | 
|---|
|  |  |  | for (JhyOrderConfirmItemsDto item : confirmDto.getItems()) { | 
|---|
|  |  |  | JhyOrderItems orderItem = jhyOrderItemsMapper.selectByPrimaryKey(item.getId()); | 
|---|
|  |  |  | BigDecimal total = orderItem.getPrice().multiply(BigDecimal.valueOf(40)).multiply(new BigDecimal(item.getWeight())); | 
|---|
|  |  |  | orderItem.setScore(total.setScale(0, BigDecimal.ROUND_DOWN).toString()); | 
|---|
|  |  |  | orderItem.setWeight(new BigDecimal(item.getWeight())); | 
|---|
|  |  |  | jhyOrderItemsMapper.updateByPrimaryKey(orderItem); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | totalScore = totalScore.add(total); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | JhyOrder order = jhyOrderMapper.selectByPrimaryKey(confirmDto.getOrderId()); | 
|---|
|  |  |  | AccountInfo jhyAccount = accountMapper.selectAccountInfoByUserId(order.getJhyId()); | 
|---|
|  |  |  | BigDecimal collectScore = StrUtil.isNotBlank(jhyAccount.getCollectScore()) ? new BigDecimal(jhyAccount.getCollectScore()) : BigDecimal.ZERO; | 
|---|
|  |  |  | if (totalScore.compareTo(collectScore) > 0) { | 
|---|
|  |  |  | throw new RestException(-3, "剩余积分不足"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | order.setStatus(JhyOrder.ORDER_STATUS_CONFIRM); | 
|---|
|  |  |  | order.setReceivingTime(new Date()); | 
|---|
|  |  |  | jhyOrderMapper.updateByPrimaryKey(order); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | BigDecimal jhyScore = StrUtil.isBlank(jhyAccount.getCollectScore()) ? BigDecimal.ZERO : new BigDecimal(jhyAccount.getCollectScore()); | 
|---|
|  |  |  | ScoreDetails jhyScoreDetail = new ScoreDetails(); | 
|---|
|  |  |  | jhyScoreDetail.setOrderNo(order.getOrderNo()); | 
|---|
|  |  |  | jhyScoreDetail.setUserId(order.getJhyId()); | 
|---|
|  |  |  | jhyScoreDetail.setType(ScoreDetails.SCORE_TYPE_PAY); | 
|---|
|  |  |  | jhyScoreDetail.setChangeScore(totalScore.negate()); | 
|---|
|  |  |  | jhyScoreDetail.setOriginalScore(jhyScore); | 
|---|
|  |  |  | jhyScoreDetail.setCurrentScore(jhyScore.subtract(totalScore)); | 
|---|
|  |  |  | scoreDetailsMapper.insert(jhyScoreDetail); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | AccountInfo userAccount = accountMapper.selectAccountInfoByUserId(order.getUserId()); | 
|---|
|  |  |  | BigDecimal userScore = StrUtil.isBlank(userAccount.getCollectScore()) ? BigDecimal.ZERO : new BigDecimal(userAccount.getCollectScore()); | 
|---|
|  |  |  | ScoreDetails userScoreDetail = new ScoreDetails(); | 
|---|
|  |  |  | userScoreDetail.setOrderNo(order.getOrderNo()); | 
|---|
|  |  |  | userScoreDetail.setUserId(order.getJhyId()); | 
|---|
|  |  |  | userScoreDetail.setType(ScoreDetails.SCORE_TYPE_EXCHANGE); | 
|---|
|  |  |  | userScoreDetail.setChangeScore(totalScore); | 
|---|
|  |  |  | userScoreDetail.setOriginalScore(userScore); | 
|---|
|  |  |  | userScoreDetail.setCurrentScore(userScore.add(totalScore)); | 
|---|
|  |  |  | scoreDetailsMapper.insert(userScoreDetail); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|