DESKTOP-71BH0QO\L、ming
2021-04-17 f721ee13dc5f95f607bb25b09f73cae6a7123ed9
Merge remote-tracking branch 'origin/master'

# Conflicts:
# springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/PageShopStoreVO.java
# springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
# springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ShopApi.java
# springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopGoodsServiceImpl.java
# springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopStoreServiceImpl.java
28个文件已修改
30个文件已添加
3509 ■■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/ShopApi.java 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/auth/src/main/java/com/panzhihua/auth/api/LoginApi.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/auth/src/main/java/com/panzhihua/auth/service/LoginService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/auth/src/main/java/com/panzhihua/auth/service/impl/LoginServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/interfaces/ShopOperLog.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/ComShopAddressDTO.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/ComShopCartDTO.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/ComShopEditNubCartDTO.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/ComShopGoodsDTO.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/ComShopOrderCreateDTO.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/ComShopOrderCreateGoodsDTO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/ComShopOrderPreviewDTO.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/ComShopOrderQueryDTO.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/PageComOrderListDTO.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/PageComShopAddressDTO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/PageComShopOrderSearchDTO.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/PageComShopStoreDTO.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopCartListVO.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopCartStoreVO.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopCartVO.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopGoodsAttrVO.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopGoodsVO.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopOrderGoodsVO.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopOrderPageVO.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopOrderPreviewVO.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopOrderSearchVO.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopOrderVO.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopUserAddressVO.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/OrderStatisticsVO.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/PageShopStoreVO.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ShopOperLogVO.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/auth/TokenService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/IdCardUtil.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/OrderNoUtils.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ShopApi.java 241 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComShopGoodsDAO.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComShopOperLogDAO.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComShopOrderDAO.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComShopUserAddressDAO.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComShopGoodsDO.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComShopOperLogDO.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComShopOrderDO.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComShopOrderOperateDO.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComShopStoreDO.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComShopUserAddressDO.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComShopCartService.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComShopGoodsService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComShopOperLogService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComShopOrderService.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComShopStoreService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComShopUserAddressService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopCartServiceImpl.java 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopGoodsServiceImpl.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopOperLogServiceImpl.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopOrderServiceImpl.java 513 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopStoreServiceImpl.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopUserAddressServiceImpl.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/ShopApi.java
New file
@@ -0,0 +1,210 @@
package com.panzhihua.applets.api;
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.model.dtos.shop.*;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.shop.*;
import com.panzhihua.common.service.community.CommunityService;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:49
 * @describe 商城模块API
 */
@Slf4j
@RestController
@RequestMapping("/shop/")
@Api(tags = {"商城服务"})
public class ShopApi extends BaseController {
    @Resource
    private CommunityService communityService;
    @ApiOperation(value = "分页查询店铺" , response = ComShopStoreVO.class)
    @PostMapping("pageshopstore")
    public R pageShopStore(@RequestBody PageComShopStoreDTO comShopStoreDTO) {
        return communityService.pageShopStore(comShopStoreDTO);
    }
    @ApiOperation(value = "查询店铺详情" , response = ComShopStoreVO.class)
    @PostMapping("shopstoredetail")
    public R shopStoreDetail(@RequestBody PageComShopStoreDTO comShopStoreDTO) {
        if(comShopStoreDTO == null || comShopStoreDTO.getStoreId() == null){
            return R.fail("参数错误");
        }
        return communityService.shopStoreDetail(comShopStoreDTO);
    }
    @ApiOperation(value = "分页查询商品列表" , response = ComShopGoodsVO.class)
    @PostMapping("pageShopGoods")
    public R pageShopGoods(@RequestBody ComShopGoodsDTO comShopGoodsDTO) {
        return communityService.pageShopGoods(comShopGoodsDTO);
    }
    @ApiOperation(value = "查询商品详情" , response = ComShopGoodsVO.class)
    @PostMapping("shopGoodsDetail")
    @ApiImplicitParam(name = "goodsId",value = "商品id",required = true)
    public R shopGoodsDetail(@RequestParam("goodsId") Long goodsId) {
        return communityService.shopGoodsDetail(goodsId);
    }
    @ApiOperation(value = "查询用户购物车列表" , response = ComShopCartVO.class)
    @PostMapping("shopCartList")
    public R shopCartList() {
        Long userId = this.getUserId();
        if(userId == null){
            return R.fail("请重新登陆");
        }
        return communityService.shopCartList(userId);
    }
    @ApiOperation(value = "购物车添加")
    @PostMapping("shopAddCart")
    public R shopAddCart(@RequestBody ComShopCartDTO comShopCartDTO) {
        Long userId = this.getUserId();
        if(userId == null){
            return R.fail("请重新登陆");
        }
        comShopCartDTO.setUserId(userId);
        return communityService.shopAddCart(comShopCartDTO);
    }
    @ApiOperation(value = "购物车修改")
    @PostMapping("shopEditNubCart")
    public R shopEditNubCart(@RequestBody ComShopEditNubCartDTO shopEditNubCartDTO) {
        return communityService.shopEditNubCart(shopEditNubCartDTO);
    }
    @ApiOperation(value = "购物车删除")
    @PostMapping("shopDelCart")
    public R shopDelCart(@RequestBody List<Long> Ids) {
        return communityService.shopDelCart(Ids);
    }
    @ApiOperation(value = "查询用户收货地址列表" , response = ComShopUserAddressVO.class)
    @PostMapping("shopUserAddressList")
    public R shopUserAddressList(@RequestBody PageComShopAddressDTO comShopAddressDTO) {
        Long userId = this.getUserId();
        if(userId == null){
            return R.fail("请重新登陆");
        }
        comShopAddressDTO.setUserId(userId);
        return communityService.shopUserAddressList(comShopAddressDTO);
    }
    @ApiOperation(value = "添加用户收货地址列表")
    @PostMapping("shopAddUserAddress")
    public R shopAddUserAddress(@RequestBody ComShopAddressDTO comShopAddressDTO) {
        Long userId = this.getUserId();
        if(userId == null){
            return R.fail("请重新登陆");
        }
        comShopAddressDTO.setUserId(userId);
        return communityService.shopAddUserAddress(comShopAddressDTO);
    }
    @ApiOperation(value = "修改用户收货地址列表")
    @PostMapping("shopEditUserAddress")
    public R shopEditUserAddress(@RequestBody ComShopAddressDTO comShopAddressDTO) {
        Long userId = this.getUserId();
        if(userId == null){
            return R.fail("请重新登陆");
        }
        comShopAddressDTO.setUserId(userId);
        return communityService.shopEditUserAddress(comShopAddressDTO);
    }
    @ApiOperation(value = "删除用户收货地址列表")
    @PostMapping("shopDelUserAddress")
    @ApiImplicitParam(name = "addressId",value = "收货地址id",required = true)
    public R shopDelUserAddress(@RequestParam("addressId") Long addressId) {
        return communityService.shopDelUserAddress(addressId);
    }
    @ApiOperation(value = "订单预览", response = ComShopOrderPreviewVO.class)
    @PostMapping("orderPreview")
    public R orderPreview(@RequestBody ComShopOrderPreviewDTO orderPreviewDTO) {
        Long userId = this.getUserId();
        if(userId == null){
            return R.fail("请重新登陆");
        }
        orderPreviewDTO.setUserId(userId);
        return communityService.orderPreview(orderPreviewDTO);
    }
    @ApiOperation(value = "创建订单", response = ComShopOrderVO.class)
    @PostMapping("orderCreate")
    public R orderCreate(@RequestBody ComShopOrderCreateDTO orderCreateDTO) {
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        if(loginUserInfo == null){
            return R.fail("请重新登陆");
        }
        orderCreateDTO.setUserId(loginUserInfo.getUserId());
        orderCreateDTO.setPhone(loginUserInfo.getPhone());
        return communityService.orderCreate(orderCreateDTO);
    }
    @ApiOperation(value = "分页查询订单列表", response = ComShopOrderPageVO.class)
    @PostMapping("pageOrderList")
    public R pageOrderList(@RequestBody PageComOrderListDTO comOrderListDTO) {
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        if(loginUserInfo == null){
            return R.fail("请重新登陆");
        }
        comOrderListDTO.setUserId(loginUserInfo.getUserId());
        return communityService.pageOrderList(comOrderListDTO);
    }
    @ApiOperation(value = "查询订单详情", response = ComShopOrderPageVO.class)
    @PostMapping("orderDetail")
    @ApiImplicitParam(name = "orderId",value = "订单id",required = true)
    public R orderDetail(@RequestParam("orderId") Long orderId) {
        return communityService.orderDetail(orderId);
    }
    @ApiOperation(value = "取消订单")
    @PostMapping("orderCancel")
    public R orderCancel(@RequestBody ComShopOrderQueryDTO comShopOrderQueryDTO) {
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        if(loginUserInfo == null){
            return R.fail("请重新登陆");
        }
        return communityService.orderCancel(comShopOrderQueryDTO);
    }
    @ApiOperation(value = "删除订单")
    @PostMapping("orderDelete")
    @ApiImplicitParam(name = "orderId",value = "订单id",required = true)
    public R orderDelete(@RequestParam("orderId") Long orderId) {
        return communityService.orderDelete(orderId);
    }
    @ApiOperation(value = "订单确认收货")
    @PostMapping("orderConfirm")
    public R orderConfirm(@RequestBody ComShopOrderQueryDTO comShopOrderQueryDTO) {
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        if(loginUserInfo == null){
            return R.fail("请重新登陆");
        }
        return communityService.orderConfirm(comShopOrderQueryDTO);
    }
    @ApiOperation(value = "统计当前用户订单", response = OrderStatisticsVO.class)
    @PostMapping("orderStatistics")
    public R orderStatistics() {
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        if(loginUserInfo == null){
            return R.fail("请重新登陆");
        }
        return communityService.orderStatistics(loginUserInfo.getUserId());
    }
}
springcloud_k8s_panzhihuazhihuishequ/auth/src/main/java/com/panzhihua/auth/api/LoginApi.java
@@ -107,5 +107,16 @@
        return R.ok(loginReturnVO);
    }
    /**
     * 商家后台登录
     * @param account 账户
     * @param password 密码
     * @return 登录结果
     */
    @PostMapping("/loginShopBackStage")
    public R loginShopBackStage(@RequestParam("account") String account, @RequestParam("password")String password){
        LoginReturnVO loginReturnVO =loginService.loginShopBackStage(account,password);
        return R.ok(loginReturnVO);
    }
}
springcloud_k8s_panzhihuazhihuishequ/auth/src/main/java/com/panzhihua/auth/service/LoginService.java
@@ -39,4 +39,12 @@
     * @return 登录结果
     */
    LoginReturnVO loginCommunityBackage(String account, String password);
    /**
     * 商家后台登录
     * @param account 账户
     * @param password 密码
     * @return 登录结果
     */
    LoginReturnVO loginShopBackStage(String account, String password);
}
springcloud_k8s_panzhihuazhihuishequ/auth/src/main/java/com/panzhihua/auth/service/impl/LoginServiceImpl.java
@@ -104,5 +104,25 @@
        return loginReturnVO;
    }
    /**
     * 商家后台登录
     *
     * @param account  账户
     * @param password 密码
     * @return 登录结果
     */
    @Override
    public LoginReturnVO loginShopBackStage(String account, String password) {
        Authentication authentication = null;
        authentication = authenticationManager
                .authenticate(new UsernamePasswordAuthenticationToken(account+"_5", password));
        LoginUserInfoVO loginUser = (LoginUserInfoVO) authentication.getPrincipal();
        String token = JWTTokenUtil.generateToken(loginUser);
        String refeshToken = JWTTokenUtil.generateRefeshToken(loginUser);
        LoginReturnVO loginReturnVO=new LoginReturnVO();
        loginReturnVO.setToken(token);
        loginReturnVO.setRefreshToken(refeshToken);
        return loginReturnVO;
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/interfaces/ShopOperLog.java
New file
@@ -0,0 +1,32 @@
package com.panzhihua.common.interfaces;
import java.lang.annotation.*;
/**
 * 商城后台操作日志注解
 * @author wu
 */
@Target(ElementType.METHOD) //注解放置的目标位置,METHOD是可注解在方法级别上
@Retention(RetentionPolicy.RUNTIME) //注解在哪个阶段执行
@Documented
public @interface ShopOperLog {
    String operModul() default "shop";
    /**
     * 操作类型
     * 1.登录
     * 2.修改密码
     * 3.添加商品
     * 4.编辑商品
     * 5.下架商品
     * 6.上架商品
     * 7.删除商品
     * 8.取消订单
     * 9.发货
     * 10.配送
     * 11.查看订单详情
     * 12.导出订单
     * 13.导出资金流水
     * @return
     */
    int operType() default 0;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/ComShopAddressDTO.java
New file
@@ -0,0 +1,52 @@
package com.panzhihua.common.model.dtos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:14
 * @describe 分页查询店铺
 */
@Data
@ApiModel("分页查询店铺")
public class ComShopAddressDTO {
    @ApiModelProperty(value = "用户id",hidden = true)
    private Long userId;
    @ApiModelProperty("用户收货地址id")
    private Long addressId;
    @ApiModelProperty("收货人名称")
    private String name;
    @ApiModelProperty("收货人手机号")
    private String phone;
    @ApiModelProperty("收货人省份编码")
    private String provinceCode;
    @ApiModelProperty("收货人城市编码")
    private String cityCode;
    @ApiModelProperty("收货人区县编码")
    private String districtCode;
    @ApiModelProperty("收货人详细地址")
    private String detailAddress;
    @ApiModelProperty("是否是默认地址(1.是  2.否)")
    private Integer isDefault;
    @ApiModelProperty("收货人省份名称")
    private String provinceName;
    @ApiModelProperty("收货人城市名称")
    private String cityName;
    @ApiModelProperty("收货人区/县名称")
    private String districtName;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/ComShopCartDTO.java
New file
@@ -0,0 +1,39 @@
package com.panzhihua.common.model.dtos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:14
 * @describe 购物车
 */
@Data
@ApiModel("购物车")
public class ComShopCartDTO {
    /**
     * 商品id
     */
    @ApiModelProperty(value = "商品名称",required = true)
    private Long goodsId;
    /**
     * 商品规格id
     */
    @ApiModelProperty(value = "商品规格id",required = true)
    private Long goodsAttrId;
    /**
     * 数量
     */
    @ApiModelProperty(value = "数量",required = true)
    private Integer number;
    /**
     * 用户id
     */
    @ApiModelProperty(value = "用户id",hidden = true)
    private Long userId;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/ComShopEditNubCartDTO.java
New file
@@ -0,0 +1,21 @@
package com.panzhihua.common.model.dtos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:14
 * @describe 购物车修改
 */
@Data
@ApiModel("购物车修改")
public class ComShopEditNubCartDTO {
    @ApiModelProperty(value = "购物车id",required = true)
    private Long cartId;
    @ApiModelProperty(value = "购物车商品数量",required = true)
    private Integer number;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/ComShopGoodsDTO.java
New file
@@ -0,0 +1,33 @@
package com.panzhihua.common.model.dtos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:14
 * @describe 查询商品请求参数
 */
@Data
@ApiModel("查询商品请求参数")
public class ComShopGoodsDTO {
    @ApiModelProperty(value = "分页-当前页数",example = "1")
    private Long pageNum = 1L;
    @ApiModelProperty(value = "分页-每页记录数",example = "10")
    private Long pageSize = 10L;
    @ApiModelProperty("商品名称")
    private String name;
    @ApiModelProperty("店铺id")
    private Long storeId;
    @ApiModelProperty("商品状态(1.出售中  2.已下架  3.回收站)")
    private Integer status;
    @ApiModelProperty("配送方式(1.商家配送  2.快递物流)")
    private Integer deliveryType;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/ComShopOrderCreateDTO.java
New file
@@ -0,0 +1,47 @@
package com.panzhihua.common.model.dtos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:14
 * @describe 创建订单请求参数
 */
@Data
@ApiModel("创建订单请求参数")
public class ComShopOrderCreateDTO {
    @ApiModelProperty(value = "用户id",hidden = true)
    private Long userId;
    @ApiModelProperty(value = "用户手机号",hidden = true)
    private String phone;
    @ApiModelProperty(value = "用户收货地址id",required = true)
    private Long receiverId;
    @ApiModelProperty(value = "订单备注")
    private String remark;
    @ApiModelProperty(value = "提交订单商品列表",required = true)
    private List<ComShopOrderCreateGoodsDTO> orderGoodsList;
    @ApiModelProperty(value = "提交类型(1.商品详情提交 2.购物车提交)",required = true)
    private Integer submitType;
    @ApiModelProperty(value = "购物车记录id集合(当提交类型为2时,此字段必填)")
    private List<Long> cartIds;
    /**
     * 提交类型(1.商品详情提交 2.购物车提交)
     */
    public interface submitType{
        int details = 1;
        int cart = 2;
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/ComShopOrderCreateGoodsDTO.java
New file
@@ -0,0 +1,24 @@
package com.panzhihua.common.model.dtos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:14
 * @describe 创建订单商品信息请求参数
 */
@Data
@ApiModel("创建订单商品信息请求参数")
public class ComShopOrderCreateGoodsDTO {
    @ApiModelProperty(value = "商品id")
    private Long goodsId;
    @ApiModelProperty(value = "商品规格id")
    private Long goodsAttrId;
    @ApiModelProperty(value = "购买数量")
    private Integer num;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/ComShopOrderPreviewDTO.java
New file
@@ -0,0 +1,63 @@
package com.panzhihua.common.model.dtos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:14
 * @describe 订单预览请求参数
 */
@Data
@ApiModel("订单预览请求参数")
public class ComShopOrderPreviewDTO {
    /**
     * 提交类型(1.商品详情提交 2.购物车提交)
     */
    @ApiModelProperty(value = "提交类型(1.商品详情提交 2.购物车提交)",required = true)
    private Integer submitType;
    /**
     * 商品id(当提交类型为1时,此字段必填)
     */
    @ApiModelProperty(value = "商品id(当提交类型为1时,此字段必填)")
    private Long goodsId;
    /**
     * 商品规格id(当提交类型为1时,此字段必填)
     */
    @ApiModelProperty(value = "商品规格id(当提交类型为1时,此字段必填)")
    private Long goodsAttrId;
    /**
     * 购买数量(当提交类型为1时,此字段必填)
     */
    @ApiModelProperty(value = "购买数量(当提交类型为1时,此字段必填)")
    private Integer buyNum;
    /**
     * 购物车记录id集合(当提交类型为2时,此字段必填)
     */
    @ApiModelProperty(value = "提交类型(1.商品详情提交 2.购物车提交)")
    private List<Long> cartIds;
    /**
     * 用户id
     */
    @ApiModelProperty(value = "用户id",hidden = true)
    private Long userId;
    /**
     * 提交类型(1.商品详情提交 2.购物车提交)
     */
    public interface submitType{
        int details = 1;
        int cart = 2;
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/ComShopOrderQueryDTO.java
New file
@@ -0,0 +1,21 @@
package com.panzhihua.common.model.dtos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:14
 * @describe 请求参数
 */
@Data
@ApiModel("请求参数")
public class ComShopOrderQueryDTO {
    @ApiModelProperty(value = "订单id")
    private Long orderId;
    @ApiModelProperty(value = "手机号",hidden = true)
    private String phone;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/PageComOrderListDTO.java
New file
@@ -0,0 +1,26 @@
package com.panzhihua.common.model.dtos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:14
 * @describe 分页查询订单列表
 */
@Data
@ApiModel("分页查询订单列表")
public class PageComOrderListDTO {
    @ApiModelProperty(value = "分页-当前页数",example = "1")
    private Long pageNum = 1L;
    @ApiModelProperty(value = "分页-每页记录数",example = "10")
    private Long pageSize = 10L;
    @ApiModelProperty(value = "订单状态(1.待付款 2.代发货 3.待收货 4.待评价 5.已完成 6.已取消)")
    private Integer status;
    @ApiModelProperty(value = "用户id",hidden = true)
    private Long userId;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/PageComShopAddressDTO.java
New file
@@ -0,0 +1,24 @@
package com.panzhihua.common.model.dtos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:14
 * @describe 分页查询店铺
 */
@Data
@ApiModel("分页查询店铺")
public class PageComShopAddressDTO {
    @ApiModelProperty(value = "分页-当前页数",example = "1")
    private Long pageNum = 1L;
    @ApiModelProperty(value = "分页-每页记录数",example = "10")
    private Long pageSize = 10L;
    @ApiModelProperty(value = "用户id",hidden = true)
    private Long userId;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/PageComShopOrderSearchDTO.java
New file
@@ -0,0 +1,41 @@
package com.panzhihua.common.model.dtos.shop;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
 * @ClasssName OrderSearchDTO
 * @Description 订单搜索DTO
 * @Author cedoo
 * @Date 2021/4/16
 * @Version 1.0
 **/
@Data
public class PageComShopOrderSearchDTO {
    @ApiModelProperty(value = "订单编号",example = "316356541616")
    private String orderNo;
    @ApiModelProperty(value = "用户账号")
    private String userAccount;
    @ApiModelProperty(value = "收货人",example = "张三")
    private String receiverAccount;
    @ApiModelProperty(value = "收货人电话",example = "13123456789")
    private String receiverPhone;
    @ApiModelProperty(value = "商品",example = "鞋")
    private String goodsName;
    @ApiModelProperty(value = "订单状态(1.待付款 2.代发货 3.待收货 4.待评价 5.已完成 6.已取消)",example = "1")
    private Date status;
    @ApiModelProperty(value = "下单时间-开始",example = "1")
    private String createAtStart;
    @ApiModelProperty(value = "下单时间-结束",example = "1")
    private Date createAtEnd;
    @ApiModelProperty(value = "分页-当前页数",example = "1", required = true)
    private Long pageNum;
    @ApiModelProperty(value = "分页-每页记录数",example = "10", required = true)
    private Long pageSize;
    @JsonIgnore
    private Long userId;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/PageComShopStoreDTO.java
@@ -12,6 +12,9 @@
@Data
@ApiModel("分页查询店铺")
public class PageComShopStoreDTO {
    @ApiModelProperty(value = "分页-当前页数",example = "1")
    private Long pageNum = 1L;
    @ApiModelProperty(value = "商家姓名")
    private String contacts;
    @ApiModelProperty(value = "商家账号")
@@ -22,10 +25,10 @@
    private Integer deliveryType;
    @ApiModelProperty(value = "店铺状态(1.启用  2.禁用)")
    private Integer status;
    @ApiModelProperty(value = "分页-当前页数", example = "1")
    private Long pageNum;
    @ApiModelProperty(value = "分页-每页记录数", example = "10")
    private Long pageSize;
    @ApiModelProperty(value = "分页-每页记录数",example = "10")
    private Long pageSize = 10L;
    @ApiModelProperty("店铺id")
    private Long storeId;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopCartListVO.java
New file
@@ -0,0 +1,30 @@
package com.panzhihua.common.model.vos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:14
 * @describe 购物车列表信息
 */
@Data
@ApiModel("购物车列表信息")
public class ComShopCartListVO {
    /**
     * 有效宝贝购物车信息
     */
    @ApiModelProperty("有效宝贝购物车信息")
    private List<ComShopCartStoreVO> cartList;
    /**
     * 失效宝贝购物车信息
     */
    @ApiModelProperty("失效宝贝购物车信息")
    private List<ComShopCartVO> invalidCartList;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopCartStoreVO.java
New file
@@ -0,0 +1,42 @@
package com.panzhihua.common.model.vos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:14
 * @describe 有效购物车信息
 */
@Data
@ApiModel("有效购物车信息")
public class ComShopCartStoreVO {
    /**
     * 店铺id
     */
    @ApiModelProperty("店铺id")
    private Long storeId;
    /**
     * 店铺名称
     */
    @ApiModelProperty("店铺名称")
    private String storeName;
    /**
     * 店铺logo
     */
    @ApiModelProperty("店铺logo")
    private String storeLogo;
    /**
     * 店铺下购物车信息
     */
    @ApiModelProperty("店铺下购物车信息")
    private List<ComShopCartVO> cartList;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopCartVO.java
New file
@@ -0,0 +1,71 @@
package com.panzhihua.common.model.vos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:14
 * @describe 购物车信息
 */
@Data
@ApiModel("购物车信息")
public class ComShopCartVO {
    /**
     * 购物车id
     */
    @ApiModelProperty("购物车id")
    private Long id;
    /**
     * 商品id
     */
    @ApiModelProperty("商品id")
    private Long goodsId;
    /**
     * 商品名字
     */
    @ApiModelProperty("商品名字")
    private String goodsName;
    /**
     * 店铺id
     */
    @ApiModelProperty("店铺id")
    private Long storeId;
    /**
     * 商品规格id
     */
    @ApiModelProperty("商品规格id")
    private Long goodsAttrId;
    /**
     * 商品规格信息
     */
    @ApiModelProperty("商品规格信息")
    private String goodsAttr;
    /**
     * 商品规格图
     */
    @ApiModelProperty("商品规格图")
    private String goodsAttrPic;
    /**
     * 商品数量
     */
    @ApiModelProperty("商品数量")
    private Integer amount;
    /**
     * 商品价格
     */
    @ApiModelProperty("商品价格")
    private BigDecimal price;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopGoodsAttrVO.java
New file
@@ -0,0 +1,77 @@
package com.panzhihua.common.model.vos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:14
 * @describe 商品规格信息
 */
@Data
@ApiModel("商品规格信息")
public class ComShopGoodsAttrVO {
    /**
     * 商品规格id
     */
    @ApiModelProperty("商品规格id")
    private Long id;
    /**
     * 商品id
     */
    @ApiModelProperty("商品id")
    private Long goodsId;
    /**
     * 店铺id
     */
    @ApiModelProperty("店铺id")
    private Long storeId;
    /**
     * 商品名称
     */
    @ApiModelProperty("商品名称")
    private String goodsName;
    /**
     * 商品规格
     */
    @ApiModelProperty("商品规格")
    private String goodsAttr;
    /**
     * 商品规格库存
     */
    @ApiModelProperty("商品规格库存")
    private Integer stock;
    /**
     * 商品规格销量
     */
    @ApiModelProperty("商品规格销量")
    private Integer sale;
    /**
     * 商品规格图
     */
    @ApiModelProperty("商品规格图")
    private String attrPic;
    /**
     * 是否是默认规格(1.是  2.否)
     */
    @ApiModelProperty("是否是默认规格(1.是  2.否)")
    private Integer isDefault;
    /**
     * 规格价格
     */
    @ApiModelProperty("规格价格")
    private BigDecimal price;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopGoodsVO.java
New file
@@ -0,0 +1,114 @@
package com.panzhihua.common.model.vos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:14
 * @describe 商品信息
 */
@Data
@ApiModel("商品信息")
public class ComShopGoodsVO {
    /**
     * 商品id
     */
    @ApiModelProperty("商品id")
    private Long id;
    /**
     * 商品名称
     */
    @ApiModelProperty("商品名称")
    private String name;
    /**
     * 店铺id
     */
    @ApiModelProperty("店铺id")
    private Long storeId;
    /**
     * 商品主图
     */
    @ApiModelProperty("商品主图")
    private String goodsPic;
    /**
     * 商品展示图
     */
    @ApiModelProperty("商品展示图")
    private String images;
    /**
     * 商品状态(1.出售中  2.已下架  3.回收站)
     */
    @ApiModelProperty("商品状态(1.出售中  2.已下架  3.回收站)")
    private Integer status;
    /**
     * 商品销量
     */
    @ApiModelProperty("商品销量")
    private Integer sale;
    /**
     * 商品原价
     */
    @ApiModelProperty("商品原价")
    private BigDecimal originalPrice;
    /**
     * 商品现价
     */
    @ApiModelProperty("商品现价")
    private BigDecimal price;
    /**
     * 商品单位
     */
    @ApiModelProperty("商品单位")
    private String unit;
    /**
     * 商品排序
     */
    @ApiModelProperty("商品排序")
    private Integer order;
    /**
     * 商品总库存
     */
    @ApiModelProperty("商品总库存")
    private Integer stock;
    /**
     * 商品详情
     */
    @ApiModelProperty("商品详情")
    private String details;
    /**
     * 配送方式(1.商家配送  2.快递物流)
     */
    @ApiModelProperty("配送方式(1.商家配送  2.快递物流)")
    private Integer deliveryType;
    /**
     * 商品规格列表
     */
    @ApiModelProperty("商品规格列表")
    private List<ComShopGoodsAttrVO> goodsAttrList;
    /**
     * 店铺信息
     */
    @ApiModelProperty("商品店铺信息")
    private ComShopStoreVO shopStoreVO;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopOrderGoodsVO.java
@@ -1,13 +1,54 @@
package com.panzhihua.common.model.vos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @auther llming
 * @describe
 * @auther lyq
 * @create 2021-04-14 15:02:14
 * @describe 订单预览商品参数
 */
@Data
@ApiModel("商品")
@ApiModel("订单预览商品参数")
public class ComShopOrderGoodsVO {
    /**
     * 商品名称
     */
    @ApiModelProperty(value = "商品名称")
    private String goodsName;
    /**
     * 商品图片
     */
    @ApiModelProperty(value = "商品图片")
    private String goodsPic;
    /**
     * 商品价格
     */
    @ApiModelProperty(value = "商品价格")
    private BigDecimal price;
    /**
     * 商品数量
     */
    @ApiModelProperty(value = "商品数量")
    private Integer num;
    /**
     * 商品id
     */
    @ApiModelProperty(value = "商品id")
    private Long goodsId;
    /**
     * 商品规格id
     */
    @ApiModelProperty(value = "商品规格id")
    private Long goodsAttrId;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopOrderPageVO.java
New file
@@ -0,0 +1,75 @@
package com.panzhihua.common.model.vos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@Data
@ApiModel("订单信息")
public class ComShopOrderPageVO {
    @ApiModelProperty(value = "订单号")
    private String orderNo;
    @ApiModelProperty(value = "订单金额")
    private BigDecimal orderTotal;
    @ApiModelProperty(value = "店铺id")
    private Long storeId;
    @ApiModelProperty(value = "订单状态(1.待付款 2.代发货 3.待收货 4.待评价 5.已完成 6.已取消)")
    private Integer status;
    @ApiModelProperty(value = "支付状态(1.未支付 2.已支付)")
    private Integer payStatus;
    @ApiModelProperty(value = "用户收货地址id")
    private Long receiverId;
    @ApiModelProperty(value = "支付金额")
    private BigDecimal payAmount;
    @ApiModelProperty(value = "配送方式")
    private Integer deliveryType;
    @ApiModelProperty(value = "订单备注")
    private String remark;
    @ApiModelProperty(value = "支付方式(1.微信支付)")
    private Integer payType;
    @ApiModelProperty(value = "支付时间")
    private Date payTime;
    @ApiModelProperty(value = "订单发货状态(1.未发货  2.已发货)")
    private Integer deliveryStatus;
    @ApiModelProperty(value = "物流公司")
    private String logisticsCompany;
    @ApiModelProperty(value = "物流单号")
    private String logisticsNo;
    @ApiModelProperty(value = "下单时间")
    private Date createAt;
    @ApiModelProperty(value = "支付单号")
    private String payNo;
    @ApiModelProperty(value = "发货时间")
    private Date deliveryTime;
    @ApiModelProperty(value = "订单下商品信息")
    private List<ComShopOrderGoodsVO> orderGoodsVOList;
    @ApiModelProperty(value = "订单下店铺信息")
    private ComShopStoreVO shopStoreVO;
    @ApiModelProperty(value = "用户收货地址id")
    private ComShopUserAddressVO userAddressVO;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopOrderPreviewVO.java
New file
@@ -0,0 +1,48 @@
package com.panzhihua.common.model.vos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:14
 * @describe 订单预览返回参数
 */
@Data
@ApiModel("订单预览返回参数")
public class ComShopOrderPreviewVO {
    /**
     * 用户默认收货地址
     */
    @ApiModelProperty(value = "用户默认收货地址")
    private ComShopUserAddressVO userAddressVO;
    /**
     * 店铺信息
     */
    @ApiModelProperty(value = "店铺信息")
    private ComShopStoreVO shopStoreVO;
    /**
     * 待购买商品列表
     */
    @ApiModelProperty(value = "待购买商品列表")
    private List<ComShopOrderGoodsVO> orderGoodsList;
    /**
     * 订单总金额
     */
    @ApiModelProperty(value = "订单总金额")
    private BigDecimal orderTotal;
    /**
     * 订单商品总数量
     */
    @ApiModelProperty(value = "订单商品总数量")
    private Integer orderGoodsTotal;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopOrderSearchVO.java
New file
@@ -0,0 +1,82 @@
package com.panzhihua.common.model.vos.shop;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
 * @auther lyq
 * @create 2021-04-14 15:03:01
 * @describe 订单表实体类
 */
@Data
@ApiModel("商品订单")
public class ComShopOrderSearchVO implements Serializable {
    @ApiModelProperty("订单id")
    private Long id;
    @ApiModelProperty("店铺id")
    private Long storeId;
    @ApiModelProperty("用户id")
    private Long userId;
    @ApiModelProperty("订单号")
    private String orderNo;
    @ApiModelProperty("支付单号")
    private String payNo;
    @ApiModelProperty("微信交易单号")
    private String wxTardeNo;
    @ApiModelProperty("订单状态(1.待付款 2.代发货 3.待收货 4.待评价 5.已完成 6.已取消)")
    private Integer status;
    @ApiModelProperty("支付状态(1.未支付 2.已支付)")
    private Integer payStatus;
    @ApiModelProperty("订单收货人id")
    private Long receiverId;
    @ApiModelProperty("订单总金额")
    private BigDecimal totalAmount;
    @ApiModelProperty("优惠总金额")
    private BigDecimal discountAmount;
    @ApiModelProperty("支付总金额")
    private BigDecimal payAmount;
    @ApiModelProperty("支付方式(1.微信支付)")
    private Integer payType;
    @ApiModelProperty("支付时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date payTime;
    @ApiModelProperty("配送方式(1.商家配送  2.快递物流)")
    private Integer deliveryType;
    @ApiModelProperty("订单发货状态(1.未发货  2.已发货)")
    private Integer deliveryStatus;
    @ApiModelProperty("物流公司")
    private String logisticsCompany;
    @ApiModelProperty("物流单号")
    private String logisticsNo;
    @ApiModelProperty("下单时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createAt;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopOrderVO.java
New file
@@ -0,0 +1,19 @@
package com.panzhihua.common.model.vos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel("订单创建返回参数")
public class ComShopOrderVO {
    @ApiModelProperty(value = "订单号")
    private String orderNo;
    @ApiModelProperty(value = "订单金额")
    private BigDecimal orderTotal;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ComShopUserAddressVO.java
New file
@@ -0,0 +1,90 @@
package com.panzhihua.common.model.vos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:14
 * @describe 用户收获地址信息
 */
@Data
@ApiModel("用户收获地址信息")
public class ComShopUserAddressVO {
    /**
     * 主键id
     */
    @ApiModelProperty("用户收获地址id")
    private Long id;
    /**
     * 用户id
     */
    @ApiModelProperty("用户id")
    private Long userId;
    /**
     * 收货人名称
     */
    @ApiModelProperty("收货人名称")
    private String name;
    /**
     * 收货人手机号
     */
    @ApiModelProperty("收货人手机号")
    private String phone;
    /**
     * 收货人省份编码
     */
    @ApiModelProperty("收货人省份编码")
    private String provinceCode;
    /**
     * 收货人省份名称
     */
    @ApiModelProperty("收货人省份名称")
    private String provinceName;
    /**
     * 收货人城市编码
     */
    @ApiModelProperty("收货人城市编码")
    private String cityCode;
    /**
     * 收货人城市名称
     */
    @ApiModelProperty("收货人城市名称")
    private String cityName;
    /**
     * 收货人区县编码
     */
    @ApiModelProperty("收货人区县编码")
    private String districtCode;
    /**
     * 收货人区县名称
     */
    @ApiModelProperty("收货人区县名称")
    private String districtName;
    /**
     * 收货人详细地址
     */
    @ApiModelProperty("收货人详细地址")
    private String detailAddress;
    /**
     * 是否是默认地址(1.是  2.否)
     */
    @ApiModelProperty("是否是默认地址(1.是  2.否)")
    private Integer isDefault;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/OrderStatisticsVO.java
New file
@@ -0,0 +1,26 @@
package com.panzhihua.common.model.vos.shop;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:14
 * @describe 订单统计结果
 */
@Data
@ApiModel("订单统计结果")
public class OrderStatisticsVO {
    @ApiModelProperty(value = "待付款订单数")
    private Integer paymentNum = 0;
    @ApiModelProperty(value = "待发货订单数")
    private Integer deliverNum = 0;
    @ApiModelProperty(value = "待收货订单数")
    private Integer receivingNum = 0;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/PageShopStoreVO.java
@@ -7,6 +7,8 @@
import java.util.Date;
import java.util.List;
/**
 * @auther lyq
@@ -46,4 +48,16 @@
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createAt;
    @ApiModelProperty("店铺详情")
    private String storeDetail;
    @ApiModelProperty("店铺描述")
    private String storeDescribe;
    @ApiModelProperty("店铺销量")
    private Integer sale;
    @ApiModelProperty("店内商品列表")
    private List<ComShopGoodsVO> goodsList;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/shop/ShopOperLogVO.java
New file
@@ -0,0 +1,78 @@
package com.panzhihua.common.model.vos.shop;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
 * @description: 商城后台操作日志
 * @author: cedoo
 * @create: 2021-4-17 10:11:45
 **/
@Data
@ApiModel("操作日志")
public class ShopOperLogVO {
    @ApiModelProperty("日志主键")
    private Long operId;
    @ApiModelProperty("模块标题")
    private String title;
    @ApiModelProperty("业务类型(0其它 1新增 2修改 3删除)")
    private Integer businessType;
    @ApiModelProperty("方法名称")
    private String method;
    @ApiModelProperty("请求方式")
    private String requestMethod;
    @ApiModelProperty("操作类别(0其它 1后台用户 2手机端用户)")
    private Integer operatorType;
    @ApiModelProperty("操作人员")
    private String operName;
    @ApiModelProperty("部门名称")
    private String deptName;
    @ApiModelProperty("请求url")
    private String operUrl;
    @ApiModelProperty("主机地址")
    private String operIp;
    @ApiModelProperty("操作地点")
    private String operLocation;
    @ApiModelProperty("请求参数")
    private String operParam;
    @ApiModelProperty("返回参数")
    private String jsonResult;
    @ApiModelProperty("操作状态(0正常 1异常)")
    private Integer status;
    @ApiModelProperty("错误消息")
    private String errorMsg;
    @ApiModelProperty("操作时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date operTime;
    @ApiModelProperty("社区id")
    private Long communityId;
    @ApiModelProperty("操作账户")
    private String account;
    @ApiModelProperty("用户ID")
    private Long userId;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/auth/TokenService.java
@@ -54,4 +54,13 @@
     */
    @PostMapping("/refreshToken")
    R refreshToken(@RequestParam("refreshToken")String refreshToken);
    /**
     * 商家后台登录
     * @param account 账户
     * @param password 密码
     * @return 登录结果
     */
    @PostMapping("/loginShopBackStage")
    R loginShopBackStage(@RequestParam("account") String account, @RequestParam("password")String password);
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
@@ -1,9 +1,12 @@
package com.panzhihua.common.service.community;
import com.panzhihua.common.model.dtos.AppletesBackstageConfigDTO;
import com.panzhihua.common.model.dtos.PageDTO;
import com.panzhihua.common.model.dtos.advertisement.ComOpsAdvDTO;
import com.panzhihua.common.model.dtos.advertisement.PageComOpsAdvDTO;
import com.panzhihua.common.model.dtos.community.*;
import com.panzhihua.common.model.dtos.shop.PageComShopOrderSearchDTO;
import com.panzhihua.common.model.dtos.shop.*;
import com.panzhihua.common.model.dtos.shop.PageComShopGoodsDTO;
import com.panzhihua.common.model.dtos.shop.PageComShopStoreDTO;
import com.panzhihua.common.model.vos.R;
@@ -12,6 +15,7 @@
import com.panzhihua.common.model.vos.community.questnaire.EditComActQuestnaireVo;
import com.panzhihua.common.model.vos.community.questnaire.QuestnaireVO;
import com.panzhihua.common.model.vos.community.questnaire.UsersAnswerQuestnaireVO;
import com.panzhihua.common.model.vos.shop.ShopOperLogVO;
import com.panzhihua.common.model.vos.shop.AddShopGoodsVO;
import com.panzhihua.common.model.vos.shop.ShopStoreVO;
import com.panzhihua.common.model.vos.user.UserPhoneVO;
@@ -1834,4 +1838,185 @@
     */
    @PostMapping("/shop/changeShopGoodsStatus")
    R changeStatus(@RequestParam("id") Long id,@RequestParam("status")Integer status);
    /**
     * 结果
     * @param shopOperlog 商城后台操作日志
     */
    @PostMapping("/shop/addShopOperLog")
    R addShopOperLog(@RequestBody ShopOperLogVO shopOperlog);
    /**
     * 分页查询 商家后台操作日志
     * @param pageDTO 分页数据
     * @return 分页日志
     */
    @PostMapping("/shop/pageShopOperLog")
    R pageShopOperLog(@RequestBody PageDTO pageDTO);
    /**
     * 分页查询 商家后台操作日志
     * @param pageComShopOrderSearchDTO 分页数据
     * @return 分页日志
     */
    @PostMapping("/shop/order/page")
    R pageShopOrder(@RequestBody PageComShopOrderSearchDTO pageComShopOrderSearchDTO);
    /**
     * 分页查询店铺列表
     * @param comShopStoreDTO   请求参数
     * @return  店铺列表
     */
    @PostMapping("/shop/pageShopStore")
    R pageShopStore(@RequestBody PageComShopStoreDTO comShopStoreDTO);
    /**
     * 根据id查询店铺详情
     * @param comShopStoreDTO   请求参数
     * @return  店铺详情
     */
    @PostMapping("/shop/shopStoreDetail")
    R shopStoreDetail(@RequestBody PageComShopStoreDTO comShopStoreDTO);
    /**
     * 分页查询商品列表
     * @param comShopGoodsDTO   请求参数
     * @return  商品列表
     */
    @PostMapping("/shop/pageShopGoods")
    R pageShopGoods(@RequestBody ComShopGoodsDTO comShopGoodsDTO);
    /**
     * 根据商品id查询商品信息
     * @param goodsId   商品id
     * @return  商品信息
     */
    @PostMapping("/shop/shopGoodsDetail")
    R shopGoodsDetail(@RequestParam("goodsId") Long goodsId);
    /**
     * 查询用户购物车列表
     * @param userId    用户id
     * @return  购物车列表
     */
    @PostMapping("/shop/shopCartList")
    R shopCartList(@RequestParam("userId") Long userId);
    /**
     * 购物车添加
     * @param comShopCartDTO    请求参数
     * @return  购物车列表
     */
    @PostMapping("/shop/shopAddCart")
    R shopAddCart(@RequestBody ComShopCartDTO comShopCartDTO);
    /**
     * 购物车内商品数量修改
     * @param shopEditNubCartDTO    请求参数
     * @return  修改结果
     */
    @PostMapping("/shop/shopEditNubCart")
    R shopEditNubCart(@RequestBody ComShopEditNubCartDTO shopEditNubCartDTO);
    /**
     * 删除购物车记录
     * @param Ids   购物车id集合
     * @return  删除结果
     */
    @PostMapping("/shop/shopDelCart")
    R shopDelCart(@RequestBody List<Long> Ids);
    /**
     * 分页查询用户收货地址列表
     * @param comShopAddressDTO    请求参数
     * @return  用户收货地址列表
     */
    @PostMapping("/shop/shopUserAddressList")
    R shopUserAddressList(@RequestBody PageComShopAddressDTO comShopAddressDTO);
    /**
     * 用户添加收货地址
     * @param comShopAddressDTO 请求参数
     * @return  添加结果
     */
    @PostMapping("/shop/shopAddUserAddress")
    R shopAddUserAddress(@RequestBody ComShopAddressDTO comShopAddressDTO);
    /**
     * 用户修改收货地址
     * @param comShopAddressDTO 请求参数
     * @return  修改结果
     */
    @PostMapping("/shop/shopEditUserAddress")
    R shopEditUserAddress(@RequestBody ComShopAddressDTO comShopAddressDTO);
    /**
     * 用户删除收货地址
     * @param addressId 收货地址id
     * @return  删除结果
     */
    @PostMapping("/shop/shopDelUserAddress")
    R shopDelUserAddress(@RequestParam("addressId") Long addressId);
    /**
     * 订单预览
     * @param orderPreviewDTO   请求参数
     * @return  订单预览数据
     */
    @PostMapping("/shop/orderPreview")
    R orderPreview(@RequestBody ComShopOrderPreviewDTO orderPreviewDTO);
    /**
     * 创建订单
     * @param orderCreateDTO    创建订单请求参数
     * @return  创建结果
     */
    @PostMapping("/shop/orderCreate")
    R orderCreate(@RequestBody ComShopOrderCreateDTO orderCreateDTO);
    /**
     * 分页查询用户订单列表
     * @param comOrderListDTO   请求参数
     * @return  查询结果
     */
    @PostMapping("/shop/pageOrderList")
    R pageOrderList(@RequestBody PageComOrderListDTO comOrderListDTO);
    /**
     * 根据订单id查询订单详情
     * @param orderId   订单id
     * @return  订单详情
     */
    @PostMapping("/shop/orderDetail")
    R orderDetail(@RequestParam("orderId") Long orderId);
    /**
     * 根据订单id取消订单
     * @param comShopOrderQueryDTO   请求参数
     * @return  取消结果
     */
    @PostMapping("/shop/orderCancel")
    R orderCancel(@RequestBody ComShopOrderQueryDTO comShopOrderQueryDTO);
    /**
     * 根据订单id删除订单
     * @param orderId   订单id
     * @return  删除结果
     */
    @PostMapping("/shop/orderDelete")
    R orderDelete(@RequestParam("orderId") Long orderId);
    /**
     * 根据订单id确认收货
     * @param comShopOrderQueryDTO   请求参数
     * @return  确认结果
     */
    @PostMapping("/shop/orderConfirm")
    R orderConfirm(@RequestBody ComShopOrderQueryDTO comShopOrderQueryDTO);
    /**
     * 统计用户订单数量
     * @param userId    用户id
     * @return  统计结果
     */
    @PostMapping("/shop/orderStatistics")
    R orderStatistics(@RequestParam("userId") Long userId);
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/IdCardUtil.java
@@ -166,4 +166,10 @@
        return getVerifyCode(idNumber).equalsIgnoreCase(idNumber.substring(17));
    }
    public static void main(String[] args) {
        String cardNo = "510403201602230324";
        Boolean isok = strongVerifyIdNumber(cardNo);
        System.out.println();
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/OrderNoUtils.java
New file
@@ -0,0 +1,58 @@
package com.panzhihua.common.utlis;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class OrderNoUtils {
    private static int sn = 0;
    public static String NextOrderNo(Long userId) {
        if (sn == 999)
            sn = 0;
        else
            sn++;
        DateFormat df = new SimpleDateFormat("MMddHHmmss");
        return df.format(new Date()) + padRight(String.valueOf(userId), 5, '0') + padRight(String.valueOf(sn), 3, '0') + getRandomNumber();
    }
    public static String padLeft(String src, int len, char ch) {
        int diff = len - src.length();
        if (diff <= 0) {
            return src;
        }
        char[] charr = new char[len];
        System.arraycopy(src.toCharArray(), 0, charr, 0, src.length());
        for (int i = src.length(); i < len; i++) {
            charr[i] = ch;
        }
        return new String(charr);
    }
    public static String padRight(String src, int len, char ch) {
        int diff = len - src.length();
        if (diff <= 0) {
            return src;
        }
        char[] charr = new char[len];
        System.arraycopy(src.toCharArray(), 0, charr, diff, src.length());
        for (int i = 0; i < diff; i++) {
            charr[i] = ch;
        }
        return new String(charr);
    }
    // 防止创建类的实例
    private OrderNoUtils() {
    }
    /**
     * 获取三位随机数
     * @return  三位随机数
     */
    private static String getRandomNumber(){
        return String.valueOf(new Double((Math.random() * 9 + 1) * (Math.pow(10, 3 - 1))).intValue());
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ShopApi.java
@@ -1,17 +1,27 @@
package com.panzhihua.service_community.api;
import com.panzhihua.common.model.dtos.shop.PageComShopGoodsDTO;
import com.panzhihua.common.model.dtos.shop.*;
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.model.dtos.PageDTO;
import com.panzhihua.common.model.dtos.shop.PageComShopOrderSearchDTO;
import com.panzhihua.common.model.dtos.shop.PageComShopStoreDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.shop.AddShopGoodsVO;
import com.panzhihua.service_community.service.*;
import com.panzhihua.common.model.vos.shop.ShopOperLogVO;
import com.panzhihua.common.model.vos.shop.ShopStoreVO;
import com.panzhihua.service_community.service.ComShopGoodsService;
import com.panzhihua.service_community.service.ComShopOperLogService;
import com.panzhihua.service_community.service.ComShopOrderService;
import com.panzhihua.service_community.service.ComShopStoreService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import javax.validation.constraints.NotNull;
@Slf4j
@RestController
@@ -22,6 +32,16 @@
    private ComShopStoreService comShopStoreService;
    @Resource
    private ComShopGoodsService comShopGoodsService;
    @Resource
    private ComShopOperLogService comShopOperLogService;
    @Resource
    private ComShopOrderService comShopOrderService;
    @Resource
    private ComShopGoodsService comShopGoodsService;
    @Resource
    private ComShopCartService comShopCartService;
    @Resource
    private ComShopUserAddressService comShopUserAddressService;
    /**
     * 店铺列表-分页查询
@@ -78,6 +98,227 @@
        return comShopStoreService.getOneInfo(id);
    }
    /**
     * 添加商城后台日志
     *
     * @param shopOperlog 商城日志
     * @return 添加结果
     */
    @PostMapping("/addShopOperLog")
    public R addShopOperLog(@RequestBody ShopOperLogVO shopOperlog) {
        return comShopOperLogService.saveLog(shopOperlog);
    }
    /**
     * 分页查询 商家后台操作日志
     * @param pageDTO 分页数据
     * @return 分页日志
     */
    @PostMapping("/pageShopOperLog")
    public R pageShopOperLog(@RequestBody PageDTO pageDTO) {
        return comShopOperLogService.pageShopOperLog(pageDTO);
    }
    /**
     * 分页查询 商家订单
     * @param pageComShopOrderSearchDTO 分页数据
     * @return 分页订单
     */
    @PostMapping("/order/page")
    public R pageShopOrder(@RequestBody PageComShopOrderSearchDTO pageComShopOrderSearchDTO) {
        return comShopOrderService.pageShopOrder(pageComShopOrderSearchDTO);
    }
    /**
     * 根据店铺id查询店铺详情
     * @param comShopStoreDTO   请求参数
     * @return  店铺详情
     */
    @PostMapping("shopStoreDetail")
    public R shopStoreDetail(@RequestBody PageComShopStoreDTO comShopStoreDTO){
        return comShopStoreService.shopStoreDetail(comShopStoreDTO);
    }
    /**
     * 分页查询商品列表
     * @param comShopGoodsDTO   请求参数
     * @return  商品列表
     */
    @PostMapping("pageShopGoods")
    public R pageShopGoods(@RequestBody ComShopGoodsDTO comShopGoodsDTO) {
        return comShopGoodsService.pageShopGoods(comShopGoodsDTO);
    }
    /**
     * 根据商品id查询商品详情
     * @param goodsId   商品id
     * @return  商品信息
     */
    @PostMapping("shopGoodsDetail")
    public R shopGoodsDetail(@RequestParam("goodsId") Long goodsId){
        return comShopGoodsService.shopGoodsDetail(goodsId);
    }
    /**
     * 根据用户id查询购物车列表
     * @param userId    用户id
     * @return  购物车列表信息
     */
    @PostMapping("shopCartList")
    public R shopCartList(@RequestParam("userId") Long userId) {
        return comShopCartService.shopCartList(userId);
    }
    /**
     * 购物车添加
     * @param comShopCartDTO    请求参数
     * @return  添加结果
     */
    @PostMapping("shopAddCart")
    public R shopAddCart(@RequestBody ComShopCartDTO comShopCartDTO) {
        return comShopCartService.shopAddCart(comShopCartDTO);
    }
    /**
     * 购物车内商品数量添加
     * @param shopEditNubCartDTO    请求参数
     * @return  修改结果
     */
    @PostMapping("shopEditNubCart")
    public R shopEditNubCart(@RequestBody ComShopEditNubCartDTO shopEditNubCartDTO) {
        return comShopCartService.shopEditNubCart(shopEditNubCartDTO);
    }
    /**
     * 删除购物车记录
     * @param Ids   购物车id集合
     * @return  删除结果
     */
    @PostMapping("shopDelCart")
    public R shopDelCart(@RequestBody List<Long> Ids) {
        return comShopCartService.shopDelCart(Ids);
    }
    /**
     * 查询用户收货地址列表
     * @param comShopAddressDTO    请求参数
     * @return  用户收获地址列表
     */
    @PostMapping("shopUserAddressList")
    public R shopUserAddressList(@RequestBody PageComShopAddressDTO comShopAddressDTO) {
        return comShopUserAddressService.shopUserAddressList(comShopAddressDTO);
    }
    /**
     * 用户添加书货地址
     * @param comShopAddressDTO 请求参数
     * @return  添加结果
     */
    @PostMapping("shopAddUserAddress")
    public R shopAddUserAddress(@RequestBody ComShopAddressDTO comShopAddressDTO) {
        return comShopUserAddressService.shopAddUserAddress(comShopAddressDTO);
    }
    /**
     * 用户修改收货地址
     * @param comShopAddressDTO 请求参数
     * @return  修改结果
     */
    @PostMapping("shopEditUserAddress")
    public R shopEditUserAddress(@RequestBody ComShopAddressDTO comShopAddressDTO) {
        return comShopUserAddressService.shopEditUserAddress(comShopAddressDTO);
    }
    /**
     * 用户删除收货地址
     * @param addressId 收货地址id
     * @return  删除结果
     */
    @PostMapping("shopDelUserAddress")
    public R shopDelUserAddress(@RequestParam("addressId") Long addressId) {
        return comShopUserAddressService.shopDelUserAddress(addressId);
    }
    /**
     * 订单预览
     * @param orderPreviewDTO   请求参数
     * @return  订单预览数据
     */
    @PostMapping("orderPreview")
    public R orderPreview(@RequestBody ComShopOrderPreviewDTO orderPreviewDTO) {
        return comShopOrderService.orderPreview(orderPreviewDTO);
    }
    /**
     * 创建订单
     * @param orderCreateDTO    创建订单请求参数
     * @return  创建结果
     */
    @PostMapping("orderCreate")
    public R orderCreate(@RequestBody ComShopOrderCreateDTO orderCreateDTO) {
        return comShopOrderService.orderCreate(orderCreateDTO);
    }
    /**
     * 分页查询用户订单列表
     * @param comOrderListDTO   请求参数
     * @return  查询结果
     */
    @PostMapping("pageOrderList")
    public R pageOrderList(@RequestBody PageComOrderListDTO comOrderListDTO){
        return comShopOrderService.pageOrderList(comOrderListDTO);
    }
    /**
     * 根据订单id查询订单详情
     * @param orderId   订单id
     * @return  订单详情
     */
    @PostMapping("orderDetail")
    public R orderDetail(@RequestParam("orderId") Long orderId) {
        return comShopOrderService.orderDetail(orderId);
    }
    /**
     * 根据订单id取消订单
     * @param comShopOrderQueryDTO   请求参数
     * @return  取消结果
     */
    @PostMapping("orderCancel")
    public R orderCancel(@RequestBody ComShopOrderQueryDTO comShopOrderQueryDTO) {
        return comShopOrderService.orderCancel(comShopOrderQueryDTO.getOrderId(),comShopOrderQueryDTO.getPhone());
    }
    /**
     * 根据订单id删除订单
     * @param orderId   订单id
     * @return  删除结果
     */
    @PostMapping("orderDelete")
    public R orderDelete(@RequestParam("orderId") Long orderId) {
        return comShopOrderService.orderDelete(orderId);
    }
    /**
     * 根据订单id确认收货
     * @param comShopOrderQueryDTO   请求参数
     * @return  确认结果
     */
    @PostMapping("orderConfirm")
    public R orderConfirm(@RequestBody ComShopOrderQueryDTO comShopOrderQueryDTO) {
        return comShopOrderService.orderConfirm(comShopOrderQueryDTO.getOrderId(),comShopOrderQueryDTO.getPhone());
    }
    /**
     * 统计用户订单数量
     * @param userId    用户id
     * @return  统计结果
     */
    @PostMapping("orderStatistics")
    public R orderStatistics(@RequestParam("userId") Long userId) {
        return comShopOrderService.orderStatistics(userId);
    }
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComShopGoodsDAO.java
@@ -3,6 +3,12 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.common.model.dtos.shop.ComShopGoodsDTO;
import com.panzhihua.common.model.dtos.shop.PageComShopStoreDTO;
import com.panzhihua.common.model.vos.shop.ComShopGoodsVO;
import com.panzhihua.common.model.vos.shop.ComShopStoreVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.common.model.dtos.shop.PageComShopGoodsDTO;
import com.panzhihua.common.model.vos.shop.PageShopGoodsVO;
import com.panzhihua.common.model.vos.shop.PageShopStoreVO;
@@ -36,4 +42,44 @@
            "</script>")
    IPage<PageShopGoodsVO> pageShopGoods(Page page, @Param("pageComShopGoodsDTO")  PageComShopGoodsDTO pageComShopGoodsDTO);
    /**
     * 根据店铺id查询商品列表
     * @param page  分页参数
     * @param pageComShopStoreDTO   请求参数
     * @return  分页商品列表
     */
    @Select("<script> " +
            "select id,`name`,store_id,goods_pic,images,`status`,sale,original_price,price" +
            ",unit,`order`,stock,details,delivery_type from com_shop_goods" +
            " where store_id = #{pageComShopStoreDTO.storeId} and delete_status = 1 and status = 1" +
            " order by sale desc,create_at desc "+
            "</script> ")
    IPage<ComShopGoodsVO> pageShopGoodsByStoreId(Page page, @Param("pageComShopStoreDTO") PageComShopStoreDTO pageComShopStoreDTO);
    /**
     * 分页查询商品列表
     * @param page  分页参数
     * @param comShopGoodsDTO   请求参数
     * @return  商品列表
     */
    @Select("<script> " +
            "select id,`name`,store_id,goods_pic,images,`status`,sale,original_price,price,unit" +
            ",`order`,stock,details,delivery_type from com_shop_goods as csg " +
            " where 1=1  and csg.delete_status = 1 and csg.status = 1" +
            "<if test='comShopGoodsDTO.name != null and comShopGoodsDTO.name !=&quot;&quot;'>" +
            " AND csg.`name` like concat('%',#{comShopGoodsDTO.name},'%') " +
            " </if> " +
            "<if test='comShopGoodsDTO.storeId != null '>" +
            " AND csg.store_id = #{comShopGoodsDTO.storeId} " +
            " </if> " +
            "<if test='comShopGoodsDTO.status != null '>" +
            " AND csg.status = #{comShopGoodsDTO.status} " +
            " </if> " +
            "<if test='comShopGoodsDTO.deliveryType != null '>" +
            " AND csg.delivery_type = #{comShopGoodsDTO.deliveryType} " +
            " </if> " +
            " order by sale desc,create_at desc " +
            " </script>")
    IPage<ComShopGoodsVO> pageShopGoods(Page page, @Param("comShopGoodsDTO") ComShopGoodsDTO comShopGoodsDTO);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComShopOperLogDAO.java
New file
@@ -0,0 +1,16 @@
package com.panzhihua.service_community.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.panzhihua.service_community.model.dos.ComShopOperLogDO;
import com.panzhihua.service_community.model.dos.ComShopOrderDO;
import org.apache.ibatis.annotations.Mapper;
/**
 * @author cedoo
 * @create 2021-4-17 10:55:15
 * @describe 订单日志mapper类
 */
@Mapper
public interface ComShopOperLogDAO extends BaseMapper<ComShopOperLogDO> {
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComShopOrderDAO.java
@@ -1,15 +1,59 @@
package com.panzhihua.service_community.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.common.model.dtos.shop.PageComOrderListDTO;
import com.panzhihua.common.model.vos.shop.ComShopOrderPageVO;
import com.panzhihua.common.model.vos.shop.ComShopOrderVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.panzhihua.common.model.dtos.PageDTO;
import com.panzhihua.common.model.dtos.shop.PageComShopOrderSearchDTO;
import com.panzhihua.common.model.vos.shop.ComShopOrderVO;
import com.panzhihua.common.model.vos.shop.ComShopStoreVO;
import com.panzhihua.service_community.model.dos.ComShopOrderDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Select;
/**
 * @auther lyq
 * @create 2021-04-14 15:03:01
 * @auther cedoo
 * @create 2021-4-17 17:35:51
 * @describe 订单表mapper类
 */
@Mapper
public interface ComShopOrderDAO extends BaseMapper<ComShopOrderDO> {
    @Select("<script> " +
            "select order_no,store_id,`status`,pay_status,receiver_id,total_amount as orderTotal,pay_amount,delivery_type,remark,create_at from com_shop_order as cso" +
            " where 1=1  and cso.delete_status = 1 and cso.user_id = #{comOrderListDTO.userId}" +
            "<if test='comOrderListDTO.status != null'>" +
            " AND cso.status = #{comOrderListDTO.status} " +
            " </if> " +
            " order by create_at desc " +
            " </script>")
    IPage<ComShopOrderPageVO> pageOrderList(Page page,@Param("comOrderListDTO") PageComOrderListDTO comOrderListDTO);
    @Select("<script> " +
            "SELECT\n" +
            "id,\n" +
            "`name`,\n" +
            "photo_path,\n" +
            "phone,\n" +
            "integral,\n" +
            "create_at \n" +
            "FROM\n" +
            "com_mng_volunteer_mng \n" +
            " where state=2 and community_id=#{comMngVolunteerMngVO.communityId}" +
            "<if test='comMngVolunteerMngVO.name != null and comMngVolunteerMngVO.name.trim() != &quot;&quot;'>" +
            " and name like concat(#{comMngVolunteerMngVO.name},'%')  \n" +
            " </if> " +
            "<if test='comMngVolunteerMngVO.phone != null and comMngVolunteerMngVO.phone.trim() != &quot;&quot;'>" +
            "AND phone like concat(#{comMngVolunteerMngVO.phone},'%') " +
            " </if> " +
            " order by integral desc,create_at desc"+
            "</script>")
    IPage<ComShopOrderVO> pageOrderBy(PageDTO page, PageComShopOrderSearchDTO pageComShopOrderSearchDTO);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComShopUserAddressDAO.java
@@ -1,8 +1,14 @@
package com.panzhihua.service_community.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.common.model.vos.shop.ComShopUserAddressVO;
import com.panzhihua.service_community.model.dos.ComShopUserAddressDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
 * @auther lyq
@@ -12,4 +18,9 @@
@Mapper
public interface ComShopUserAddressDAO extends BaseMapper<ComShopUserAddressDO> {
    @Select("select id,`name`,phone,province_code,province_name,city_code,city_name" +
            ",district_code,district_name,detail_address,is_default " +
            " from com_shop_user_address where user_id = #{userId} order by create_at desc")
    List<ComShopUserAddressVO> pageUserAddressList(Page page, @Param("userId") Long userId);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComShopGoodsDO.java
@@ -126,6 +126,31 @@
    @TableField(fill = FieldFill.UPDATE)
    private Date updateAt;
    /**
     * 商品状态(1.出售中  2.已下架  3.回收站)
     */
    public interface status{
        int sell = 1;
        int lower = 2;
        int recovery = 3;
    }
    /**
     * 删除状态(1.未删除  2.已删除)
     */
    public interface deleteStatus{
        int no = 1;
        int yes = 2;
    }
    /**
     * 配送方式(1.商家配送  2.快递物流)
     */
    public interface deliveryType{
        int store = 1;
        int express = 2;
    }
    @Override
    public String toString() {
        return "ComShopGoodsDO{" +
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComShopOperLogDO.java
New file
@@ -0,0 +1,114 @@
package com.panzhihua.service_community.model.dos;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
 * @description: 操作日志
 * @author: huang.hongfa weixin hhf9596 qq 959656820
 * @create: 2020-12-25 10:34
 **/
@Data
@TableName("com_shop_oper_log")
public class ComShopOperLogDO implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 日志主键
     */
    private Long operId;
    /**
     * 模块标题
     */
    private String title;
    /**
     * 业务类型(0其它 1新增 2修改 3删除)
     */
    private Integer businessType;
    /**
     * 方法名称
     */
    private String method;
    /**
     * 请求方式
     */
    private String requestMethod;
    /**
     * 操作类别(0其它 1后台用户 2手机端用户)
     */
    private Integer operatorType;
    /**
     * 操作人员
     */
    private String operName;
    /**
     * 部门名称
     */
    private String deptName;
    /**
     * 请求url
     */
    private String operUrl;
    /**
     * 主机地址
     */
    private String operIp;
    /**
     * 操作地点
     */
    private String operLocation;
    /**
     * 请求参数
     */
    private String operParam;
    /**
     * 返回参数
     */
    private String jsonResult;
    /**
     * 操作状态(0正常 1异常)
     */
    private Integer status;
    /**
     * 错误消息
     */
    private String errorMsg;
    /**
     * 操作时间
     */
    private Date operTime;
    /**
     * 操作社区id 0 标识运营后台
     */
    private Long communityId;
    /**
     * 操作账户
     */
    private String account;
    /**
     * 操作用户ID
     */
    private Long userId;
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComShopOrderDO.java
@@ -117,6 +117,16 @@
    private String logisticsNo;
    /**
     * 订单备注
     */
    private String remark;
    /**
     * 发货时间
     */
    private Date deliveryTime;
    /**
     * 下单时间
     */
    @TableField(fill = FieldFill.INSERT)
@@ -128,6 +138,57 @@
    @TableField(fill = FieldFill.UPDATE)
    private Date updateAt;
    /**
     * 订单状态(1.待付款 2.代发货 3.待收货 4.待评价 5.已完成 6.已取消)
     */
    public interface status{
        int dfk = 1;
        int dfh = 2;
        int dsh = 3;
        int dpj = 4;
        int ywc = 5;
        int yqx = 6;
    }
    /**
     * 支付状态(1.未支付 2.已支付)
     */
    public interface payStatus{
        int no = 1;
        int yes = 2;
    }
    /**
     * 删除状态(1.未删除 2.已删除)
     */
    public interface deleteStatus{
        int no = 1;
        int yes = 2;
    }
    /**
     * 支付方式(1.微信支付)
     */
    public interface payType{
        int wx = 1;
    }
    /**
     * 配送方式(1.商家配送  2.快递物流)
     */
    public interface deliveryType{
        int store = 1;
        int express = 2;
    }
    /**
     * 订单发货状态(1.未发货  2.已发货)
     */
    public interface deliveryStatus{
        int no = 1;
        int yes = 2;
    }
    @Override
    public String toString() {
        return "ComShopOrderDO{" +
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComShopOrderOperateDO.java
@@ -56,6 +56,17 @@
    @TableField(fill = FieldFill.INSERT)
    private Date createAt;
    /**
     * 操作类型(1.创建订单 2.取消订单 3.订单支付 4.订单发货 5.订单完成)
     */
    public interface operationType{
        int create = 1;
        int cancel = 2;
        int pay = 3;
        int deliver = 4;
        int complete = 5;
    }
    @Override
    public String toString() {
        return "ComShopOrderOperateDO{" +
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComShopStoreDO.java
@@ -121,6 +121,15 @@
     * 管理后台用户id
     */
    private Long sysUserId;
    /**
     * 店铺状态(1.启用  2.禁用)
     */
    public interface status{
        int yes = 1;
        int no = 2;
    }
    @Override
    public String toString() {
        return "ComShopStoreDO{" +
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComShopUserAddressDO.java
@@ -111,4 +111,12 @@
                ", updateAt=" + updateAt +
                "}";
    }
    /**
     * 是否是默认地址(1.是  2.否)
     */
    public interface isDefault{
        int yes = 1;
        int no = 2;
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComShopCartService.java
@@ -1,7 +1,12 @@
package com.panzhihua.service_community.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.panzhihua.common.model.dtos.shop.ComShopCartDTO;
import com.panzhihua.common.model.dtos.shop.ComShopEditNubCartDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.service_community.model.dos.ComShopCartDO;
import java.util.List;
/**
 * @auther lyq
@@ -10,6 +15,34 @@
 */
public interface ComShopCartService extends IService<ComShopCartDO> {
    /**
     * 根据用户id查询购物车列表信息
     * @param userId    用户id
     * @return  购物车列表信息
     */
    R shopCartList(Long userId);
    /**
     * 购物车添加
     * @param comShopCartDTO    请求参数
     * @return  添加结果
     */
    R shopAddCart(ComShopCartDTO comShopCartDTO);
    /**
     * 购物车内商品数量修改
     * @param shopEditNubCartDTO    请求参数
     * @return  修改结果
     */
    R shopEditNubCart(ComShopEditNubCartDTO shopEditNubCartDTO);
    /**
     * 删除购物车记录
     * @param Ids   购物车id集合
     * @return  删除结果
     */
    R shopDelCart(List<Long> Ids);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComShopGoodsService.java
@@ -1,6 +1,7 @@
package com.panzhihua.service_community.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.panzhihua.common.model.dtos.shop.ComShopGoodsDTO;
import com.panzhihua.common.model.dtos.shop.PageComShopGoodsDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.shop.AddShopGoodsVO;
@@ -14,6 +15,20 @@
public interface ComShopGoodsService extends IService<ComShopGoodsDO> {
    /**
     * 分页查询商品列表
     * @param comShopGoodsDTO   请求参数
     * @return  商品列表
     */
    R pageShopGoods(ComShopGoodsDTO comShopGoodsDTO);
    /**
     * 根据商品id查询商品信息
     * @param goodsId   商品id
     * @return  商品信息
     */
    R shopGoodsDetail(Long goodsId);
    /**
     * 添加商品
     * @param addShopGoodsVO
     * @return
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComShopOperLogService.java
New file
@@ -0,0 +1,29 @@
package com.panzhihua.service_community.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.panzhihua.common.model.dtos.PageDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.shop.ShopOperLogVO;
import com.panzhihua.service_community.model.dos.ComShopOperLogDO;
import com.panzhihua.service_community.model.dos.ComShopUserAddressDO;
/**
 * @author cedoo
 * @create 2021-4-16 10:49:12
 * @describe  商城后台操作日志
 */
public interface ComShopOperLogService extends IService<ComShopOperLogDO> {
    /**
     * 通过VO添加日志
     * @param shopOperlog 商城后台日志VO
     * @return
     */
    R saveLog(ShopOperLogVO shopOperlog);
    /**
     * 查询商城后台操作日志
     * @param pageDTO
     * @return
     */
    R pageShopOperLog(PageDTO pageDTO);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComShopOrderService.java
@@ -1,6 +1,12 @@
package com.panzhihua.service_community.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.panzhihua.common.model.dtos.shop.PageComShopOrderSearchDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.dtos.shop.ComShopOrderCreateDTO;
import com.panzhihua.common.model.dtos.shop.ComShopOrderPreviewDTO;
import com.panzhihua.common.model.dtos.shop.PageComOrderListDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.service_community.model.dos.ComShopOrderDO;
/**
@@ -10,4 +16,68 @@
 */
public interface ComShopOrderService extends IService<ComShopOrderDO> {
    /**
     * 分页搜索订单记录
     * @param pageComShopOrderSearchDTO 分页数据
     * @return 分页订单
     */
    R pageShopOrder(PageComShopOrderSearchDTO pageComShopOrderSearchDTO);
    /**
     * 订单预览
     * @param orderPreviewDTO   请求参数
     * @return  订单预览数据
     */
    R orderPreview(ComShopOrderPreviewDTO orderPreviewDTO);
    /**
     * 创建订单
     * @param orderCreateDTO    创建订单请求参数
     * @return  创建结果
     */
    R orderCreate(ComShopOrderCreateDTO orderCreateDTO);
    /**
     * 分页查询用户订单列表
     * @param comOrderListDTO   请求参数
     * @return  查询结果
     */
    R pageOrderList(PageComOrderListDTO comOrderListDTO);
    /**
     * 根据订单id查询订单详情
     * @param orderId   订单id
     * @return  订单详情
     */
    R orderDetail(Long orderId);
    /**
     * 根据订单id取消订单
     * @param orderId   订单id
     * @param phone 操作用户手机号
     * @return  取消结果
     */
    R orderCancel(Long orderId,String phone);
    /**
     * 根据订单id删除订单
     * @param orderId   订单id
     * @return  删除结果
     */
    R orderDelete(Long orderId);
    /**
     * 根据订单id确认收货
     * @param orderId   订单id
     * @param phone 手机号
     * @return  确认结果
     */
    R orderConfirm(Long orderId, String phone);
    /**
     * 统计用户订单数量
     * @param userId    用户id
     * @return  统计结果
     */
    R orderStatistics(Long userId);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComShopStoreService.java
@@ -21,6 +21,13 @@
    R pageStoreList(PageComShopStoreDTO pageComShopStoreDTO);
    /**
     * 根据店铺id查询店铺详情
     * @param comShopStoreDTO   请求参数
     * @return  店铺详情
     */
    R shopStoreDetail(PageComShopStoreDTO comShopStoreDTO);
    /**
     * 保存店铺
     * @param storeVO
     * @return
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComShopUserAddressService.java
@@ -1,6 +1,9 @@
package com.panzhihua.service_community.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.panzhihua.common.model.dtos.shop.ComShopAddressDTO;
import com.panzhihua.common.model.dtos.shop.PageComShopAddressDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.service_community.model.dos.ComShopUserAddressDO;
/**
@@ -10,4 +13,32 @@
 */
public interface ComShopUserAddressService extends IService<ComShopUserAddressDO> {
    /**
     * 查询用户收获地址列表
     * @param comShopAddressDTO    请求参数
     * @return  用户收货地址列表
     */
    R shopUserAddressList(PageComShopAddressDTO comShopAddressDTO);
    /**
     * 用户添加书货地址
     * @param comShopAddressDTO 请求参数
     * @return  添加结果
     */
    R shopAddUserAddress(ComShopAddressDTO comShopAddressDTO);
    /**
     * 用户修改收货地址
     * @param comShopAddressDTO 请求参数
     * @return  修改结果
     */
    R shopEditUserAddress(ComShopAddressDTO comShopAddressDTO);
    /**
     * 用户删除收货地址
     * @param addressId 收货地址id
     * @return  删除结果
     */
    R shopDelUserAddress(Long addressId);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopCartServiceImpl.java
@@ -1,11 +1,31 @@
package com.panzhihua.service_community.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.common.model.dtos.shop.ComShopCartDTO;
import com.panzhihua.common.model.dtos.shop.ComShopEditNubCartDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.shop.ComShopCartListVO;
import com.panzhihua.common.model.vos.shop.ComShopCartStoreVO;
import com.panzhihua.common.model.vos.shop.ComShopCartVO;
import com.panzhihua.service_community.dao.ComShopCartDAO;
import com.panzhihua.service_community.dao.ComShopGoodsAttrDAO;
import com.panzhihua.service_community.dao.ComShopGoodsDAO;
import com.panzhihua.service_community.dao.ComShopStoreDAO;
import com.panzhihua.service_community.model.dos.ComShopCartDO;
import com.panzhihua.service_community.model.dos.ComShopGoodsAttrDO;
import com.panzhihua.service_community.model.dos.ComShopGoodsDO;
import com.panzhihua.service_community.model.dos.ComShopStoreDO;
import com.panzhihua.service_community.service.ComShopCartService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @auther lyq
@@ -16,4 +36,175 @@
@Service
public class ComShopCartServiceImpl extends ServiceImpl<ComShopCartDAO, ComShopCartDO> implements ComShopCartService {
    @Resource
    private ComShopGoodsDAO shopGoodsDAO;
    @Resource
    private ComShopStoreDAO shopStoreDAO;
    @Resource
    private ComShopGoodsAttrDAO shopGoodsAttrDAO;
    /**
     * 根据用户id查询购物车列表
     * @param userId    用户id
     * @return  购物车列表
     */
    @Override
    public R shopCartList(Long userId){
        //返回参数
        ComShopCartListVO comShopCart = new ComShopCartListVO();
        //失效宝贝集合
        List<ComShopCartVO> invalidCartList = new ArrayList<>();
        //有效宝贝集合
        List<ComShopCartStoreVO> cartList = new ArrayList<>();
        List<ComShopCartDO> shopCartDOList = this.baseMapper.selectList(new QueryWrapper<ComShopCartDO>().eq("user_id",userId));
        if(!shopCartDOList.isEmpty()){
            shopCartDOList.forEach(shopCart->{
                //查询当前商品是否是有效商品
                ComShopGoodsDO  goodsDO = shopGoodsDAO.selectOne(new QueryWrapper<ComShopGoodsDO>()
                        .eq("id",shopCart.getGoodsId()).eq("delete_status",ComShopGoodsDO.deleteStatus.no)
                        .eq("status",ComShopGoodsDO.status.sell));
                if(goodsDO == null){
                    ComShopCartVO invalidCart = new ComShopCartVO();
                    BeanUtils.copyProperties(shopCart,invalidCart);
                    invalidCartList.add(invalidCart);
                }
                //有效商品区分店铺
                if(cartList.isEmpty()){
                    ComShopCartStoreVO cartStoreVO = new ComShopCartStoreVO();
                    //查询商品所属店铺
                    ComShopStoreDO shopStoreDO = shopStoreDAO.selectById(goodsDO.getStoreId());
                    if(shopStoreDO != null){
                        cartStoreVO.setStoreId(shopStoreDO.getId());
                        cartStoreVO.setStoreName(shopStoreDO.getName());
                        cartStoreVO.setStoreLogo(shopStoreDO.getLogo());
                    }
                    List<ComShopCartVO> cartsList = new ArrayList<>();
                    ComShopCartVO cartVO = new ComShopCartVO();
                    BeanUtils.copyProperties(shopCart,cartVO);
                    cartsList.add(cartVO);
                    cartStoreVO.setCartList(cartsList);
                    cartList.add(cartStoreVO);
                }else{
                    boolean isOk = true;
                    for (ComShopCartStoreVO vo:cartList) {
                        if(vo.getStoreId().equals(goodsDO.getStoreId())){
                            isOk = false;
                            ComShopCartVO cartVO = new ComShopCartVO();
                            BeanUtils.copyProperties(shopCart,cartVO);
                            vo.getCartList().add(cartVO);
                        }
                    }
                    if(isOk){
                        ComShopCartStoreVO cartStoreVO = new ComShopCartStoreVO();
                        //查询商品所属店铺
                        ComShopStoreDO shopStoreDO = shopStoreDAO.selectById(goodsDO.getStoreId());
                        if(shopStoreDO != null){
                            cartStoreVO.setStoreId(shopStoreDO.getId());
                            cartStoreVO.setStoreName(shopStoreDO.getName());
                            cartStoreVO.setStoreLogo(shopStoreDO.getLogo());
                        }
                        List<ComShopCartVO> cartsList = new ArrayList<>();
                        ComShopCartVO cartVO = new ComShopCartVO();
                        BeanUtils.copyProperties(shopCart,cartVO);
                        cartsList.add(cartVO);
                        cartStoreVO.setCartList(cartsList);
                        cartList.add(cartStoreVO);
                    }
                }
            });
            //设置返回参数
            comShopCart.setInvalidCartList(invalidCartList);
            comShopCart.setCartList(cartList);
        }
        return R.ok(comShopCart);
    }
    /**
     * 购物车添加
     * @param comShopCartDTO    请求参数
     * @return  添加结果
     */
    @Override
    public R shopAddCart(ComShopCartDTO comShopCartDTO){
        //查询当前商品是否已经在购物车中
        ComShopCartDO shopCartDO = this.baseMapper.selectOne(new QueryWrapper<ComShopCartDO>().eq("user_id",comShopCartDTO.getUserId())
                .eq("goods_id",comShopCartDTO.getGoodsId()).eq("goods_attr_id",comShopCartDTO.getGoodsAttrId()));
        if(shopCartDO == null){//购物车表里未有该商品的记录
            shopCartDO = new ComShopCartDO();
            shopCartDO.setUserId(comShopCartDTO.getUserId());
            shopCartDO.setAmount(comShopCartDTO.getNumber());
            //查询商品
            ComShopGoodsDO shopGoodsDO = shopGoodsDAO.selectById(comShopCartDTO.getGoodsId());
            if(shopGoodsDO == null){
                return R.fail("未查询到商品信息");
            }
            shopCartDO.setGoodsName(shopGoodsDO.getName());
            shopCartDO.setGoodsId(shopGoodsDO.getId());
            shopCartDO.setStoreId(shopGoodsDO.getStoreId());
            //查询商品规格
            ComShopGoodsAttrDO shopGoodsAttrDO = shopGoodsAttrDAO.selectById(comShopCartDTO.getGoodsAttrId());
            if(shopGoodsAttrDO == null){
                return R.fail("未查询到商品规格");
            }
            shopCartDO.setGoodsAttrId(shopGoodsAttrDO.getId());
            shopCartDO.setGoodsAttr(shopGoodsAttrDO.getGoodsAttr());
            shopCartDO.setGoodsAttrPic(shopGoodsAttrDO.getAttrPic());
            shopCartDO.setPrice(shopGoodsAttrDO.getPrice());
            //执行添加操作
            if(this.baseMapper.insert(shopCartDO) > 0){
                return R.ok();
            }else{
                return R.fail("添加购物车失败");
            }
        }else{//购物车已有该商品
            shopCartDO.setAmount(shopCartDO.getAmount() + comShopCartDTO.getNumber());
            //执行修改操作
            if(this.baseMapper.updateById(shopCartDO) > 0){
                return R.ok();
            }else{
                return R.fail("添加购物车失败");
            }
        }
    }
    /**
     * 购物车内商品数量修改
     * @param shopEditNubCartDTO    请求参数
     * @return  修改结果
     */
    @Override
    public R shopEditNubCart(ComShopEditNubCartDTO shopEditNubCartDTO){
        //查询购物车记录
        ComShopCartDO shopCartDO = this.baseMapper.selectById(shopEditNubCartDTO.getCartId());
        if(shopCartDO == null){
            return R.fail("未查询到购物车记录");
        }
        shopCartDO.setAmount(shopEditNubCartDTO.getNumber());
        //执行修改操作
        if(this.baseMapper.updateById(shopCartDO) > 0){
            return R.ok();
        }else{
            return R.fail("修改失败");
        }
    }
    /**
     * 删除购物车记录
     * @param Ids   购物车id集合
     * @return  删除结果
     */
    public R shopDelCart(List<Long> Ids){
        if(this.baseMapper.deleteBatchIds(Ids) > 0){
            return R.ok();
        }else{
            return R.fail("修改失败");
        }
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopGoodsServiceImpl.java
@@ -2,6 +2,8 @@
import java.math.BigDecimal;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -9,14 +11,25 @@
import com.google.common.collect.Lists;
import com.panzhihua.common.exceptions.ServiceException;
import com.panzhihua.common.model.dtos.shop.PageComShopGoodsDTO;
import com.panzhihua.common.model.dtos.shop.ComShopGoodsDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.shop.AddShopGoodsAttrVO;
import com.panzhihua.common.model.vos.shop.PageShopGoodsVO;
import com.panzhihua.common.model.vos.shop.AddShopGoodsVO;
import com.panzhihua.service_community.dao.ComShopGoodsAttrDAO;
import com.panzhihua.common.model.vos.shop.ComShopGoodsAttrVO;
import com.panzhihua.common.model.vos.shop.ComShopGoodsVO;
import com.panzhihua.common.model.vos.shop.ComShopStoreVO;
import com.panzhihua.service_community.dao.ComShopGoodsAttrDAO;
import com.panzhihua.common.model.dtos.shop.PageComShopGoodsDTO;
import com.panzhihua.common.model.vos.shop.ComShopStoreVO;
import com.panzhihua.common.model.vos.shop.ShopGoodsVO;
import com.panzhihua.service_community.dao.ComShopGoodsDAO;
import com.panzhihua.service_community.model.dos.ComShopGoodsAttrDO;
import com.panzhihua.service_community.dao.ComShopStoreDAO;
import com.panzhihua.service_community.model.dos.ComShopGoodsAttrDO;
import com.panzhihua.service_community.model.dos.ComShopGoodsDO;
import com.panzhihua.service_community.model.dos.ComShopStoreDO;
import com.panzhihua.service_community.service.ComShopGoodsService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
@@ -28,6 +41,10 @@
import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
 * @auther lyq
 * @create 2021-04-14 15:02:35
@@ -38,6 +55,10 @@
public class ComShopGoodsServiceImpl extends ServiceImpl<ComShopGoodsDAO, ComShopGoodsDO> implements ComShopGoodsService {
    @Resource
    private ComShopGoodsAttrServiceImpl goodsAttrService;
    @Resource
    private ComShopGoodsAttrDAO shopGoodsAttrDAO;
    @Resource
    private ComShopStoreDAO shopStoreDAO;
    @Override
    public R saveShopGoods(AddShopGoodsVO addShopGoodsVO) {
@@ -157,4 +178,54 @@
        this.baseMapper.updateById(shopGoodsDO);
        return R.ok();
    }
    /**
     * 分页查询商品列表
     * @param comShopGoodsDTO   请求参数
     * @return  商品列表
     */
    @Override
    public R pageShopGoods(ComShopGoodsDTO comShopGoodsDTO){
        Page page = new Page<>(comShopGoodsDTO.getPageNum(),comShopGoodsDTO.getPageSize());
        return R.ok(this.baseMapper.pageShopGoods(page,comShopGoodsDTO));
    }
    /**
     * 根据商品id查询商品信息
     * @param goodsId   商品id
     * @return  商品信息
     */
    @Override
    public R shopGoodsDetail(Long goodsId){
        //根据id查询商品信息
        ComShopGoodsDO goodsDO = this.baseMapper.selectById(goodsId);
        if(goodsDO == null || goodsDO.getDeleteStatus().equals(ComShopGoodsDO.deleteStatus.yes)){
            return R.fail(403,"商品不存在");
        }
        if(!goodsDO.getStatus().equals(ComShopGoodsDO.status.sell)){
            return R.fail(405,"商品已下架");
        }
        //根据商品id查询商品规格信息
        List<ComShopGoodsAttrVO> goodsAttrList = new ArrayList<>();
        List<ComShopGoodsAttrDO> goodsAttrDOS = shopGoodsAttrDAO.selectList(new QueryWrapper<ComShopGoodsAttrDO>().eq("goods_id",goodsId));
        goodsAttrDOS.forEach(attrDO->{
            ComShopGoodsAttrVO goodsAttrVO = new ComShopGoodsAttrVO();
            BeanUtils.copyProperties(attrDO,goodsAttrVO);
            goodsAttrList.add(goodsAttrVO);
        });
        //查询商品店铺信息
        ComShopStoreDO shopStoreDO = shopStoreDAO.selectById(goodsDO.getStoreId());
        ComShopStoreVO shopStoreVO = new ComShopStoreVO();
        BeanUtils.copyProperties(shopStoreDO,shopStoreVO);
        //设置值
        ComShopGoodsVO shopGoods = new ComShopGoodsVO();
        BeanUtils.copyProperties(goodsDO,shopGoods);
        shopGoods.setGoodsAttrList(goodsAttrList);
        shopGoods.setShopStoreVO(shopStoreVO);
        return R.ok(shopGoods);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopOperLogServiceImpl.java
New file
@@ -0,0 +1,62 @@
package com.panzhihua.service_community.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.common.model.dtos.PageDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.shop.ComShopStoreVO;
import com.panzhihua.common.model.vos.shop.ShopOperLogVO;
import com.panzhihua.service_community.dao.ComShopOperLogDAO;
import com.panzhihua.service_community.dao.ComShopOrderDAO;
import com.panzhihua.service_community.model.dos.ComShopOperLogDO;
import com.panzhihua.service_community.model.dos.ComShopOrderDO;
import com.panzhihua.service_community.model.dos.ComShopStoreDO;
import com.panzhihua.service_community.service.ComShopOperLogService;
import com.panzhihua.service_community.service.ComShopOrderService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
/**
 * @auther cedoo
 * @create 2021-4-17 10:51:12
 * @describe 日志服务
 */
@Slf4j
@Service
public class ComShopOperLogServiceImpl extends ServiceImpl<ComShopOperLogDAO, ComShopOperLogDO> implements ComShopOperLogService {
    @Override
    public R saveLog(ShopOperLogVO shopOperLogVO) {
        if (shopOperLogVO == null) {
            return R.ok("500", "数据为空!");
        }
        ComShopOperLogDO theDo = new ComShopOperLogDO();
        BeanUtils.copyProperties(shopOperLogVO, theDo);
        this.baseMapper.insert(theDo);
        return R.ok();
    }
    @Override
    public R pageShopOperLog(PageDTO pageDTO) {
        Page page = new Page<>(pageDTO.getPageNum(), pageDTO.getPageSize());
        IPage<ComShopOperLogDO> comShopOperLogDOIPage =
                this.baseMapper.selectPage(page, new LambdaQueryWrapper<ComShopOperLogDO>().eq(ComShopOperLogDO::getUserId, pageDTO.getUserId()));
        IPage<ShopOperLogVO> comShopOperLogVOIPage =
                comShopOperLogDOIPage.convert(comShopOperLogDO -> {
                    ShopOperLogVO shopOperLogVO = new ShopOperLogVO();
                    BeanUtils.copyProperties(comShopOperLogDO, shopOperLogVO);
                    /**
                     * 隐藏敏感信息
                     */
                    shopOperLogVO.setJsonResult("****");
                    shopOperLogVO.setOperParam("****");
                    return shopOperLogVO;
                });
        return R.ok(comShopOperLogVOIPage);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopOrderServiceImpl.java
@@ -1,11 +1,36 @@
package com.panzhihua.service_community.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.common.model.dtos.PageDTO;
import com.panzhihua.common.model.dtos.shop.PageComShopOrderSearchDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.service_community.dao.ComShopOrderDAO;
import com.panzhihua.service_community.model.dos.ComShopOrderDO;
import com.panzhihua.common.model.dtos.shop.ComShopOrderCreateDTO;
import com.panzhihua.common.model.dtos.shop.ComShopOrderCreateGoodsDTO;
import com.panzhihua.common.model.dtos.shop.ComShopOrderPreviewDTO;
import com.panzhihua.common.model.dtos.shop.PageComOrderListDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.shop.*;
import com.panzhihua.common.utlis.OrderNoUtils;
import com.panzhihua.common.utlis.StringUtils;
import com.panzhihua.service_community.dao.*;
import com.panzhihua.service_community.model.dos.*;
import com.panzhihua.service_community.service.ComShopOrderService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * @auther lyq
@@ -16,4 +41,492 @@
@Service
public class ComShopOrderServiceImpl extends ServiceImpl<ComShopOrderDAO, ComShopOrderDO> implements ComShopOrderService {
    @Resource
    private ComShopGoodsDAO comShopGoodsDAO;
    @Resource
    private ComShopGoodsAttrDAO comShopGoodsAttrDAO;
    @Resource
    private ComShopCartDAO comShopCartDAO;
    @Resource
    private ComShopStoreDAO comShopStoreDAO;
    @Resource
    private ComShopUserAddressDAO comShopUserAddressDAO;
    @Resource
    private ComShopOrderOperateDAO comShopOrderOperateDAO;
    @Resource
    private ComShopOrderGoodsDAO comShopOrderGoodsDAO;
    /**
     * 订单预览
     * @param orderPreviewDTO   请求参数
     * @return  订单预览数据
     */
    @Override
    public R orderPreview(ComShopOrderPreviewDTO orderPreviewDTO){
        //返回参数
        ComShopOrderPreviewVO orderPreviewVO = new ComShopOrderPreviewVO();
        //返回商品列表
        List<ComShopOrderGoodsVO> orderGoodsList = new ArrayList<>();
        Long storeId = 0L;
        BigDecimal orderTotal = BigDecimal.ZERO;
        Integer orderGoodsTotal = 0;
        //判断提交方式
        if(orderPreviewDTO.getSubmitType().equals(ComShopOrderPreviewDTO.submitType.details)){//详情页提交
            //查询商品信息
            ComShopGoodsDO goodsDO = comShopGoodsDAO.selectOne(new QueryWrapper<ComShopGoodsDO>().eq("id",orderPreviewDTO.getGoodsId())
                    .eq("status",ComShopGoodsDO.status.sell).eq("delete_status",ComShopGoodsDO.deleteStatus.no));
            if(goodsDO == null){
                return R.fail("商品已下架或已删除");
            }
            //设置店铺id
            storeId = goodsDO.getStoreId();
            //查询商品规格信息
            ComShopGoodsAttrDO goodsAttrDO = comShopGoodsAttrDAO.selectById(orderPreviewDTO.getGoodsAttrId());
            if(goodsAttrDO == null){
                return R.fail("商品规格不存在");
            }
            orderTotal = goodsAttrDO.getPrice().multiply(BigDecimal.valueOf(orderPreviewDTO.getBuyNum()));
            orderGoodsTotal = orderPreviewDTO.getBuyNum();
            //商品信息赋值
            ComShopOrderGoodsVO orderGoodsVO = new ComShopOrderGoodsVO();
            orderGoodsVO.setGoodsName(goodsDO.getName());
            orderGoodsVO.setGoodsId(goodsDO.getId());
            orderGoodsVO.setGoodsAttrId(goodsAttrDO.getId());
            orderGoodsVO.setGoodsPic(goodsAttrDO.getAttrPic());
            orderGoodsVO.setPrice(goodsAttrDO.getPrice());
            orderGoodsVO.setNum(orderPreviewDTO.getBuyNum());
            orderGoodsList.add(orderGoodsVO);
        }else if(orderPreviewDTO.getSubmitType().equals(ComShopOrderPreviewDTO.submitType.cart)){//购物车提交
            List<ComShopCartDO> cartList = comShopCartDAO.selectBatchIds(orderPreviewDTO.getCartIds());
            if(cartList.isEmpty()){
                return R.fail("未找到购物车商品信息");
            }
            //设置店铺id
            storeId = cartList.get(0).getStoreId();
            //循环遍历购物车商品信息
            for (ComShopCartDO cartDO:cartList) {
                //商品信息赋值
                ComShopOrderGoodsVO orderGoodsVO = new ComShopOrderGoodsVO();
                orderGoodsVO.setGoodsId(cartDO.getGoodsId());
                orderGoodsVO.setGoodsAttrId(cartDO.getGoodsAttrId());
                orderGoodsVO.setGoodsPic(cartDO.getGoodsAttrPic());
                orderGoodsVO.setNum(cartDO.getAmount());
                orderGoodsVO.setGoodsName(cartDO.getGoodsName());
                //查询商品规格
                ComShopGoodsAttrDO goodsAttrDO = comShopGoodsAttrDAO.selectById(cartDO.getGoodsAttrId());
                if(goodsAttrDO != null){
                    orderGoodsVO.setPrice(goodsAttrDO.getPrice());
                }else{
                    orderGoodsVO.setPrice(BigDecimal.ZERO);
                }
                orderTotal = orderTotal.add(orderGoodsVO.getPrice().multiply(BigDecimal.valueOf(cartDO.getAmount())));
                orderGoodsTotal += cartDO.getAmount();
                orderGoodsList.add(orderGoodsVO);
            }
        }
        orderPreviewVO.setOrderTotal(orderTotal);
        orderPreviewVO.setOrderGoodsTotal(orderGoodsTotal);
        orderPreviewVO.setOrderGoodsList(orderGoodsList);
        //查询店铺信息
        ComShopStoreDO storeDO = comShopStoreDAO.selectById(storeId);
        if(storeDO != null){
            ComShopStoreVO shopStoreVO = new ComShopStoreVO();
            BeanUtils.copyProperties(storeDO,shopStoreVO);
            orderPreviewVO.setShopStoreVO(shopStoreVO);
        }
        //查询默认收货地址
        //查询上次购买记录的收货地址
        List<ComShopOrderDO> shopOrders = this.baseMapper.selectList(new QueryWrapper<ComShopOrderDO>()
                .eq("user_id",orderPreviewDTO.getUserId()).orderByDesc("create_at"));
        if(shopOrders.isEmpty()){//未查询到用户上一笔订单
            //查询用户收货地址中的默认地址
            ComShopUserAddressDO userAddressDO = comShopUserAddressDAO.selectOne(new QueryWrapper<ComShopUserAddressDO>()
                    .eq("user_id",orderPreviewDTO.getUserId()).eq("is_default",ComShopUserAddressDO.isDefault.yes));
            if(userAddressDO != null){
                ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO();
                BeanUtils.copyProperties(userAddressDO,userAddressVO);
                orderPreviewVO.setUserAddressVO(userAddressVO);
            }else{
                List<ComShopUserAddressDO> userAddressDOList = comShopUserAddressDAO.selectList(new QueryWrapper<ComShopUserAddressDO>()
                        .eq("user_id",orderPreviewDTO.getUserId()).orderByDesc("create_at"));
                if(!userAddressDOList.isEmpty()){
                    ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO();
                    BeanUtils.copyProperties(userAddressDOList.get(0),userAddressVO);
                    orderPreviewVO.setUserAddressVO(userAddressVO);
                }
            }
        }else{//查询到用户上一笔订单
            ComShopUserAddressDO userAddressDO = comShopUserAddressDAO.selectById(shopOrders.get(0).getReceiverId());
            ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO();
            BeanUtils.copyProperties(userAddressDO,userAddressVO);
            orderPreviewVO.setUserAddressVO(userAddressVO);
        }
        return R.ok(orderPreviewVO);
    }
    /**
     * 创建订单
     * @param orderCreateDTO    创建订单请求参数
     * @return  创建结果
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public R orderCreate(ComShopOrderCreateDTO orderCreateDTO){
        //创建返回参数
        ComShopOrderVO shopOrderVO = new ComShopOrderVO();
        //查询用户收货地址
        ComShopUserAddressDO userAddressDO = comShopUserAddressDAO.selectById(orderCreateDTO.getReceiverId());
        if(userAddressDO == null){
            return R.fail("收货地址不存在");
        }
        //用户id
        Long userId = orderCreateDTO.getUserId();
        //店铺id
        Long storeId = 0L;
        //生成订单号
        String orderNo = OrderNoUtils.NextOrderNo(userId);
        //配送方式
        Integer deliveryType = 0;
        //订单总金额
        BigDecimal orderTotal = BigDecimal.ZERO;
        //创建订单商品信息
        List<ComShopOrderGoodsDO> orderGoodsDOList = new ArrayList<>();
        if(!orderCreateDTO.getOrderGoodsList().isEmpty()){
            for (ComShopOrderCreateGoodsDTO createGoodsDTO:orderCreateDTO.getOrderGoodsList()) {
                //查询当前商品信息
                ComShopGoodsDO goodsDO = comShopGoodsDAO.selectOne(new QueryWrapper<ComShopGoodsDO>()
                        .eq("id",createGoodsDTO.getGoodsId()).eq("delete_status",ComShopGoodsDO.deleteStatus.no)
                        .eq("status",ComShopGoodsDO.status.sell));
                if(goodsDO == null){
                    log.error("未查询到商品信息,商品已下架活已删除,商品id" + createGoodsDTO.getGoodsId());
                    continue;
                }
                storeId = goodsDO.getStoreId();
                deliveryType = goodsDO.getDeliveryType();
                ComShopOrderGoodsDO orderGoodsDO = new ComShopOrderGoodsDO();
                orderGoodsDO.setGoodsId(goodsDO.getId());
                orderGoodsDO.setGoodsName(goodsDO.getName());
                orderGoodsDO.setStoreId(storeId);
                orderGoodsDO.setUserId(userId);
                orderGoodsDO.setAmount(createGoodsDTO.getNum());
                orderGoodsDO.setOrderNo(orderNo);
                //查询当前商品规格
                ComShopGoodsAttrDO goodsAttrDO = comShopGoodsAttrDAO.selectById(createGoodsDTO.getGoodsAttrId());
                if(goodsAttrDO == null){
                    log.error("未查询到商品规格信息,商品id" + createGoodsDTO.getGoodsId() + "商品规格id:" + createGoodsDTO.getGoodsAttrId());
                    continue;
                }
                orderGoodsDO.setGoodsAttrId(goodsAttrDO.getId());
                orderGoodsDO.setGoodsAttrPrice(goodsAttrDO.getPrice());
                orderGoodsDO.setGoodsAttrPic(goodsAttrDO.getAttrPic());
                orderGoodsDOList.add(orderGoodsDO);
                //将商品金额计算到订单总金额
                orderTotal = orderTotal.add(orderGoodsDO.getGoodsAttrPrice().multiply(BigDecimal.valueOf(orderGoodsDO.getAmount())));
            }
        }
        //如果是购物车提交,需要将购物车内商品移除
        if(orderCreateDTO.getSubmitType().equals(ComShopOrderCreateDTO.submitType.cart)){
            comShopCartDAO.deleteBatchIds(orderCreateDTO.getCartIds());
        }
        //创建订单信息
        ComShopOrderDO shopOrderDO = new ComShopOrderDO();
        shopOrderDO.setOrderNo(orderNo);
        shopOrderDO.setStoreId(storeId);
        shopOrderDO.setUserId(userId);
        shopOrderDO.setStatus(ComShopOrderDO.status.dfk);
        shopOrderDO.setPayStatus(ComShopOrderDO.payStatus.no);
        shopOrderDO.setReceiverId(orderCreateDTO.getReceiverId());
        shopOrderDO.setDeleteStatus(ComShopOrderDO.deleteStatus.no);
        shopOrderDO.setTotalAmount(orderTotal);
        shopOrderDO.setDiscountAmount(BigDecimal.ZERO);
        shopOrderDO.setDeliveryType(deliveryType);
        if(StringUtils.isNotEmpty(orderCreateDTO.getRemark())){
            shopOrderDO.setRemark(orderCreateDTO.getRemark());
        }
        this.baseMapper.insert(shopOrderDO);
        if(!orderGoodsDOList.isEmpty()){
            orderGoodsDOList.forEach(orderGoods ->{
                orderGoods.setOrderId(shopOrderDO.getId());
                comShopOrderGoodsDAO.insert(orderGoods);
            });
        }
        //创建订单操作记录
        ComShopOrderOperateDO orderOperateDO = new ComShopOrderOperateDO();
        orderOperateDO.setOrderNo(orderNo);
        orderOperateDO.setOperationType(ComShopOrderOperateDO.operationType.create);
        orderOperateDO.setOperationTime(new Date());
        if(StringUtils.isNotEmpty(orderCreateDTO.getPhone())){
            orderOperateDO.setOperationContent("用户" + orderCreateDTO.getPhone() + "下单");
            orderOperateDO.setOperationBy("用户" + orderCreateDTO.getPhone());
        }else {
            orderOperateDO.setOperationContent("用户下单");
            orderOperateDO.setOperationBy("用户");
        }
        comShopOrderOperateDAO.insert(orderOperateDO);
        shopOrderVO.setOrderNo(orderNo);
        shopOrderVO.setOrderTotal(orderTotal);
        return R.ok(shopOrderVO);
    }
    /**
     * 分页查询用户订单列表
     * @param comOrderListDTO   请求参数
     * @return  查询结果
     */
    @Override
    public R pageOrderList(PageComOrderListDTO comOrderListDTO){
        Page page = new Page<>(comOrderListDTO.getPageNum(),comOrderListDTO.getPageSize());
        IPage<ComShopOrderPageVO> orderPageVOIPage = this.baseMapper.pageOrderList(page,comOrderListDTO);
        if(!orderPageVOIPage.getRecords().isEmpty()){
            orderPageVOIPage.getRecords().forEach(orderVo -> {
                List<ComShopOrderGoodsVO> orderGoodsVOS = new ArrayList<>();
                //查询订单下商品信息
                List<ComShopOrderGoodsDO> orderGoodsDOList = comShopOrderGoodsDAO.selectList(new QueryWrapper<ComShopOrderGoodsDO>()
                        .eq("order_no",orderVo.getOrderNo()));
                if(!orderGoodsDOList.isEmpty()){
                    orderGoodsDOList.forEach(orderGoods -> {
                        ComShopOrderGoodsVO orderGoodsVO = new ComShopOrderGoodsVO();
                        BeanUtils.copyProperties(orderGoods,orderGoodsVO);
                        orderGoodsVO.setNum(orderGoods.getAmount());
                        orderGoodsVO.setGoodsPic(orderGoods.getGoodsAttrPic());
                        orderGoodsVO.setPrice(orderGoods.getGoodsAttrPrice());
                        orderGoodsVOS.add(orderGoodsVO);
                    });
                }
                orderVo.setOrderGoodsVOList(orderGoodsVOS);
                ComShopStoreVO shopStoreVO = new ComShopStoreVO();
                //查询店铺信息
                ComShopStoreDO shopStoreDO = comShopStoreDAO.selectById(orderVo.getStoreId());
                if(shopStoreDO != null){
                    BeanUtils.copyProperties(shopStoreDO,shopStoreVO);
                }
                orderVo.setShopStoreVO(shopStoreVO);
            });
        }
        return R.ok(orderPageVOIPage);
    }
    /**
     * 根据订单id查询订单详情
     * @param orderId   订单id
     * @return  订单详情
     */
    @Override
    public R orderDetail(Long orderId) {
        ComShopOrderPageVO orderVO = new ComShopOrderPageVO();
        //查询订单信息
        ComShopOrderDO shopOrderDO = this.baseMapper.selectById(orderId);
        if(shopOrderDO == null){
            return R.fail("未查询到订单");
        }
        BeanUtils.copyProperties(shopOrderDO,orderVO);
        orderVO.setOrderTotal(shopOrderDO.getTotalAmount());
        ComShopStoreVO shopStoreVO = new ComShopStoreVO();
        //查询店铺信息
        ComShopStoreDO shopStoreDO = comShopStoreDAO.selectById(shopOrderDO.getStoreId());
        if(shopStoreDO != null){
            BeanUtils.copyProperties(shopStoreDO,shopStoreVO);
        }
        orderVO.setShopStoreVO(shopStoreVO);
        List<ComShopOrderGoodsVO> orderGoodsVOS = new ArrayList<>();
        //查询订单下商品信息
        List<ComShopOrderGoodsDO> orderGoodsDOList = comShopOrderGoodsDAO.selectList(new QueryWrapper<ComShopOrderGoodsDO>()
                .eq("order_no",shopOrderDO.getOrderNo()));
        if(!orderGoodsDOList.isEmpty()){
            orderGoodsDOList.forEach(orderGoods -> {
                ComShopOrderGoodsVO orderGoodsVO = new ComShopOrderGoodsVO();
                BeanUtils.copyProperties(orderGoods,orderGoodsVO);
                orderGoodsVO.setNum(orderGoods.getAmount());
                orderGoodsVO.setGoodsPic(orderGoods.getGoodsAttrPic());
                orderGoodsVO.setPrice(orderGoods.getGoodsAttrPrice());
                orderGoodsVOS.add(orderGoodsVO);
            });
        }
        orderVO.setOrderGoodsVOList(orderGoodsVOS);
        ComShopUserAddressVO userAddressVO = new ComShopUserAddressVO();
        //查询用户收货地址
        ComShopUserAddressDO userAddressDO = comShopUserAddressDAO.selectById(shopOrderDO.getReceiverId());
        if(userAddressDO != null){
            BeanUtils.copyProperties(userAddressDO,userAddressVO);
            orderVO.setUserAddressVO(userAddressVO);
        }
        return R.ok(orderVO);
    }
    /**
     * 根据订单id取消订单
     * @param orderId   订单id
     * @param phone 操作用户手机号
     * @return  取消结果
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public R orderCancel(Long orderId,String phone){
        //查询订单
        ComShopOrderDO shopOrderDO = this.baseMapper.selectById(orderId);
        if(shopOrderDO == null){
            return R.fail("未查询到订单");
        }
        if(!shopOrderDO.getStatus().equals(ComShopOrderDO.status.dfk)){
            return R.fail("已支付订单不可取消");
        }
        //取消订单
        shopOrderDO.setStatus(ComShopOrderDO.status.yqx);
        if(this.baseMapper.updateById(shopOrderDO) > 0){
            //添加订单操作记录
            ComShopOrderOperateDO orderOperateDO = new ComShopOrderOperateDO();
            orderOperateDO.setOrderNo(shopOrderDO.getOrderNo());
            orderOperateDO.setOperationType(ComShopOrderOperateDO.operationType.cancel);
            orderOperateDO.setOperationTime(new Date());
            if(StringUtils.isNotEmpty(phone)){
                orderOperateDO.setOperationContent("用户" + phone + "取消订单");
                orderOperateDO.setOperationBy("用户" + phone);
            }else {
                orderOperateDO.setOperationContent("用户取消订单");
                orderOperateDO.setOperationBy("用户");
            }
            comShopOrderOperateDAO.insert(orderOperateDO);
            return R.ok();
        }else{
            return R.fail("取消订单失败");
        }
    }
    /**
     * 根据订单id删除订单
     * @param orderId   订单id
     * @return  删除结果
     */
    @Override
    public R orderDelete(Long orderId){
        //查询订单
        ComShopOrderDO shopOrderDO = this.baseMapper.selectById(orderId);
        if(shopOrderDO == null){
            return R.fail("未查询到订单");
        }
        if(!shopOrderDO.getStatus().equals(ComShopOrderDO.status.ywc) && !shopOrderDO.getStatus().equals(ComShopOrderDO.status.yqx)){
            return R.fail("该订单状态不可删除");
        }
        shopOrderDO.setDeleteStatus(ComShopOrderDO.deleteStatus.yes);
        if(this.baseMapper.updateById(shopOrderDO) > 0){
            return R.ok();
        }else{
            return R.fail("取消订单失败");
        }
    }
    /**
     * 根据订单id确认收货
     * @param orderId   订单id
     * @param phone 手机号
     * @return  确认结果
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public R orderConfirm(Long orderId, String phone){
        //查询订单
        ComShopOrderDO shopOrderDO = this.baseMapper.selectById(orderId);
        if(shopOrderDO == null){
            return R.fail("未查询到订单");
        }
        if(!shopOrderDO.getStatus().equals(ComShopOrderDO.status.dsh)){
            return R.fail("该订单状态不可确认收货");
        }
        //订单确认收货
        shopOrderDO.setStatus(ComShopOrderDO.status.ywc);
        if(this.baseMapper.updateById(shopOrderDO) > 0){
            //添加订单操作记录
            ComShopOrderOperateDO orderOperateDO = new ComShopOrderOperateDO();
            orderOperateDO.setOrderNo(shopOrderDO.getOrderNo());
            orderOperateDO.setOperationType(ComShopOrderOperateDO.operationType.complete);
            orderOperateDO.setOperationTime(new Date());
            if(StringUtils.isNotEmpty(phone)){
                orderOperateDO.setOperationContent("用户" + phone + "确认收货");
                orderOperateDO.setOperationBy("用户" + phone);
            }else {
                orderOperateDO.setOperationContent("用户确认收货");
                orderOperateDO.setOperationBy("用户");
            }
            comShopOrderOperateDAO.insert(orderOperateDO);
            return R.ok();
        }else{
            return R.fail("确认收货失败");
        }
    }
    /**
     * 统计用户订单数量
     * @param userId    用户id
     * @return  统计结果
     */
    @Override
    public R orderStatistics(Long userId){
        OrderStatisticsVO orderStatisticsVO = new OrderStatisticsVO();
        //待付款订单数
        Integer paymentNum = 0;
        //待发货订单数
        Integer deliverNum = 0;
        //待收货订单数
        Integer receivingNum = 0;
        List<ComShopOrderDO> shopOrderList = this.baseMapper.selectList(new QueryWrapper<ComShopOrderDO>()
                .eq("user_id",userId).eq("delete_status",ComShopOrderDO.deleteStatus.no));
        if(!shopOrderList.isEmpty()){
            for (ComShopOrderDO orderDO:shopOrderList) {
                if(orderDO.getStatus().equals(ComShopOrderDO.status.dfk)){
                    paymentNum++;
                }else if(orderDO.getStatus().equals(ComShopOrderDO.status.dfh)){
                    deliverNum++;
                }else if(orderDO.getStatus().equals(ComShopOrderDO.status.dsh)){
                    receivingNum++;
                }
            }
        }
        orderStatisticsVO.setPaymentNum(paymentNum);
        orderStatisticsVO.setDeliverNum(deliverNum);
        orderStatisticsVO.setReceivingNum(receivingNum);
        return R.ok(orderStatisticsVO);
    }
    @Override
    public R pageShopOrder(PageComShopOrderSearchDTO pageComShopOrderSearchDTO) {
        Long pageNum = pageComShopOrderSearchDTO.getPageNum();
        Long pageSize = pageComShopOrderSearchDTO.getPageSize();
        PageDTO page = new PageDTO();
        page.setPageNum(pageNum);
        page.setPageSize(pageSize);
        if(pageNum==null||new Long(0).equals(pageNum.longValue())){
            page.setPageNum(1l);
        }
        if(pageSize==null||new Long(0).equals(pageSize.longValue())){
            page.setPageSize(10l);
        }
        this.baseMapper.pageOrderBy(page, pageComShopOrderSearchDTO);
        return null;
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopStoreServiceImpl.java
@@ -7,6 +7,10 @@
import com.panzhihua.common.model.dtos.shop.PageComShopStoreDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.shop.PageShopStoreVO;
import com.panzhihua.common.model.vos.shop.ComShopStoreVO;
import com.panzhihua.service_community.dao.ComShopGoodsDAO;
import com.panzhihua.common.model.vos.shop.ComShopStoreVO;
import com.panzhihua.common.model.vos.shop.ShopGoodsVO;
import com.panzhihua.common.model.vos.shop.ShopStoreVO;
import com.panzhihua.service_community.dao.ComShopStoreDAO;
import com.panzhihua.service_community.model.dos.ComShopStoreDO;
@@ -14,6 +18,8 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
 * @auther lyq
@@ -23,6 +29,16 @@
@Slf4j
@Service
public class ComShopStoreServiceImpl extends ServiceImpl<ComShopStoreDAO, ComShopStoreDO> implements ComShopStoreService {
    @Resource
    private ComShopGoodsDAO shopGoodsDAO;
    /**
     * 查询店铺列表
     * @param comShopStoreDTO   请求参数
     * @return  店铺列表
     */
    @Override
    public R pageStoreList(PageComShopStoreDTO pageComShopStoreDTO) {
        Page page = new Page<>(pageComShopStoreDTO.getPageNum(), pageComShopStoreDTO.getPageSize());
@@ -30,6 +46,32 @@
        return R.ok(comShopStoreVOIPage);
    }
    /**
     * 查询店铺详情
     * @param comShopStoreDTO   请求参数
     * @return  店铺详情
     */
    @Override
    public R shopStoreDetail(PageComShopStoreDTO comShopStoreDTO) {
        //查询店铺
        ComShopStoreDO storeDO = this.baseMapper.selectById(comShopStoreDTO.getStoreId());
        if (storeDO == null) {
            return R.fail(401,"店铺不存在");
        }
        if(storeDO.getStatus().equals(ComShopStoreDO.status.no)){
            return R.fail(402,"店铺已被禁用");
        }
        ComShopStoreVO shopStoreVO = new ComShopStoreVO();
        BeanUtils.copyProperties(storeDO, shopStoreVO);
        //查询店铺下商品信息
        Page page = new Page<>(comShopStoreDTO.getPageNum(), comShopStoreDTO.getPageSize());
        shopStoreVO.setGoodsList(shopGoodsDAO.pageShopGoodsByStoreId(page, comShopStoreDTO).getRecords());
        return R.ok(shopStoreVO);
    }
    @Override
    public R saveStore(ShopStoreVO storeVO) {
        if (storeVO == null) {
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopUserAddressServiceImpl.java
@@ -1,11 +1,19 @@
package com.panzhihua.service_community.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.common.model.dtos.shop.ComShopAddressDTO;
import com.panzhihua.common.model.dtos.shop.PageComShopAddressDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.utlis.StringUtils;
import com.panzhihua.service_community.dao.ComShopUserAddressDAO;
import com.panzhihua.service_community.model.dos.ComShopUserAddressDO;
import com.panzhihua.service_community.service.ComShopUserAddressService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
 * @auther lyq
@@ -16,4 +24,97 @@
@Service
public class ComShopUserAddressServiceImpl extends ServiceImpl<ComShopUserAddressDAO, ComShopUserAddressDO> implements ComShopUserAddressService {
    /**
     * 查询用户收获地址列表
     * @param comShopAddressDTO    请求参数
     * @return  用户收货地址列表
     */
    @Override
    public R shopUserAddressList(PageComShopAddressDTO comShopAddressDTO){
        Page page = new Page<>(comShopAddressDTO.getPageNum(),comShopAddressDTO.getPageSize());
        return R.ok(this.baseMapper.pageUserAddressList(page,comShopAddressDTO.getUserId()));
    }
    /**
     * 用户添加收货地址
     * @param comShopAddressDTO 请求参数
     * @return  添加结果
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R shopAddUserAddress(ComShopAddressDTO comShopAddressDTO){
        ComShopUserAddressDO userAddressDO = new ComShopUserAddressDO();
        BeanUtils.copyProperties(comShopAddressDTO,userAddressDO);
        //如果新增的地址为默认地址,需要修改原来的默认地址为不默认
        if(userAddressDO.getIsDefault().equals(ComShopUserAddressDO.isDefault.yes)){
            ComShopUserAddressDO oldUserAddressDO = this.baseMapper.selectOne(new QueryWrapper<ComShopUserAddressDO>()
                    .eq("user_id",comShopAddressDTO.getUserId()).eq("is_default",ComShopUserAddressDO.isDefault.yes));
            if(oldUserAddressDO != null){
                oldUserAddressDO.setIsDefault(ComShopUserAddressDO.isDefault.no);
                this.baseMapper.updateById(oldUserAddressDO);
            }
        }
        if(this.baseMapper.insert(userAddressDO) > 0){
            return R.ok();
        }else{
            return R.fail("添加收货地址失败");
        }
    }
    /**
     * 用户修改收货地址
     * @param comShopAddressDTO 请求参数
     * @return  修改结果
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R shopEditUserAddress(ComShopAddressDTO comShopAddressDTO){
        //查询用户收货地址
        ComShopUserAddressDO userAddressDO = this.baseMapper.selectById(comShopAddressDTO.getAddressId());
        if(userAddressDO == null){
            return R.fail("未查询到用户收货地址信息");
        }
        BeanUtils.copyProperties(comShopAddressDTO,userAddressDO);
        //如果要修改的地址为默认地址,需要修改原来的默认地址为不默认
        if(comShopAddressDTO.getIsDefault().equals(ComShopUserAddressDO.isDefault.yes)){
            ComShopUserAddressDO oldUserAddressDO = this.baseMapper.selectOne(new QueryWrapper<ComShopUserAddressDO>()
                    .eq("user_id",comShopAddressDTO.getUserId()).eq("is_default",ComShopUserAddressDO.isDefault.yes));
            if(oldUserAddressDO != null){
                //判断当前要修改的默认地址是否本来就是默认地址
                if(!oldUserAddressDO.getId().equals(userAddressDO.getId())){
                    oldUserAddressDO.setIsDefault(ComShopUserAddressDO.isDefault.no);
                    this.baseMapper.updateById(oldUserAddressDO);
                }
            }
        }
        if(this.baseMapper.updateById(userAddressDO) > 0){
            return R.ok();
        }else{
            return R.fail("添加收货地址失败");
        }
    }
    /**
     * 用户删除收货地址
     * @param addressId 收货地址id
     * @return  删除结果
     */
    public R shopDelUserAddress(Long addressId){
        //查询用户收货地址
        ComShopUserAddressDO userAddressDO = this.baseMapper.selectById(addressId);
        if(userAddressDO == null){
            return R.fail("未查询到用户收货地址信息");
        }
        if(this.baseMapper.deleteById(addressId) > 0){
            return R.ok();
        }else{
            return R.fail("删除收货地址失败");
        }
    }
}