diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderTemplateController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderTemplateController.java new file mode 100644 index 00000000..cee2e191 --- /dev/null +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderTemplateController.java @@ -0,0 +1,46 @@ +package com.ghy.web.controller.order; + +import com.ghy.common.core.controller.BaseController; +import com.ghy.order.domain.OrderTemplate; +import com.ghy.order.service.OrderTemplateService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.util.Assert; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +@Slf4j +@Controller +@RequestMapping("order/template") +public class OrderTemplateController extends BaseController { + + @Resource + private OrderTemplateService orderTemplateService; + + @PostMapping("insert") + public int insert(OrderTemplate orderTemplate) { + Long userId = getUserId(); + Assert.notNull(userId, "UserId is null !"); + orderTemplate.setUserId(userId); + return orderTemplateService.insert(orderTemplate); + } + + @DeleteMapping("delete") + public int delete(Long id) { + return orderTemplateService.delete(id); + } + + @PutMapping("update") + public int update(OrderTemplate orderTemplate) { + return orderTemplateService.update(orderTemplate); + } + + @ResponseBody + @GetMapping("selectByUserId") + public List selectByUserId() { + Long userId = getUserId(); + return orderTemplateService.selectByUserId(userId); + } +} diff --git a/ghy-order/src/main/java/com/ghy/order/domain/OrderTemplate.java b/ghy-order/src/main/java/com/ghy/order/domain/OrderTemplate.java index 2eadff9f..93546990 100644 --- a/ghy-order/src/main/java/com/ghy/order/domain/OrderTemplate.java +++ b/ghy-order/src/main/java/com/ghy/order/domain/OrderTemplate.java @@ -1,21 +1,22 @@ package com.ghy.order.domain; +import com.ghy.common.core.domain.BaseEntity; import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; /** * 订单模板 */ @Data -public class OrderTemplate { +@EqualsAndHashCode(callSuper = true) +public class OrderTemplate extends BaseEntity { private Long id; private Long userId; // 模板名称 private String templateName; - // 商品ID - private Long goodsId; - // 商品类型ID(第三层) - private Long deptGoodsCategoryId; // 商品品牌 private String goodsBrand; // 商品规格 @@ -44,8 +45,6 @@ public class OrderTemplate { private Integer informationFee; // 奖励金(限制整数) private Integer bonus; - // 备注 - private String remark; // 物流单号 private String logisticsCode; // 是否需要拉货 @@ -54,4 +53,7 @@ public class OrderTemplate { private int needCarry; // 楼层 private Integer floor; + + // 商品 + private List goods; } diff --git a/ghy-order/src/main/java/com/ghy/order/domain/OrderTemplateGoods.java b/ghy-order/src/main/java/com/ghy/order/domain/OrderTemplateGoods.java new file mode 100644 index 00000000..c5b22ee8 --- /dev/null +++ b/ghy-order/src/main/java/com/ghy/order/domain/OrderTemplateGoods.java @@ -0,0 +1,18 @@ +package com.ghy.order.domain; + +import lombok.Data; + +@Data +public class OrderTemplateGoods { + + // 订单模板Id + private Long orderTemplateId; + // 商品ID + private Long goodsId; + // 商品名称 + private String goodsName; + // 商品类型ID(第三层) + private Long deptGoodsCategoryId; + // 商品数量 + private Long number; +} diff --git a/ghy-order/src/main/java/com/ghy/order/mapper/OrderTemplateMapper.java b/ghy-order/src/main/java/com/ghy/order/mapper/OrderTemplateMapper.java new file mode 100644 index 00000000..96cc9885 --- /dev/null +++ b/ghy-order/src/main/java/com/ghy/order/mapper/OrderTemplateMapper.java @@ -0,0 +1,36 @@ +package com.ghy.order.mapper; + +import com.ghy.order.domain.OrderTemplate; +import com.ghy.order.domain.OrderTemplateGoods; + +import java.util.List; +import java.util.Set; + +/** + * 订单模板Mapper + */ +public interface OrderTemplateMapper { + + int insert(OrderTemplate orderTemplate); + + int update(OrderTemplate orderTemplate); + + int delete(Long id); + + int batchDelete(Set ids); + + OrderTemplate selectById(Long id); + + List selectByIds(Set ids); + + List select(OrderTemplate orderTemplate); + + // OrderTemplateGoods 接口 + + int deleteGoods(Long orderTemplateId); + + List selectGoods(Long orderTemplateId); + + int insertGoods(OrderTemplateGoods goods); + +} diff --git a/ghy-order/src/main/java/com/ghy/order/service/OrderTemplateService.java b/ghy-order/src/main/java/com/ghy/order/service/OrderTemplateService.java new file mode 100644 index 00000000..59e21e86 --- /dev/null +++ b/ghy-order/src/main/java/com/ghy/order/service/OrderTemplateService.java @@ -0,0 +1,23 @@ +package com.ghy.order.service; + +import com.ghy.order.domain.OrderTemplate; + +import java.util.List; +import java.util.Set; + +public interface OrderTemplateService { + + int insert(OrderTemplate orderTemplate); + + int update(OrderTemplate orderTemplate); + + int delete(Long id); + + int batchDelete(Set ids); + + OrderTemplate selectById(Long id); + + List select(OrderTemplate orderTemplate); + + List selectByUserId(Long userId); +} diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderTemplateServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderTemplateServiceImpl.java new file mode 100644 index 00000000..66f724a6 --- /dev/null +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderTemplateServiceImpl.java @@ -0,0 +1,98 @@ +package com.ghy.order.service.impl; + +import com.ghy.order.domain.OrderTemplate; +import com.ghy.order.domain.OrderTemplateGoods; +import com.ghy.order.mapper.OrderTemplateMapper; +import com.ghy.order.service.OrderTemplateService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.Assert; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +@Service +public class OrderTemplateServiceImpl implements OrderTemplateService { + + @Resource + private OrderTemplateMapper mapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public int insert(OrderTemplate orderTemplate) { + int count = mapper.insert(orderTemplate); + // 保存选中的商品信息 + saveGoods(orderTemplate); + return count; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public int update(OrderTemplate orderTemplate) { + int count = mapper.update(orderTemplate); + // 全量替换模板的商品信息 + mapper.deleteGoods(orderTemplate.getId()); + saveGoods(orderTemplate); + return count; + } + + /** + * 保存订单模板中选中的商品信息 + */ + private void saveGoods(OrderTemplate orderTemplate) { + List goods = orderTemplate.getGoods(); + if (!CollectionUtils.isEmpty(goods)) { + for (OrderTemplateGoods x : goods) { + x.setOrderTemplateId(orderTemplate.getId()); + mapper.insertGoods(x); + } + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public int delete(Long id) { + // 删除模板关联的商品信息 + mapper.deleteGoods(id); + // 删除模板 + return mapper.delete(id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public int batchDelete(Set ids) { + if (CollectionUtils.isEmpty(ids)) { + return 0; + } else { + ids.forEach(x -> mapper.deleteGoods(x)); + return mapper.batchDelete(ids); + } + } + + @Override + public OrderTemplate selectById(Long id) { + List goods = mapper.selectGoods(id); + OrderTemplate orderTemplate = mapper.selectById(id); + orderTemplate.setGoods(goods); + return orderTemplate; + } + + @Override + public List select(OrderTemplate orderTemplate) { + List list = mapper.select(orderTemplate); + for (OrderTemplate item : list) { + List goods = mapper.selectGoods(item.getId()); + item.setGoods(goods); + } + return list; + } + + @Override + public List selectByUserId(Long userId) { + OrderTemplate param = new OrderTemplate(); + param.setUserId(userId); + return select(param); + } +} diff --git a/ghy-order/src/main/resources/mapper/order/OrderTemplateMapper.xml b/ghy-order/src/main/resources/mapper/order/OrderTemplateMapper.xml new file mode 100644 index 00000000..4d4af3f1 --- /dev/null +++ b/ghy-order/src/main/resources/mapper/order/OrderTemplateMapper.xml @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE order_template + + template_name = #{templateName}, + goods_brand = #{goodsBrand}, + goods_specification = #{goodsSpecification}, + video_url = #{videoUrl}, + image_url = #{imageUrl}, + address_id = #{addressId}, + street_id = #{streetId}, + full_address = #{fullAddress}, + customer_name = #{customerName}, + customer_phone = #{customerPhone}, + order_mode = #{orderMode}, + price = #{price}, + agency_fund = #{agencyFund}, + information_fee = #{informationFee}, + bonus = #{bonus}, + logistics_code = #{logisticsCode}, + need_wagon = #{needWagon}, + need_carry = #{needCarry}, + floor = #{floor}, + update_by = #{updateBy}, + update_time = SYSDATE() + + WHERE id = #{id} + + + + INSERT INTO order_template( + user_id, + template_name, + goods_brand, + goods_specification = #{goodsSpecification}, + video_url, + image_url, + address_id, + street_id, + full_address, + customer_name, + customer_phone, + order_mode, + price, + agency_fund, + information_fee, + bonus, + logistics_code, + need_wagon, + need_carry, + floor, + create_time + )VALUES( + #{userId}, + #{templateName}, + #{goodsBrand}, + goods_specification = #{goodsSpecification}, + #{videoUrl}, + #{imageUrl}, + #{addressId}, + #{streetId}, + #{fullAddress}, + #{customerName}, + #{customerPhone}, + #{orderMode}, + #{price}, + #{agencyFund}, + #{informationFee}, + #{bonus}, + #{logisticsCode}, + #{needWagon}, + #{needCarry}, + #{floor}, + SYSDATE() + ) + + + + + + + + + + DELETE FROM order_template WHERE id = #{id} + + + + DELETE FROM order_template WHERE id IN + + #{id} + + + + + SELECT id, user_id, template_name,goods_brand, goods_specification, video_url, image_url, + address_id, street_id, full_address, customer_name, customer_phone, order_mode, + price, agency_fund, information_fee, bonus, logistics_code, need_wagon, need_carry, floor, + create_by, create_time, update_by, update_time, remark + FROM order_template + + + + + + INSERT INTO order_template_goods(order_template_id, goods_id, goods_name, dept_goodscategory_id, number) + VALUES(#{orderTemplateId}, #{goodsId}, #{goodsName}, #{deptGoodsCategoryId}, #{number}) + + + + DELETE FROM order_template_goods WHERE order_template_id = #{orderTemplateId} + + + +