diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/goods/GoodsController.java b/ghy-admin/src/main/java/com/ghy/web/controller/goods/GoodsController.java index 0d851e1d..e223aa75 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/goods/GoodsController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/goods/GoodsController.java @@ -1,7 +1,6 @@ package com.ghy.web.controller.goods; import com.ghy.common.annotation.Log; -import com.ghy.common.constant.UserConstants; import com.ghy.common.core.controller.BaseController; import com.ghy.common.core.domain.AjaxResult; import com.ghy.common.core.page.TableDataInfo; @@ -86,11 +85,6 @@ public class GoodsController extends BaseController { @PostMapping("/add") @ResponseBody public AjaxResult addSave(@Validated Goods goods) { - if (UserConstants.GOODS_CODE_NOT_UNIQUE.equals(goodsService.checkGoodsNameUnique(goods))) { - return error("新增商品'" + goods.getGoodsName() + "'失败,商品名称已存在"); - } else if (UserConstants.GOODS_CODE_NOT_UNIQUE.equals(goodsService.checkGoodsCodeUnique(goods))) { - return error("新增商品'" + goods.getGoodsName() + "'失败,商品编码已存在"); - } goods.setCreateBy(getLoginName()); goods.setDeptId(getSysUser().getDeptId()); return toAjax(goodsService.insertGoods(goods)); @@ -102,6 +96,8 @@ public class GoodsController extends BaseController { @RequiresPermissions("goods:goods:edit") @GetMapping("/edit/{goodsId}") public String edit(@PathVariable("goodsId") Long goodsId, ModelMap mmap) { + Long parentId = ShiroUtils.getSysUser().getParentId(); + mmap.put("deptGoodsCategories", deptGoodsCategoryService.list(parentId)); mmap.put("goods", goodsService.selectById(goodsId)); return PREFIX + "/edit"; } @@ -114,11 +110,6 @@ public class GoodsController extends BaseController { @PostMapping("/edit") @ResponseBody public AjaxResult editSave(@Validated Goods goods) { - if (UserConstants.GOODS_NAME_NOT_UNIQUE.equals(goodsService.checkGoodsNameUnique(goods))) { - return error("修改商品'" + goods.getGoodsName() + "'失败,商品名称已存在"); - } else if (UserConstants.GOODS_CODE_NOT_UNIQUE.equals(goodsService.checkGoodsCodeUnique(goods))) { - return error("修改商品'" + goods.getGoodsCode() + "'失败,商品编码已存在"); - } goods.setUpdateBy(getLoginName()); return toAjax(goodsService.updateGoods(goods)); } diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java index adca53b0..de54afed 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java @@ -2,10 +2,24 @@ package com.ghy.web.controller.order; import com.ghy.common.core.controller.BaseController; import com.ghy.common.core.domain.AjaxResult; +import com.ghy.common.utils.StringUtils; +import com.ghy.customer.domain.Customer; +import com.ghy.customer.service.CustomerService; +import com.ghy.goods.service.GoodsService; +import com.ghy.order.domain.OrderMaster; +import com.ghy.order.request.AppOrderRequest; +import com.ghy.order.service.OrderDetailService; +import com.ghy.order.service.OrderMasterService; +import com.ghy.payment.service.FinancialDetailService; +import com.ghy.payment.service.FinancialMasterService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; +import java.math.BigDecimal; +import java.util.List; + /** * @author clunt * 下单接口 @@ -14,19 +28,46 @@ import org.springframework.web.bind.annotation.RequestMapping; @RequestMapping("/order") public class OrderController extends BaseController { - @PostMapping("/app") - public AjaxResult appOrder(){ - //TODO 校验商品信息(库存) + @Autowired + private CustomerService customerService; - //TODO 计算商品费用和运费汇总 + @Autowired + private GoodsService goodsService; - //TODO 生成主单 + @Autowired + private OrderMasterService orderMasterService; + @Autowired + private OrderDetailService orderDetailService; + + @Autowired + private FinancialMasterService financialMasterService; + + @Autowired + private FinancialDetailService financialDetailService; + + + @PostMapping("/server/app") + public AjaxResult appOrder(AppOrderRequest appOrderRequest){ + // 校验用户信息 + Customer customer = customerService.selectByCustomerId(appOrderRequest.getCustomerId()); + if(StringUtils.isNull(customer)){ + return AjaxResult.error("用户不存在!"); + } + // 校验商品信息(库存) + boolean flag = goodsService.checkStore(appOrderRequest.getGoodsList()); + if(!flag){ + return AjaxResult.error("库存不足!"); + } + // 计算商品费用 + BigDecimal totalPay = goodsService.calculate(appOrderRequest.getGoodsList()); + //TODO 生成主单 and 细单 + OrderMaster orderMaster = orderMasterService.createMasterOrder(appOrderRequest); //TODO 生成细单 //TODO 生成财务主单 - //TODO 生成财务细单 + //TODO 生成财务细单(含分销等.) return AjaxResult.success(); } diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/pay/AlipayController.java b/ghy-admin/src/main/java/com/ghy/web/controller/pay/AlipayController.java new file mode 100644 index 00000000..9ffffd96 --- /dev/null +++ b/ghy-admin/src/main/java/com/ghy/web/controller/pay/AlipayController.java @@ -0,0 +1,53 @@ +package com.ghy.web.controller.pay; + +import com.ghy.common.adapay.AdapayService; +import com.ghy.common.adapay.callback.PayCallback; +import com.ghy.common.core.controller.BaseController; +import com.ghy.common.core.domain.AjaxResult; +import com.ghy.order.domain.OrderMaster; +import com.ghy.order.service.OrderMasterService; +import com.huifu.adapay.core.exception.BaseAdaPayException; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.Map; + +/** + * 支付宝支付API + * + * @author HH 2022/5/10 + */ +@RestController +@RequestMapping("pay/ali") +public class AlipayController extends BaseController { + + @Resource + private PayCallback payCallback; + @Resource + private AdapayService adapayService; + @Resource + private OrderMasterService orderMasterService; + + /** + * 支付宝正扫支付 + */ + @PostMapping("qr") + public AjaxResult qrPay(String orderMasterCode) { + OrderMaster orderMaster = orderMasterService.selectByCode(orderMasterCode); + if (orderMaster == null) { + return AjaxResult.error("订单不存在"); + } + Map map; + try { + // TODO 订单里需要补充支付金额、tittle、简要描述、分账信息、description + map = adapayService.alipayQrPay(payCallback, orderMaster.getCode(), "orderMaster.get支付金额", + "orderMaster.getTittle()", "orderMaster.get简要描述", "orderMaster.getDivMember", "orderMaster.getDescription"); + } catch (BaseAdaPayException e) { + logger.error("获取微信用户信息失败", e); + return AjaxResult.error(); + } + return AjaxResult.success(map); + } +} diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/pay/WxPayController.java b/ghy-admin/src/main/java/com/ghy/web/controller/pay/WxPayController.java index 283e1d9f..f77fea12 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/pay/WxPayController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/pay/WxPayController.java @@ -2,8 +2,8 @@ package com.ghy.web.controller.pay; import com.alibaba.fastjson.JSONObject; import com.ghy.common.adapay.AdapayService; +import com.ghy.common.adapay.callback.PayCallback; import com.ghy.common.adapay.callback.model.WxLiteExpend; -import com.ghy.common.adapay.callback.reply.WxPubPayCallBack; import com.ghy.common.config.WxConfig; import com.ghy.common.core.controller.BaseController; import com.ghy.common.core.domain.AjaxResult; @@ -21,7 +21,6 @@ import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.io.IOException; -import java.util.List; import java.util.Map; @Controller @@ -34,16 +33,20 @@ public class WxPayController extends BaseController { private AdapayService adapayService; @Resource private OrderMasterService orderMasterService; + @Resource + private PayCallback payCallback; + /** + * 微信小程序支付 + */ @PostMapping("lite") public AjaxResult litePay(HttpServletRequest request) { String code = request.getParameter("code"); String orderMasterCode = request.getParameter("orderMasterCode"); - List orderMasters = orderMasterService.selectOrderMasterList(new OrderMaster(orderMasterCode)); - if (orderMasters.isEmpty()) { + OrderMaster orderMaster = orderMasterService.selectByCode(orderMasterCode); + if (orderMaster == null) { return AjaxResult.error("订单不存在"); } - OrderMaster orderMaster = orderMasters.get(0); JSONObject wxUser; try { wxUser = WxUtils.getOpenid(code, wxConfig.getAppId(), wxConfig.getSecret()); @@ -54,11 +57,11 @@ public class WxPayController extends BaseController { String openId = wxUser.getString("openid"); //调用adapay微信公众号支付. WxLiteExpend expend = new WxLiteExpend(); - expend.setOpen_id(openId); + expend.setOpenId(openId); Map map; try { // TODO 订单里需要补充支付金额、tittle、简要描述、分账信息、description - map = adapayService.wxPubPay(new WxPubPayCallBack(), expend, orderMaster.getCode(), "orderMaster.get支付金额", + map = adapayService.wxPubPay(payCallback, expend, orderMaster.getCode(), "orderMaster.get支付金额", "orderMaster.getTittle()", "orderMaster.get简要描述", "orderMaster.getDivMember", "orderMaster.getDescription"); } catch (BaseAdaPayException e) { logger.error("获取微信用户信息失败", e); @@ -89,8 +92,8 @@ public class WxPayController extends BaseController { logger.info("open id is " + openId); //调用adapay微信公众号支付. WxLiteExpend expend = new WxLiteExpend(); - expend.setOpen_id(openId); - Map map = adapayService.wxPubPay(new WxPubPayCallBack(), expend, "wxPay123456" + Math.ceil(Math.random() * 100), "1.00", + expend.setOpenId(openId); + Map map = adapayService.wxPubPay(payCallback, expend, "wxPay123456" + Math.ceil(Math.random() * 100), "1.00", "测试商品", "测试商品detail", null, "description"); //拼接消息给前端.前端通过JSAPI调用微信支付 map.forEach((key, value) -> { diff --git a/ghy-admin/src/main/java/com/ghy/web/core/AfterPay.java b/ghy-admin/src/main/java/com/ghy/web/core/AfterPay.java new file mode 100644 index 00000000..91fc4fce --- /dev/null +++ b/ghy-admin/src/main/java/com/ghy/web/core/AfterPay.java @@ -0,0 +1,34 @@ +package com.ghy.web.core; + +import com.ghy.common.adapay.callback.PayCallback; +import com.ghy.common.adapay.callback.model.PayReply; +import com.ghy.order.service.OrderDetailService; +import com.ghy.order.service.OrderMasterService; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.annotation.Resource; + +/** + * 用户支付后 + */ +@Configuration +public class AfterPay { + + @Resource + OrderMasterService orderMasterService; + @Resource + OrderDetailService orderDetailService; + + @Bean + public PayCallback payCallback() { + return new PayCallback() { + @Override + public void onReply(PayReply reply) { + // TODO 修改 OrderMaster 订单状态 + // TODO 修改 OrderDetail 订单状态 + // TODO 保存支付结果到MySQL + } + }; + } +} diff --git a/ghy-admin/src/main/resources/templates/goods/goods/add.html b/ghy-admin/src/main/resources/templates/goods/goods/add.html index 47164469..c6d3feb7 100644 --- a/ghy-admin/src/main/resources/templates/goods/goods/add.html +++ b/ghy-admin/src/main/resources/templates/goods/goods/add.html @@ -1,126 +1,124 @@ - + - - + + -
-
-

基本信息

-
-
-
- -
- -
-
-
-
-
- -
- -
+
+ +

基本信息

+
+
+
+ +
+
-
-
-
- -
- -
-
-
-
-
- -
- -
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+
-
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
- -

其他信息

-
-
-
- -
- -
-
-
-
- -
- -
-
-   -
-
- - - + \ No newline at end of file diff --git a/ghy-admin/src/main/resources/templates/goods/goods/edit.html b/ghy-admin/src/main/resources/templates/goods/goods/edit.html new file mode 100644 index 00000000..34b3fcd0 --- /dev/null +++ b/ghy-admin/src/main/resources/templates/goods/goods/edit.html @@ -0,0 +1,134 @@ + + + + + + + + + + +
+
+ +

基本信息

+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+ +
+
+
+
+ +

其他信息

+
+
+
+ +
+ +
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/ghy-common/src/main/java/com/ghy/common/adapay/AdapayService.java b/ghy-common/src/main/java/com/ghy/common/adapay/AdapayService.java index b4b890a4..2b6580a9 100644 --- a/ghy-common/src/main/java/com/ghy/common/adapay/AdapayService.java +++ b/ghy-common/src/main/java/com/ghy/common/adapay/AdapayService.java @@ -159,7 +159,7 @@ public class AdapayService { } /** - * 微信小程序支付 + * 微信公众号支付 */ public Map wxPubPay(PayCallback callback, WxLiteExpend expend, String orderNo, String payAmt, String goodsTittle, String goodsDesc, String divMembers, String description) throws BaseAdaPayException { diff --git a/ghy-common/src/main/java/com/ghy/common/adapay/callback/model/Expend.java b/ghy-common/src/main/java/com/ghy/common/adapay/callback/model/Expend.java index 35d42572..1761d988 100644 --- a/ghy-common/src/main/java/com/ghy/common/adapay/callback/model/Expend.java +++ b/ghy-common/src/main/java/com/ghy/common/adapay/callback/model/Expend.java @@ -1,14 +1,10 @@ package com.ghy.common.adapay.callback.model; -import lombok.Data; - /** + * 所有支付渠道扩展参数的父类 + * * @author HH 2022/3/31 */ -@Data public class Expend { - private String open_id; - - } diff --git a/ghy-common/src/main/java/com/ghy/common/adapay/callback/reply/WxPubPayCallBack.java b/ghy-common/src/main/java/com/ghy/common/adapay/callback/reply/WxPubPayCallBack.java deleted file mode 100644 index e9fba84f..00000000 --- a/ghy-common/src/main/java/com/ghy/common/adapay/callback/reply/WxPubPayCallBack.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.ghy.common.adapay.callback.reply; - -import com.ghy.common.adapay.callback.PayCallback; -import com.ghy.common.adapay.callback.model.PayReply; -import lombok.extern.slf4j.Slf4j; - -@Slf4j -public class WxPubPayCallBack implements PayCallback { - - @Override - public void onReply(PayReply reply) { - // 更新工单状态 - log.info("wx pub pay response is : " + reply.toString()); - } -} diff --git a/ghy-custom/src/main/java/com/ghy/customer/domain/Customer.java b/ghy-custom/src/main/java/com/ghy/customer/domain/Customer.java index 54bf65e5..1f0edcaa 100644 --- a/ghy-custom/src/main/java/com/ghy/customer/domain/Customer.java +++ b/ghy-custom/src/main/java/com/ghy/customer/domain/Customer.java @@ -4,6 +4,8 @@ import com.ghy.common.annotation.Excel; import com.ghy.common.core.domain.BaseEntity; import lombok.Data; +import java.util.List; + /** * @author clunt * 消费者实体 @@ -37,5 +39,10 @@ public class Customer extends BaseEntity { @Excel(name = "用户头像", cellType = Excel.ColumnType.STRING) private String customerLogoUrl; + @Excel(name = "上级分销人", cellType = Excel.ColumnType.NUMERIC) + private Long customerPlace; + + @Excel(name = "祖级分销人", cellType = Excel.ColumnType.NUMERIC) + private Long parentCustomerPlace; } diff --git a/ghy-custom/src/main/java/com/ghy/customer/domain/CustomerPlace.java b/ghy-custom/src/main/java/com/ghy/customer/domain/CustomerPlace.java deleted file mode 100644 index a103479e..00000000 --- a/ghy-custom/src/main/java/com/ghy/customer/domain/CustomerPlace.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.ghy.customer.domain; - -import com.ghy.common.annotation.Excel; -import com.ghy.common.core.domain.BaseEntity; -import lombok.Data; - -/** - * @author clunt - * 用户多级分销,最多不超过3级 - */ -@Data -public class CustomerPlace extends BaseEntity { - - private static final long serialVersionUID = 1L; - - @Excel(name = "分销id", cellType = Excel.ColumnType.NUMERIC) - private Long customerPlaceId; - - @Excel(name = "用户id", cellType = Excel.ColumnType.NUMERIC) - private Long customerId; - - @Excel(name = "父级id", cellType = Excel.ColumnType.NUMERIC) - private Long parentCustomerId; - - @Excel(name = "分销类型", cellType = Excel.ColumnType.STRING) - private Integer placeType; - - @Excel(name = "分销比例", cellType = Excel.ColumnType.STRING) - private String placeRate; - - @Excel(name = "分销金额", cellType = Excel.ColumnType.STRING) - private String placeMoney; - -} diff --git a/ghy-custom/src/main/java/com/ghy/customer/mapper/CustomerPlaceMapper.java b/ghy-custom/src/main/java/com/ghy/customer/mapper/CustomerPlaceMapper.java deleted file mode 100644 index 0ca4876f..00000000 --- a/ghy-custom/src/main/java/com/ghy/customer/mapper/CustomerPlaceMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.ghy.customer.mapper; - -/** - * @author clunt - * 多级分销接口类 - */ -public interface CustomerPlaceMapper { - - - -} diff --git a/ghy-custom/src/main/java/com/ghy/customer/service/CustomerPlaceService.java b/ghy-custom/src/main/java/com/ghy/customer/service/CustomerPlaceService.java deleted file mode 100644 index 2bdb5dc2..00000000 --- a/ghy-custom/src/main/java/com/ghy/customer/service/CustomerPlaceService.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.ghy.customer.service; - -/** - * @author clunt - * 多级分销 - */ -public interface CustomerPlaceService { - - // 新增分销用户 - - // 获取用户分销关系 - - // 设置分销比例 - -} diff --git a/ghy-custom/src/main/java/com/ghy/customer/service/impl/CustomerPlaceServiceImpl.java b/ghy-custom/src/main/java/com/ghy/customer/service/impl/CustomerPlaceServiceImpl.java deleted file mode 100644 index 095f6067..00000000 --- a/ghy-custom/src/main/java/com/ghy/customer/service/impl/CustomerPlaceServiceImpl.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.ghy.customer.service.impl; - -import com.ghy.customer.service.CustomerPlaceService; -import org.springframework.stereotype.Service; - -/** - * @author clunt - * 多级分销实现类 - */ -@Service -public class CustomerPlaceServiceImpl implements CustomerPlaceService { - - - -} diff --git a/ghy-custom/src/main/java/com/ghy/customer/service/impl/CustomerServiceImpl.java b/ghy-custom/src/main/java/com/ghy/customer/service/impl/CustomerServiceImpl.java index ce69ee59..0bd08b1c 100644 --- a/ghy-custom/src/main/java/com/ghy/customer/service/impl/CustomerServiceImpl.java +++ b/ghy-custom/src/main/java/com/ghy/customer/service/impl/CustomerServiceImpl.java @@ -5,7 +5,6 @@ import com.ghy.common.exception.ServiceException; import com.ghy.customer.domain.Customer; import com.ghy.customer.mapper.CustomerMapper; import com.ghy.customer.service.CustomerService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -18,7 +17,7 @@ import java.util.List; @Service public class CustomerServiceImpl implements CustomerService { - @Autowired + @Resource private CustomerMapper customerMapper; @Override diff --git a/ghy-custom/src/main/resources/mapper/customer/CustomerMapper.xml b/ghy-custom/src/main/resources/mapper/customer/CustomerMapper.xml index 7dc098d5..099b628a 100644 --- a/ghy-custom/src/main/resources/mapper/customer/CustomerMapper.xml +++ b/ghy-custom/src/main/resources/mapper/customer/CustomerMapper.xml @@ -11,6 +11,9 @@ + + + @@ -20,7 +23,7 @@ SELECT customer_id, name, account, phone, open_id, password, status, - customer_logo_url, create_by, create_time, remark + customer_logo_url, customer_place, parent_customer_place, create_by, create_time, remark FROM customer diff --git a/ghy-custom/src/main/resources/mapper/customer/CustomerPlaceMapper.xml b/ghy-custom/src/main/resources/mapper/customer/CustomerPlaceMapper.xml deleted file mode 100644 index bf4025b9..00000000 --- a/ghy-custom/src/main/resources/mapper/customer/CustomerPlaceMapper.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ghy-goods/src/main/java/com/ghy/goods/mapper/GoodsMapper.java b/ghy-goods/src/main/java/com/ghy/goods/mapper/GoodsMapper.java index e92e96c4..3be03bbc 100644 --- a/ghy-goods/src/main/java/com/ghy/goods/mapper/GoodsMapper.java +++ b/ghy-goods/src/main/java/com/ghy/goods/mapper/GoodsMapper.java @@ -1,6 +1,8 @@ package com.ghy.goods.mapper; import com.ghy.goods.domain.Goods; +import com.ghy.goods.request.AppGoodsRequest; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -11,29 +13,35 @@ import java.util.List; public interface GoodsMapper { /** - * @param goods 商品属性 - * @return 成功条数 + * @param goods 商品信息 + * @return 校验是否满足库存 */ - public int insertGoods(Goods goods); + int checkAGoodsStore(AppGoodsRequest goods); /** * @param goods 商品属性 * @return 成功条数 */ - public int updateGoods(Goods goods); + int insertGoods(Goods goods); + + /** + * @param goods 商品属性 + * @return 成功条数 + */ + int updateGoods(Goods goods); /** * @param goods 商品入参 * @return 商品集合 */ - public List selectGoodsList(Goods goods); + List selectGoodsList(Goods goods); /** * @param goodsId 商品id * @return 商品 */ - public Goods selectById(Long goodsId); + Goods selectById(Long goodsId); /** * 批量删除商品信息 @@ -41,19 +49,19 @@ public interface GoodsMapper { * @param goodsId 需要删除的数据ID * @return 结果 */ - public int deleteGoodsByIds(Long[] goodsId); + int deleteGoodsByIds(Long[] goodsId); /** * @param goodsName 商品名称 * @return 商品信息 */ - public Goods checkGoodsNameUnique(String goodsName); + Goods checkGoodsNameUnique(String goodsName); /** * @param goodsCode 商品编码 * @return 商品信息 */ - public Goods checkGoodsCodeUnique(String goodsCode); + Goods checkGoodsCodeUnique(String goodsCode); /** * 用商品类别ID查询一条商品信息 @@ -63,4 +71,13 @@ public interface GoodsMapper { * @return 商品信息 */ Goods selectOneByGoodsCategoryId(Long goodsCategoryId); + + /** + * 设置商品编号 + * + * @param goodsId 商品ID + * @param goodsCode 商品编号 + * @return + */ + int setCode(@Param("goodsId") Long goodsId, @Param("goodsCode") String goodsCode); } diff --git a/ghy-goods/src/main/java/com/ghy/goods/request/AppGoodsRequest.java b/ghy-goods/src/main/java/com/ghy/goods/request/AppGoodsRequest.java new file mode 100644 index 00000000..a632b013 --- /dev/null +++ b/ghy-goods/src/main/java/com/ghy/goods/request/AppGoodsRequest.java @@ -0,0 +1,21 @@ +package com.ghy.goods.request; + +import lombok.Data; + + +/** + * 小程序下单请求体 + * @author clunt + */ +@Data +public class AppGoodsRequest { + + // 商品id + private Long goodsId; + + // 数量 + private Integer num; + +} + + diff --git a/ghy-goods/src/main/java/com/ghy/goods/service/GoodsService.java b/ghy-goods/src/main/java/com/ghy/goods/service/GoodsService.java index 39b7426d..6ef60a5d 100644 --- a/ghy-goods/src/main/java/com/ghy/goods/service/GoodsService.java +++ b/ghy-goods/src/main/java/com/ghy/goods/service/GoodsService.java @@ -1,58 +1,75 @@ package com.ghy.goods.service; import com.ghy.goods.domain.Goods; +import com.ghy.goods.request.AppGoodsRequest; +import java.math.BigDecimal; import java.util.List; /** - * 商品模块接口 + * 商品模块接口 + * * @author clunt */ public interface GoodsService { /** - * @param goods 商品属性 - * @return 成功条数 + * @param goodsList 需要校验库存的商品list + * @return 校验结果 */ - public int insertGoods(Goods goods); + boolean checkStore(List goodsList); + + /** + * @param goodsList 需要校验库存的商品list + * @return 商品总价 + */ + BigDecimal calculate(List goodsList); /** * @param goods 商品属性 * @return 成功条数 */ - public int updateGoods(Goods goods); + int insertGoods(Goods goods); + + /** + * @param goods 商品属性 + * @return 成功条数 + */ + int updateGoods(Goods goods); /** * @param goods 商品入参 * @return 商品集合 */ - public List selectGoodsList(Goods goods); + List selectGoodsList(Goods goods); /** * @param goodsId 商品id * @return 商品 */ - public Goods selectById(Long goodsId); + Goods selectById(Long goodsId); /** * @param ids 商品ids * @return 删除结果 */ - public int deleteGoodsByIds(String ids); + int deleteGoodsByIds(String ids); /** * 校验商品名称是否重复 + * * @param goods 商品属性 * @return 校验结果 1存在 0不存在 */ - public String checkGoodsNameUnique(Goods goods); + String checkGoodsNameUnique(Goods goods); /** * 校验商品编码是否重复 + * * @param goods 商品属性 * @return 校验结果 1存在 0不存在 */ - public String checkGoodsCodeUnique(Goods goods); + String checkGoodsCodeUnique(Goods goods); } diff --git a/ghy-goods/src/main/java/com/ghy/goods/service/impl/GoodsServiceImpl.java b/ghy-goods/src/main/java/com/ghy/goods/service/impl/GoodsServiceImpl.java index 29e82c9e..f9f201ed 100644 --- a/ghy-goods/src/main/java/com/ghy/goods/service/impl/GoodsServiceImpl.java +++ b/ghy-goods/src/main/java/com/ghy/goods/service/impl/GoodsServiceImpl.java @@ -6,14 +6,19 @@ import com.ghy.common.exception.ServiceException; import com.ghy.common.utils.StringUtils; import com.ghy.goods.domain.Goods; import com.ghy.goods.mapper.GoodsMapper; +import com.ghy.goods.request.AppGoodsRequest; import com.ghy.goods.service.GoodsService; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.Assert; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.List; /** - * 商品模块实现类 + * 商品模块实现类 + * * @author clunt */ @Service @@ -23,8 +28,33 @@ public class GoodsServiceImpl implements GoodsService { private GoodsMapper goodsMapper; @Override + public boolean checkStore(List goodsList) { + for (AppGoodsRequest goods : goodsList) { + int num = goodsMapper.checkAGoodsStore(goods); + if (num == 0) { + return false; + } + } + return true; + } + + @Override + public BigDecimal calculate(List goodsList) { + BigDecimal totalPay = BigDecimal.ZERO; + for (AppGoodsRequest appGoodsRequest : goodsList){ + Goods goods = goodsMapper.selectById(appGoodsRequest.getGoodsId()); + totalPay = totalPay.add(goods.getGoodsPrice().multiply(BigDecimal.valueOf(appGoodsRequest.getNum()))); + } + return totalPay; + } + + @Override + @Transactional(rollbackFor = Exception.class) public int insertGoods(Goods goods) { - return goodsMapper.insertGoods(goods); + goodsMapper.insertGoods(goods); + Assert.notNull(goods.getGoodsId(), "操作失败"); + String code = String.format("GD%019d", goods.getGoodsId()); + return goodsMapper.setCode(goods.getGoodsId(), code); } @Override @@ -45,11 +75,9 @@ public class GoodsServiceImpl implements GoodsService { @Override public int deleteGoodsByIds(String ids) { Long[] goodsIds = Convert.toLongArray(ids); - for (Long goodsId : goodsIds) - { + for (Long goodsId : goodsIds) { Goods goods = selectById(goodsId); - if (countUserGoodsById(goods) > 0) - { + if (countUserGoodsById(goods) > 0) { throw new ServiceException(String.format("%1$s正在使用,不能删除", goods.getGoodsName())); } } @@ -60,8 +88,7 @@ public class GoodsServiceImpl implements GoodsService { public String checkGoodsNameUnique(Goods goods) { Long goodsId = StringUtils.isNull(goods.getGoodsId()) ? -1L : goods.getGoodsId(); Goods info = goodsMapper.checkGoodsNameUnique(goods.getGoodsName()); - if (StringUtils.isNotNull(info) && info.getGoodsId().longValue() != goodsId.longValue()) - { + if (StringUtils.isNotNull(info) && info.getGoodsId().longValue() != goodsId.longValue()) { return UserConstants.GOODS_NAME_NOT_UNIQUE; } return UserConstants.GOODS_NAME_UNIQUE; @@ -71,15 +98,14 @@ public class GoodsServiceImpl implements GoodsService { public String checkGoodsCodeUnique(Goods goods) { Long goodsId = StringUtils.isNull(goods.getGoodsId()) ? -1L : goods.getGoodsId(); Goods info = goodsMapper.checkGoodsCodeUnique(goods.getGoodsCode()); - if (StringUtils.isNotNull(info) && info.getGoodsId().longValue() != goodsId.longValue()) - { + if (StringUtils.isNotNull(info) && info.getGoodsId().longValue() != goodsId.longValue()) { return UserConstants.GOODS_CODE_NOT_UNIQUE; } return UserConstants.GOODS_CODE_UNIQUE; } - public int countUserGoodsById(Goods goods){ + public int countUserGoodsById(Goods goods) { //TODO 校验商品是否上架 return 0; } diff --git a/ghy-goods/src/main/resources/mapper/goods/GoodsMapper.xml b/ghy-goods/src/main/resources/mapper/goods/GoodsMapper.xml index 65ff4dea..d23a63b8 100644 --- a/ghy-goods/src/main/resources/mapper/goods/GoodsMapper.xml +++ b/ghy-goods/src/main/resources/mapper/goods/GoodsMapper.xml @@ -30,11 +30,15 @@ FROM goods + + UPDATE goods - goods_code = #{goodsCode}, - dept_id = #{deptId}, goods_name = #{goodsName}, goods_price = #{goodsPrice}, discounts_price = #{discountsPrice}, @@ -52,6 +56,12 @@ WHERE goods_id = #{goodsId} + + UPDATE goods + SET goods_code = #{goodsCode}, update_time = sysdate() + WHERE goods_id = #{goodsId} + + insert into goods( goods_code, diff --git a/ghy-order/pom.xml b/ghy-order/pom.xml index 5816f19b..fd44c1fb 100644 --- a/ghy-order/pom.xml +++ b/ghy-order/pom.xml @@ -23,6 +23,11 @@ ghy-common + + com.ghy + ghy-goods + + diff --git a/ghy-order/src/main/java/com/ghy/order/mapper/OrderMasterMapper.java b/ghy-order/src/main/java/com/ghy/order/mapper/OrderMasterMapper.java index 6825bf1d..81692d6d 100644 --- a/ghy-order/src/main/java/com/ghy/order/mapper/OrderMasterMapper.java +++ b/ghy-order/src/main/java/com/ghy/order/mapper/OrderMasterMapper.java @@ -49,4 +49,11 @@ public interface OrderMasterMapper { */ OrderMaster checkOrderMasterCodeUnique(String orderMasterCode); + /** + * 用 OrderMaster 查询主订单信息 + * + * @param orderMasterCode 主订单code + * @return 主订单信息 + */ + OrderMaster selectByCode(String orderMasterCode); } diff --git a/ghy-order/src/main/java/com/ghy/order/request/AppOrderRequest.java b/ghy-order/src/main/java/com/ghy/order/request/AppOrderRequest.java new file mode 100644 index 00000000..86a5240a --- /dev/null +++ b/ghy-order/src/main/java/com/ghy/order/request/AppOrderRequest.java @@ -0,0 +1,36 @@ +package com.ghy.order.request; + +import com.ghy.goods.request.AppGoodsRequest; +import lombok.Data; + +import java.util.List; + +/** + * 小程序下单请求体 + * @author clunt + */ +@Data +public class AppOrderRequest { + + // 消费者id + private Long customerId; + + // 用于计算价格等 + private List goodsList; + + // 预约上门时间 + private String serverTime; + + // 地址 + private Long addressId; + + // 支付方式 + private Integer payType; + + //是否需要发票 + private Integer isNeedBill; + + // 备注 + private String remark; + +} diff --git a/ghy-order/src/main/java/com/ghy/order/service/OrderMasterService.java b/ghy-order/src/main/java/com/ghy/order/service/OrderMasterService.java index 3c64b78b..f0f5be7a 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/OrderMasterService.java +++ b/ghy-order/src/main/java/com/ghy/order/service/OrderMasterService.java @@ -1,6 +1,7 @@ package com.ghy.order.service; import com.ghy.order.domain.OrderMaster; +import com.ghy.order.request.AppOrderRequest; import java.util.List; @@ -11,6 +12,8 @@ import java.util.List; */ public interface OrderMasterService { + OrderMaster createMasterOrder(AppOrderRequest appOrderRequest); + /** * @param orderMaster 主订单属性 * @return 成功条数 @@ -36,6 +39,14 @@ public interface OrderMasterService { */ OrderMaster selectById(Long orderMasterId); + /** + * 用 OrderMaster 查询主订单信息 + * + * @param orderMasterCode 主订单code + * @return 主订单信息 + */ + OrderMaster selectByCode(String orderMasterCode); + /** * @param ids 主订单ids * @return 删除结果 diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java index 3252b917..fc0cdb8c 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java @@ -4,6 +4,7 @@ import com.ghy.common.constant.UserConstants; import com.ghy.common.core.text.Convert; import com.ghy.order.domain.OrderMaster; import com.ghy.order.mapper.OrderMasterMapper; +import com.ghy.order.request.AppOrderRequest; import com.ghy.order.service.OrderMasterService; import org.springframework.stereotype.Service; @@ -21,6 +22,11 @@ public class OrderMasterServiceImpl implements OrderMasterService { @Resource private OrderMasterMapper orderMasterMapper; + @Override + public OrderMaster createMasterOrder(AppOrderRequest appOrderRequest) { + return null; + } + @Override public int insertOrderMaster(OrderMaster orderMaster) { return orderMasterMapper.insertOrderMaster(orderMaster); @@ -41,6 +47,11 @@ public class OrderMasterServiceImpl implements OrderMasterService { return orderMasterMapper.selectById(orderMasterId); } + @Override + public OrderMaster selectByCode(String orderMasterCode) { + return orderMasterMapper.selectByCode(orderMasterCode); + } + @Override public int deleteOrderMasterByIds(String ids) { Long[] orderMasterIds = Convert.toLongArray(ids); diff --git a/ghy-order/src/main/resources/mapper/OrderMasterMapper.xml b/ghy-order/src/main/resources/mapper/OrderMasterMapper.xml index f2f895f8..a1ec8df0 100644 --- a/ghy-order/src/main/resources/mapper/OrderMasterMapper.xml +++ b/ghy-order/src/main/resources/mapper/OrderMasterMapper.xml @@ -133,4 +133,9 @@ WHERE `code` =#{orderMasterCode} LIMIT 1 + + \ No newline at end of file