乐高项目分析

取消订单

首先根据订单id找到订单,第一判断是否有该订单,或者订单与本人对不上号,根据订单获取订单槽位置编码,重新入库,然后更新订单状态

取消订单api

    /**
     * 取消订单
     * @param param
     * @return
     * @author tanghc
     */
    @RequestMapping(value="cancelOrder.do",method=RequestMethod.POST)
    public Ret cancelOrder(@RequestBody OrderParam param) {
        User user = UserContext.getLoginUser();
        long orderId = param.getOrderId();
        
        orderService.cancelOrder(user, orderId);
        
        return Rets.success();
    }
    
    /**
     * 取消订单
     * @param user
     * @param orderId
     * @author tanghc
     */
    @Transactional
    public void cancelOrder(User user,long orderId) {
        Orders order = ordersDao.get(orderId);
        if(order == null) {
            throw new CommonException(MsgTypes.NULL_OBJECT);
        }
        if(!user.getId().equals(order.getUserId())) {
            throw new CommonException(MsgTypes.ERROR_OPT);
        }
        
        String goodsCode = order.getGoodsCode();
        // 重新入库
        this.putGoodsBoxInStore(goodsCode);
        // 修改订单状态
        order.setStatus(OrdersState.State.cancel.getStatus());
        order.setUpdateTime(new Date());
        // 跟新
        ordersDao.updateNotNull(order);
    }
    
    // 重新入库
    private void putGoodsBoxInStore(String goodsCode) {
        GoodsPosition goodsPos = goodsPositionDao.getByProperty("goodsCode", goodsCode);
        goodsPos.setState(GoodsState.State.inStore.getState());
        goodsPositionDao.updateNotNull(goodsPos);
    }

修改收货地址

业务逻辑: 根据订单号找到该订单,判断该用户是否有本订单,如果有,根据用户根号的地址id,获取地址详情,然后设置到订单中,最后跟新订单

    /**
     * 更新地址
     * @param orderParam
     * @return
     * @author tanghc
     */
    @RequestMapping(value="updateOrderUserInfo.do",method=RequestMethod.POST)
    public Ret updateOrderUserInfo(@RequestBody OrderParam orderParam) {
        Orders orders = ordersDao.get(orderParam.getOrderId());
        // 检查订单
        Checks.checkOrder(orders);
        orderService.updateOrderUserInfo(orders.getId(),orderParam.getAddressId());
        return Rets.success();
    }

检查订单

package app.front;

import app.base.entity.legouser.Orders;
import app.base.entity.legouser.User;
import app.base.utils.CheckUtils;

/**
 * @author tanghc
 *
 */
public class Checks {
    /**
     * 检查订单
     * @param orders
     * @param user
     * @author tanghc
     */
    public static void checkOrder(Orders orders) {
        User user = UserContext.getLoginUser();
        CheckUtils.checkOrder(orders, user);
    }
}


检查订单公交类

package app.base.utils;

import app.base.entity.legouser.Orders;
import app.base.entity.legouser.User;
import component.common.exception.CommonException;
import component.common.msg.MsgTypes;

/**
 * @author tanghc
 *
 */
public class CheckUtils {

    /**
     * 检查订单
     * @param orders
     * @param user
     * @author tanghc
     */
    public static void checkOrder(Orders orders,User user) {
        if(orders == null || user == null) {
            throw new NullPointerException();
        }
        
        if(!orders.getUserId().equals(user.getId())) {
            throw new CommonException(MsgTypes.ERROR_OPT);
        }
        
    }
}

更新订单

    /**
     * 更新订单地址信息
     * @param orderId
     * @author tanghc
     */
    public void updateOrderUserInfo(long orderId,long addressId) {
        Orders orders = ordersDao.get(orderId);
        UserAddress userAddress = userAddressDao.get(addressId);
        if(userAddress != null) {
            orders.setMobile(userAddress.getPhone());
            orders.setAddress(UserAddressService.buildAddressInfo(userAddress));
            orders.setRealName(userAddress.getRealname());
            ordersDao.updateNotNull(orders);
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 购买历史 根据userId获取所有订单,遍历订单使用键值对筛选必要字段 代码片段 心愿列表详情 分析: 设置分页,...
    wanggs阅读 4,132评论 0 0
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,370评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,148评论 19 139
  • 今天知道自己留不下来,而别人也在虎视眈眈。啊~人生怎么就走到了这么被动无奈的局面。对武汉没有兴趣,对武汉的生活没有...
    老四的碎碎念阅读 891评论 0 0

友情链接更多精彩内容