├── doc ├── 1.png ├── 2.png ├── 3.png └── script │ ├── update.sh │ ├── build.sh │ └── sql │ ├── procedure_uppercase.sql │ └── procedure_utf8mb4.sql ├── shop-quartz ├── src │ └── main │ │ ├── java │ │ └── com │ │ │ └── d2c │ │ │ └── shop │ │ │ └── quartz │ │ │ ├── jobs │ │ │ └── base │ │ │ │ └── BaseJob.java │ │ │ └── QuartzApplication.java │ │ └── resources │ │ ├── application-dev.yml │ │ └── application-test.yml └── Dockerfile ├── shop-service └── src │ └── main │ ├── java │ └── com │ │ └── d2c │ │ └── shop │ │ └── service │ │ ├── common │ │ ├── api │ │ │ ├── constant │ │ │ │ ├── PrefixConstant.java │ │ │ │ ├── ApiConstant.java │ │ │ │ ├── FieldConstant.java │ │ │ │ └── SecurityConstant.java │ │ │ ├── emuns │ │ │ │ ├── OperateEnum.java │ │ │ │ ├── ConditionEnum.java │ │ │ │ └── AssertEnum.java │ │ │ ├── annotation │ │ │ │ ├── Prevent.java │ │ │ │ ├── Condition.java │ │ │ │ └── Assert.java │ │ │ ├── base │ │ │ │ ├── extension │ │ │ │ │ └── BaseDelDO.java │ │ │ │ ├── BaseQuery.java │ │ │ │ ├── BaseDO.java │ │ │ │ └── BaseService.java │ │ │ ├── ResultCode.java │ │ │ ├── PageModel.java │ │ │ └── Response.java │ │ ├── utils │ │ │ ├── ExecutorUtil.java │ │ │ ├── SpringUtil.java │ │ │ ├── ReflectUtil.java │ │ │ └── RequestUtil.java │ │ └── sdk │ │ │ └── sms │ │ │ └── SmsConstant.java │ │ ├── modules │ │ ├── logger │ │ │ ├── mapper │ │ │ │ └── SmsMapper.java │ │ │ ├── nosql │ │ │ │ ├── mongodb │ │ │ │ │ ├── support │ │ │ │ │ │ └── IUoLog.java │ │ │ │ │ ├── repository │ │ │ │ │ │ ├── UserVisitLogRepository.java │ │ │ │ │ │ └── UserOperateLogRepository.java │ │ │ │ │ └── document │ │ │ │ │ │ └── UserVisitLog.java │ │ │ │ └── elasticsearch │ │ │ │ │ ├── repository │ │ │ │ │ ├── MqErrorLogRepository.java │ │ │ │ │ └── BackTraceLogRepository.java │ │ │ │ │ └── document │ │ │ │ │ ├── MqErrorLog.java │ │ │ │ │ └── BackTraceLog.java │ │ │ ├── service │ │ │ │ └── SmsService.java │ │ │ ├── query │ │ │ │ └── SmsQuery.java │ │ │ └── model │ │ │ │ └── SmsDO.java │ │ ├── member │ │ │ ├── mapper │ │ │ │ ├── DummyMapper.java │ │ │ │ ├── OauthMapper.java │ │ │ │ ├── AddressMapper.java │ │ │ │ ├── MemberShopMapper.java │ │ │ │ ├── MemberCouponMapper.java │ │ │ │ └── MemberMapper.java │ │ │ ├── service │ │ │ │ ├── AddressService.java │ │ │ │ ├── MemberShopService.java │ │ │ │ ├── DummyService.java │ │ │ │ ├── MemberCouponService.java │ │ │ │ ├── OauthService.java │ │ │ │ ├── impl │ │ │ │ │ ├── AddressServiceImpl.java │ │ │ │ │ ├── MemberShopServiceImpl.java │ │ │ │ │ ├── DummyServiceImpl.java │ │ │ │ │ └── MemberCouponServiceImpl.java │ │ │ │ └── MemberService.java │ │ │ ├── query │ │ │ │ ├── DummyQuery.java │ │ │ │ ├── OauthQuery.java │ │ │ │ ├── AddressQuery.java │ │ │ │ ├── MemberQuery.java │ │ │ │ └── MemberShopQuery.java │ │ │ └── model │ │ │ │ ├── support │ │ │ │ └── IAddress.java │ │ │ │ ├── DummyDO.java │ │ │ │ └── MemberShopDO.java │ │ ├── order │ │ │ ├── mapper │ │ │ │ ├── PaymentMapper.java │ │ │ │ ├── CartItemMapper.java │ │ │ │ ├── OrderMapper.java │ │ │ │ ├── CrowdGroupMapper.java │ │ │ │ └── OrderItemMapper.java │ │ │ ├── service │ │ │ │ ├── CartItemService.java │ │ │ │ ├── PaymentService.java │ │ │ │ ├── CrowdGroupService.java │ │ │ │ ├── OrderItemService.java │ │ │ │ ├── impl │ │ │ │ │ ├── PaymentServiceImpl.java │ │ │ │ │ ├── CartItemServiceImpl.java │ │ │ │ │ └── OrderItemServiceImpl.java │ │ │ │ └── OrderService.java │ │ │ ├── model │ │ │ │ └── support │ │ │ │ │ └── ITradeItem.java │ │ │ └── query │ │ │ │ ├── PaymentQuery.java │ │ │ │ ├── CartItemQuery.java │ │ │ │ ├── CrowdGroupQuery.java │ │ │ │ └── OrderQuery.java │ │ ├── security │ │ │ ├── mapper │ │ │ │ ├── UserMapper.java │ │ │ │ ├── RoleMenuMapper.java │ │ │ │ ├── UserRoleMapper.java │ │ │ │ ├── MenuMapper.java │ │ │ │ └── RoleMapper.java │ │ │ ├── service │ │ │ │ ├── RoleMenuService.java │ │ │ │ ├── UserRoleService.java │ │ │ │ ├── MenuService.java │ │ │ │ ├── RoleService.java │ │ │ │ ├── UserService.java │ │ │ │ └── impl │ │ │ │ │ ├── RoleMenuServiceImpl.java │ │ │ │ │ ├── UserRoleServiceImpl.java │ │ │ │ │ ├── MenuServiceImpl.java │ │ │ │ │ └── RoleServiceImpl.java │ │ │ ├── query │ │ │ │ ├── RoleQuery.java │ │ │ │ ├── UserQuery.java │ │ │ │ ├── MenuQuery.java │ │ │ │ ├── RoleMenuQuery.java │ │ │ │ └── UserRoleQuery.java │ │ │ └── model │ │ │ │ ├── RoleDO.java │ │ │ │ ├── RoleMenuDO.java │ │ │ │ └── UserRoleDO.java │ │ ├── core │ │ │ ├── mapper │ │ │ │ ├── ShopFlowMapper.java │ │ │ │ ├── ShopkeeperMapper.java │ │ │ │ ├── ShopWithdrawMapper.java │ │ │ │ └── ShopMapper.java │ │ │ ├── service │ │ │ │ ├── ShopFlowService.java │ │ │ │ ├── ShopWithdrawService.java │ │ │ │ ├── ShopService.java │ │ │ │ ├── ShopkeeperService.java │ │ │ │ └── impl │ │ │ │ │ ├── ShopFlowServiceImpl.java │ │ │ │ │ ├── ShopServiceImpl.java │ │ │ │ │ └── ShopWithdrawServiceImpl.java │ │ │ ├── model │ │ │ │ └── support │ │ │ │ │ ├── IShop.java │ │ │ │ │ └── IMember.java │ │ │ └── query │ │ │ │ ├── ShopWithdrawQuery.java │ │ │ │ ├── ShopQuery.java │ │ │ │ ├── ShopFlowQuery.java │ │ │ │ └── ShopkeeperQuery.java │ │ └── product │ │ │ ├── mapper │ │ │ ├── ProductDetailMapper.java │ │ │ ├── ProductCategoryMapper.java │ │ │ ├── ProductClassifyMapper.java │ │ │ ├── CouponMapper.java │ │ │ ├── ProductMapper.java │ │ │ ├── ProductSkuMapper.java │ │ │ └── CouponProductMapper.java │ │ │ ├── service │ │ │ ├── ProductDetailService.java │ │ │ ├── ProductCategoryService.java │ │ │ ├── ProductClassifyService.java │ │ │ ├── CouponService.java │ │ │ ├── ProductSkuService.java │ │ │ ├── CouponProductService.java │ │ │ ├── ProductService.java │ │ │ └── impl │ │ │ │ ├── ProductDetailServiceImpl.java │ │ │ │ ├── ProductCategoryServiceImpl.java │ │ │ │ ├── ProductClassifyServiceImpl.java │ │ │ │ ├── CouponServiceImpl.java │ │ │ │ ├── CouponProductServiceImpl.java │ │ │ │ └── ProductSkuServiceImpl.java │ │ │ ├── query │ │ │ ├── ProductClassifyQuery.java │ │ │ ├── ProductSkuQuery.java │ │ │ ├── ProductDetailQuery.java │ │ │ ├── ProductCategoryQuery.java │ │ │ ├── CouponProductQuery.java │ │ │ └── CouponQuery.java │ │ │ └── model │ │ │ ├── CouponProductDO.java │ │ │ ├── ProductDetailDO.java │ │ │ ├── ProductClassifyDO.java │ │ │ ├── ProductCategoryDO.java │ │ │ └── ProductSkuDO.java │ │ ├── config │ │ ├── MapperConfig.java │ │ └── FastJsonConfig.java │ │ ├── ServiceApplication.java │ │ └── rabbitmq │ │ └── sender │ │ ├── OrderDelayedSender.java │ │ └── CrowdDelayedSender.java │ └── resources │ ├── mapper │ ├── core │ │ └── ShopMapper.xml │ ├── member │ │ └── MemberMapper.xml │ ├── product │ │ ├── CouponMapper.xml │ │ ├── ProductMapper.xml │ │ ├── ProductSkuMapper.xml │ │ └── CouponProductMapper.xml │ ├── security │ │ ├── MenuMapper.xml │ │ └── RoleMapper.xml │ └── order │ │ ├── CrowdGroupMapper.xml │ │ ├── OrderMapper.xml │ │ └── OrderItemMapper.xml │ ├── application-service-dev.yml │ └── application-service-test.yml ├── shop-api ├── shop-api-business │ ├── src │ │ └── main │ │ │ ├── resources │ │ │ ├── application-dev.yml │ │ │ └── application-test.yml │ │ │ └── java │ │ │ └── com │ │ │ └── d2c │ │ │ └── shop │ │ │ └── business │ │ │ ├── api │ │ │ ├── base │ │ │ │ └── BaseController.java │ │ │ └── MessageController.java │ │ │ ├── BusinessApplication.java │ │ │ └── config │ │ │ ├── webmvc │ │ │ └── WebMvcConfig.java │ │ │ └── swagger │ │ │ └── Swagger2Config.java │ └── Dockerfile ├── shop-api-customer │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── d2c │ │ │ └── shop │ │ │ └── customer │ │ │ ├── api │ │ │ ├── handler │ │ │ │ ├── OrderHandler.java │ │ │ │ └── impl │ │ │ │ │ └── OrderPromotionHandler.java │ │ │ ├── base │ │ │ │ └── BaseController.java │ │ │ ├── support │ │ │ │ └── OrderRequestBean.java │ │ │ └── MessageController.java │ │ │ ├── CustomerApplication.java │ │ │ ├── config │ │ │ ├── webmvc │ │ │ │ └── WebMvcConfig.java │ │ │ └── swagger │ │ │ │ └── Swagger2Config.java │ │ │ └── sdk │ │ │ └── pay │ │ │ ├── wxpay │ │ │ ├── IWXPayDomain.java │ │ │ └── WXPayXmlUtil.java │ │ │ └── alipay │ │ │ └── AliPayConfig.java │ └── Dockerfile ├── shop-api-admin │ ├── src │ │ └── main │ │ │ ├── resources │ │ │ ├── application-dev.yml │ │ │ └── application-test.yml │ │ │ └── java │ │ │ └── com │ │ │ └── d2c │ │ │ └── shop │ │ │ └── admin │ │ │ ├── config │ │ │ ├── security │ │ │ │ ├── IgnoreUrlsConfig.java │ │ │ │ ├── handler │ │ │ │ │ ├── RestLoginExpiredHandler.java │ │ │ │ │ ├── RestAccessDeniedHandler.java │ │ │ │ │ └── RestLogoutSuccessHandler.java │ │ │ │ ├── context │ │ │ │ │ └── LoginUserHolder.java │ │ │ │ └── authentication │ │ │ │ │ └── UserDetailsServiceImpl.java │ │ │ ├── logger │ │ │ │ └── HttpTraceConfig.java │ │ │ ├── webmvc │ │ │ │ └── SpringMvcConfig.java │ │ │ └── swagger │ │ │ │ └── Swagger2Config.java │ │ │ ├── AdminApplication.java │ │ │ └── api │ │ │ ├── core │ │ │ ├── ShopController.java │ │ │ ├── ShopFlowController.java │ │ │ ├── ShopkeeperController.java │ │ │ └── ShopWithdrawController.java │ │ │ ├── order │ │ │ ├── OrderController.java │ │ │ ├── PaymentController.java │ │ │ ├── CartItemController.java │ │ │ ├── OrderItemController.java │ │ │ └── CrowdGroupController.java │ │ │ ├── member │ │ │ ├── MemberController.java │ │ │ ├── AddressController.java │ │ │ └── MemberCouponController.java │ │ │ └── product │ │ │ ├── CouponController.java │ │ │ ├── ProductController.java │ │ │ ├── ProductSkuController.java │ │ │ ├── CouponProductController.java │ │ │ ├── ProductDetailController.java │ │ │ ├── ProductCategoryController.java │ │ │ └── ProductClassifyController.java │ └── Dockerfile └── pom.xml ├── .gitignore ├── shop-common ├── shop-common-cache │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── d2c │ │ │ └── shop │ │ │ └── cache │ │ │ └── redis │ │ │ ├── RedisApplication.java │ │ │ └── config │ │ │ └── serializer │ │ │ └── FastJsonRedisSerializer.java │ └── pom.xml ├── shop-common-orm │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── d2c │ │ │ └── shop │ │ │ └── orm │ │ │ └── mybatis │ │ │ ├── MybatisApplication.java │ │ │ └── config │ │ │ └── MybatisConfig.java │ └── pom.xml ├── shop-common-nosql │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── d2c │ │ │ └── shop │ │ │ └── nosql │ │ │ └── mongodb │ │ │ └── MongodbApplication.java │ └── pom.xml ├── shop-common-queue │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── d2c │ │ │ └── shop │ │ │ └── queue │ │ │ └── rabbitmq │ │ │ └── RabbitmqApplication.java │ └── pom.xml ├── shop-common-search │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── d2c │ │ │ └── shop │ │ │ └── search │ │ │ └── ElasticsearchApplication.java │ └── pom.xml └── pom.xml ├── LICENSE_CN └── pom.xml /doc/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/D2C-Cai/shop-mall/HEAD/doc/1.png -------------------------------------------------------------------------------- /doc/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/D2C-Cai/shop-mall/HEAD/doc/2.png -------------------------------------------------------------------------------- /doc/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/D2C-Cai/shop-mall/HEAD/doc/3.png -------------------------------------------------------------------------------- /doc/script/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | CONTAINTER_ID=`docker ps | grep d2c/shop | awk '{print $1}'` 4 | 5 | cd /data/shop 6 | 7 | git pull 8 | 9 | mvn clean install -Dmaven.test.skip=true 10 | 11 | docker restart $CONTAINTER_ID 12 | 13 | echo "OK" -------------------------------------------------------------------------------- /shop-quartz/src/main/java/com/d2c/shop/quartz/jobs/base/BaseJob.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.quartz.jobs.base; 2 | 3 | import org.quartz.Job; 4 | 5 | /** 6 | * @author Cai 7 | */ 8 | public abstract class BaseJob implements Job { 9 | 10 | public abstract String getCronExpression(); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/api/constant/PrefixConstant.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.api.constant; 2 | 3 | /** 4 | * @author BaiCai 5 | */ 6 | public interface PrefixConstant { 7 | 8 | /** 9 | * 订单编号前缀 10 | */ 11 | String ORDER_PREFIX = "T"; 12 | 13 | } 14 | -------------------------------------------------------------------------------- /shop-api/shop-api-business/src/main/resources/application-dev.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8008 3 | tomcat: 4 | uri-encoding: UTF-8 5 | max-threads: 1000 6 | min-spare-threads: 30 7 | 8 | # spring 9 | spring: 10 | profiles: 11 | include: service-dev 12 | 13 | #logging: 14 | # level: 15 | # root: debug 16 | 17 | -------------------------------------------------------------------------------- /shop-api/shop-api-business/src/main/resources/application-test.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8008 3 | tomcat: 4 | uri-encoding: UTF-8 5 | max-threads: 1000 6 | min-spare-threads: 30 7 | 8 | # spring 9 | spring: 10 | profiles: 11 | include: service-test 12 | 13 | #logging: 14 | # level: 15 | # root: debug 16 | 17 | -------------------------------------------------------------------------------- /shop-api/shop-api-customer/src/main/java/com/d2c/shop/customer/api/handler/OrderHandler.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.customer.api.handler; 2 | 3 | import com.d2c.shop.service.modules.order.model.OrderDO; 4 | 5 | /** 6 | * @author Cai 7 | */ 8 | public interface OrderHandler { 9 | 10 | void operator(OrderDO order, Object... conditions); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /doc/script/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd /data 4 | 5 | git clone git://github.com/D2C-Cai/shop.git 6 | 7 | cd ./shop 8 | 9 | mvn clean install -Dmaven.test.skip=true dockerfile:build 10 | 11 | docker run --net=host --name shop --env PROFILE=-Dspring.profiles.active=test -v /etc/localtime:/etc/localtime:ro -v /data/shop/target:/run -d d2c/shop 12 | 13 | echo "OK" -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/logger/mapper/SmsMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.logger.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.logger.model.SmsDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface SmsMapper extends BaseMapper { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/mapper/DummyMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.member.model.DummyDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface DummyMapper extends BaseMapper { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/mapper/OauthMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.member.model.OauthDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface OauthMapper extends BaseMapper { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | .sts4-cache 12 | 13 | ### IntelliJ IDEA ### 14 | .idea 15 | *.iws 16 | *.iml 17 | *.ipr 18 | 19 | ### NetBeans ### 20 | /nbproject/private/ 21 | /build/ 22 | /nbbuild/ 23 | /dist/ 24 | /nbdist/ 25 | /.nb-gradle/ -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/order/mapper/PaymentMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.order.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.order.model.PaymentDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface PaymentMapper extends BaseMapper { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/mapper/UserMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.security.model.UserDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface UserMapper extends BaseMapper { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/core/mapper/ShopFlowMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.core.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.core.model.ShopFlowDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface ShopFlowMapper extends BaseMapper { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/mapper/AddressMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.member.model.AddressDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface AddressMapper extends BaseMapper { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/order/mapper/CartItemMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.order.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.order.model.CartItemDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface CartItemMapper extends BaseMapper { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/config/MapperConfig.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.config; 2 | 3 | import org.mybatis.spring.annotation.MapperScan; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | @Configuration 10 | @MapperScan("com.d2c.shop.service.modules.*.mapper") 11 | public class MapperConfig { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/core/mapper/ShopkeeperMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.core.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.core.model.ShopkeeperDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface ShopkeeperMapper extends BaseMapper { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/service/AddressService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.member.model.AddressDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface AddressService extends IService { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/order/service/CartItemService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.order.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.order.model.CartItemDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface CartItemService extends IService { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/order/service/PaymentService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.order.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.order.model.PaymentDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface PaymentService extends IService { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/mapper/MemberShopMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.member.model.MemberShopDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface MemberShopMapper extends BaseMapper { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/mapper/RoleMenuMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.security.model.RoleMenuDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface RoleMenuMapper extends BaseMapper { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/mapper/UserRoleMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.security.model.UserRoleDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface UserRoleMapper extends BaseMapper { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/core/mapper/ShopWithdrawMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.core.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.core.model.ShopWithdrawDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface ShopWithdrawMapper extends BaseMapper { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/logger/nosql/mongodb/support/IUoLog.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.logger.nosql.mongodb.support; 2 | 3 | /** 4 | * @author Cai 5 | */ 6 | public interface IUoLog { 7 | 8 | String getPic(); 9 | 10 | String getName(); 11 | 12 | String getInfo(); 13 | 14 | Long getTargetId(); 15 | 16 | Long getShopId(); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/service/RoleMenuService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.security.model.RoleMenuDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface RoleMenuService extends IService { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/service/UserRoleService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.security.model.UserRoleDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface UserRoleService extends IService { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/mapper/MemberCouponMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.member.model.MemberCouponDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface MemberCouponMapper extends BaseMapper { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/service/MemberShopService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.member.model.MemberShopDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface MemberShopService extends IService { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/query/DummyQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.query; 2 | 3 | import com.d2c.shop.service.common.api.base.BaseQuery; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | /** 8 | * @author BaiCai 9 | */ 10 | @Data 11 | @EqualsAndHashCode(callSuper = false) 12 | public class DummyQuery extends BaseQuery { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/mapper/ProductDetailMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.product.model.ProductDetailDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface ProductDetailMapper extends BaseMapper { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/mapper/ProductCategoryMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.product.model.ProductCategoryDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface ProductCategoryMapper extends BaseMapper { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/mapper/ProductClassifyMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.product.model.ProductClassifyDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface ProductClassifyMapper extends BaseMapper { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/service/ProductDetailService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.product.model.ProductDetailDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface ProductDetailService extends IService { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/service/ProductCategoryService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.product.model.ProductCategoryDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface ProductCategoryService extends IService { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/service/ProductClassifyService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.product.model.ProductClassifyDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface ProductClassifyService extends IService { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/api/emuns/OperateEnum.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.api.emuns; 2 | 3 | /** 4 | * @author BaiCai 5 | */ 6 | public enum OperateEnum { 7 | // 8 | INSERT("新增"), 9 | UPDATE("更新"), 10 | DELETE("删除"); 11 | // 12 | private String description; 13 | 14 | OperateEnum(String description) { 15 | this.description = description; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/query/ProductClassifyQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.query; 2 | 3 | import com.d2c.shop.service.common.api.base.BaseQuery; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | /** 8 | * @author BaiCai 9 | */ 10 | @Data 11 | @EqualsAndHashCode(callSuper = false) 12 | public class ProductClassifyQuery extends BaseQuery { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/service/CouponService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.product.model.CouponDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface CouponService extends IService { 10 | 11 | int updateConsumption(Long id); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/core/service/ShopFlowService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.core.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.core.model.ShopFlowDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface ShopFlowService extends IService { 10 | 11 | int doFlowing(ShopFlowDO shopFlow); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/core/service/ShopWithdrawService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.core.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.core.model.ShopWithdrawDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface ShopWithdrawService extends IService { 10 | 11 | int doWithdraw(ShopWithdrawDO shopWithdraw); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/service/DummyService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.member.model.DummyDO; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author BaiCai 10 | */ 11 | public interface DummyService extends IService { 12 | 13 | List findRandom(Integer size); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/ServiceApplication.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | /** 7 | * @author Cai 8 | */ 9 | @SpringBootApplication 10 | public class ServiceApplication { 11 | 12 | public static void main(String[] args) { 13 | SpringApplication.run(ServiceApplication.class, args); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/logger/nosql/mongodb/repository/UserVisitLogRepository.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.logger.nosql.mongodb.repository; 2 | 3 | import com.d2c.shop.service.modules.logger.nosql.mongodb.document.UserVisitLog; 4 | import org.springframework.data.mongodb.repository.MongoRepository; 5 | 6 | /** 7 | * @author Cai 8 | */ 9 | public interface UserVisitLogRepository extends MongoRepository { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/service/MenuService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.security.model.MenuDO; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author BaiCai 10 | */ 11 | public interface MenuService extends IService { 12 | 13 | List findByRoleId(List roleIds); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/logger/nosql/mongodb/repository/UserOperateLogRepository.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.logger.nosql.mongodb.repository; 2 | 3 | import com.d2c.shop.service.modules.logger.nosql.mongodb.document.UserOperateLog; 4 | import org.springframework.data.mongodb.repository.MongoRepository; 5 | 6 | /** 7 | * @author Cai 8 | */ 9 | public interface UserOperateLogRepository extends MongoRepository { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/logger/service/SmsService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.logger.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.logger.model.SmsDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface SmsService extends IService { 10 | 11 | boolean doSend(String mobile, String ip); 12 | 13 | boolean doCheck(String mobile, String code); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/utils/ExecutorUtil.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.utils; 2 | 3 | import java.util.concurrent.ExecutorService; 4 | import java.util.concurrent.Executors; 5 | 6 | /** 7 | * @author Cai 8 | */ 9 | public class ExecutorUtil { 10 | 11 | // 12 | public static ExecutorService cachedPool = Executors.newCachedThreadPool(); 13 | // 14 | public static ExecutorService fixedPool = Executors.newFixedThreadPool(50); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/mapper/CouponMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.product.model.CouponDO; 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | /** 8 | * @author BaiCai 9 | */ 10 | public interface CouponMapper extends BaseMapper { 11 | 12 | int updateConsumption(@Param("id") Long id); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /shop-common/shop-common-cache/src/main/java/com/d2c/shop/cache/redis/RedisApplication.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.cache.redis; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | /** 7 | * @author Cai 8 | */ 9 | @SpringBootApplication 10 | public class RedisApplication { 11 | 12 | public static void main(String[] args) { 13 | SpringApplication.run(RedisApplication.class, args); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shop-common/shop-common-orm/src/main/java/com/d2c/shop/orm/mybatis/MybatisApplication.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.orm.mybatis; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | /** 7 | * @author Cai 8 | */ 9 | @SpringBootApplication 10 | public class MybatisApplication { 11 | 12 | public static void main(String[] args) { 13 | SpringApplication.run(MybatisApplication.class, args); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shop-quartz/src/main/resources/application-dev.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8090 3 | tomcat: 4 | uri-encoding: UTF-8 5 | max-threads: 1000 6 | min-spare-threads: 30 7 | 8 | # spring 9 | spring: 10 | profiles: 11 | include: service-dev 12 | 13 | quartz: 14 | job-store-type: jdbc 15 | properties: 16 | org: 17 | quartz: 18 | jobStore: 19 | isClustered: true 20 | misfireThreshold: 100 21 | 22 | #logging: 23 | # level: 24 | # root: debug -------------------------------------------------------------------------------- /shop-quartz/src/main/resources/application-test.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8090 3 | tomcat: 4 | uri-encoding: UTF-8 5 | max-threads: 1000 6 | min-spare-threads: 30 7 | 8 | # spring 9 | spring: 10 | profiles: 11 | include: service-test 12 | 13 | quartz: 14 | job-store-type: jdbc 15 | properties: 16 | org: 17 | quartz: 18 | jobStore: 19 | isClustered: true 20 | misfireThreshold: 100 21 | 22 | #logging: 23 | # level: 24 | # root: debug -------------------------------------------------------------------------------- /shop-common/shop-common-nosql/src/main/java/com/d2c/shop/nosql/mongodb/MongodbApplication.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.nosql.mongodb; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | /** 7 | * @author Cai 8 | */ 9 | @SpringBootApplication 10 | public class MongodbApplication { 11 | 12 | public static void main(String[] args) { 13 | SpringApplication.run(MongodbApplication.class, args); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/model/support/IAddress.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.model.support; 2 | 3 | /** 4 | * @author Cai 5 | */ 6 | public interface IAddress { 7 | 8 | Long getMemberId(); 9 | 10 | String getMemberAccount(); 11 | 12 | String getProvince(); 13 | 14 | String getCity(); 15 | 16 | String getDistrict(); 17 | 18 | String getAddress(); 19 | 20 | String getName(); 21 | 22 | String getMobile(); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/order/service/CrowdGroupService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.order.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.order.model.CrowdGroupDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface CrowdGroupService extends IService { 10 | 11 | int doAttend(Long id, String avatars); 12 | 13 | int doCancel(Long id, String avatars); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /shop-common/shop-common-queue/src/main/java/com/d2c/shop/queue/rabbitmq/RabbitmqApplication.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.queue.rabbitmq; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | /** 7 | * @author Cai 8 | */ 9 | @SpringBootApplication 10 | public class RabbitmqApplication { 11 | 12 | public static void main(String[] args) { 13 | SpringApplication.run(RabbitmqApplication.class, args); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shop-common/shop-common-search/src/main/java/com/d2c/shop/search/ElasticsearchApplication.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.search; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | /** 7 | * @author Cai 8 | */ 9 | @SpringBootApplication 10 | public class ElasticsearchApplication { 11 | 12 | public static void main(String[] args) { 13 | SpringApplication.run(ElasticsearchApplication.class, args); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/logger/nosql/elasticsearch/repository/MqErrorLogRepository.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.logger.nosql.elasticsearch.repository; 2 | 3 | import com.d2c.shop.service.modules.logger.nosql.elasticsearch.document.MqErrorLog; 4 | import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface MqErrorLogRepository extends ElasticsearchRepository { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/logger/nosql/elasticsearch/repository/BackTraceLogRepository.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.logger.nosql.elasticsearch.repository; 2 | 3 | import com.d2c.shop.service.modules.logger.nosql.elasticsearch.document.BackTraceLog; 4 | import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface BackTraceLogRepository extends ElasticsearchRepository { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/resources/application-dev.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8030 3 | tomcat: 4 | uri-encoding: UTF-8 5 | max-threads: 1000 6 | min-spare-threads: 30 7 | 8 | # spring 9 | spring: 10 | profiles: 11 | include: service-dev 12 | 13 | # ignored-urls 14 | ignored: 15 | urls: 16 | - /download/** 17 | - /login/expired 18 | - /swagger-ui.html 19 | - /swagger-resources/** 20 | - /webjars/** 21 | - /v2/api-docs 22 | 23 | #logging: 24 | # level: 25 | # root: debug 26 | 27 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/resources/application-test.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8030 3 | tomcat: 4 | uri-encoding: UTF-8 5 | max-threads: 1000 6 | min-spare-threads: 30 7 | 8 | # spring 9 | spring: 10 | profiles: 11 | include: service-test 12 | 13 | # ignored-urls 14 | ignored: 15 | urls: 16 | - /download/** 17 | - /login/expired 18 | - /swagger-ui.html 19 | - /swagger-resources/** 20 | - /webjars/** 21 | - /v2/api-docs 22 | 23 | #logging: 24 | # level: 25 | # root: debug 26 | 27 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/core/model/support/IShop.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.core.model.support; 2 | 3 | /** 4 | * @author Cai 5 | */ 6 | public interface IShop { 7 | 8 | String getName(); 9 | 10 | String getLogo(); 11 | 12 | String getBanner(); 13 | 14 | String getSummary(); 15 | 16 | String getNotice(); 17 | 18 | String getScope(); 19 | 20 | String getAddress(); 21 | 22 | String getTelephone(); 23 | 24 | String getHours(); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/service/RoleService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.security.model.RoleDO; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author BaiCai 10 | */ 11 | public interface RoleService extends IService { 12 | 13 | List findByUserId(Long userId); 14 | 15 | List findByMenuId(Long menuId); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/core/service/ShopService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.core.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.core.model.ShopDO; 5 | 6 | import java.math.BigDecimal; 7 | 8 | /** 9 | * @author BaiCai 10 | */ 11 | public interface ShopService extends IService { 12 | 13 | ShopDO doCreate(ShopDO shop, String account); 14 | 15 | int updateBalance(Long id, BigDecimal amount); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/mapper/MenuMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.security.model.MenuDO; 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author BaiCai 11 | */ 12 | public interface MenuMapper extends BaseMapper { 13 | 14 | List findByRoleId(@Param("roleIds") List roleIds); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/sdk/sms/SmsConstant.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.sdk.sms; 2 | 3 | /** 4 | * @author BaiCai 5 | */ 6 | public interface SmsConstant { 7 | 8 | /** 9 | * 签名加密key 10 | */ 11 | String SIGN_KEY = "3dcb6a2698036913d0bf235a448b9118"; 12 | /** 13 | * 商户签名 14 | */ 15 | String ACCOUNT_SIGN = "赋能店铺"; 16 | /** 17 | * 短信验证码模板 18 | */ 19 | String CODE_TEMPLATE = "您的短信验证码为:${code},请于15分钟内输入验证,请勿向他人泄露。工作人员不会以任何方式向您索要短信验证码,谨防欺诈短信。"; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/core/mapper/ShopMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.core.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.core.model.ShopDO; 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | import java.math.BigDecimal; 8 | 9 | /** 10 | * @author BaiCai 11 | */ 12 | public interface ShopMapper extends BaseMapper { 13 | 14 | int updateBalance(@Param("id") Long id, @Param("amount") BigDecimal amount); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/service/MemberCouponService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.member.model.MemberCouponDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface MemberCouponService extends IService { 10 | 11 | MemberCouponDO doReceive(MemberCouponDO memberCoupon); 12 | 13 | MemberCouponDO doSend(MemberCouponDO memberCoupon); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /shop-api/shop-api-business/src/main/java/com/d2c/shop/business/api/base/BaseController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.business.api.base; 2 | 3 | import com.d2c.shop.business.api.holder.LoginKeeperHolder; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | 6 | import javax.servlet.http.HttpServletRequest; 7 | 8 | /** 9 | * @author Cai 10 | */ 11 | public abstract class BaseController { 12 | 13 | @Autowired 14 | public LoginKeeperHolder loginKeeperHolder; 15 | @Autowired 16 | public HttpServletRequest request; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-api/shop-api-customer/src/main/java/com/d2c/shop/customer/api/base/BaseController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.customer.api.base; 2 | 3 | import com.d2c.shop.customer.api.holder.LoginMemberHolder; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | 6 | import javax.servlet.http.HttpServletRequest; 7 | 8 | /** 9 | * @author Cai 10 | */ 11 | public abstract class BaseController { 12 | 13 | @Autowired 14 | public LoginMemberHolder loginMemberHolder; 15 | @Autowired 16 | public HttpServletRequest request; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/mapper/MemberMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.member.model.MemberDO; 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | import java.math.BigDecimal; 8 | 9 | /** 10 | * @author BaiCai 11 | */ 12 | public interface MemberMapper extends BaseMapper { 13 | 14 | int doConsume(@Param("id") Long id, @Param("amount") BigDecimal amount); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/service/ProductSkuService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.product.model.ProductSkuDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface ProductSkuService extends IService { 10 | 11 | int doDeductStock(Long id, Long productId, Integer quantity); 12 | 13 | int doReturnStock(Long id, Long productId, Integer quantity); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/order/model/support/ITradeItem.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.order.model.support; 2 | 3 | /** 4 | * @author Cai 5 | */ 6 | public interface ITradeItem { 7 | 8 | Long getShopId(); 9 | 10 | Long getMemberId(); 11 | 12 | String getMemberAccount(); 13 | 14 | Long getProductId(); 15 | 16 | Long getProductSkuId(); 17 | 18 | Integer getQuantity(); 19 | 20 | String getStandard(); 21 | 22 | String getProductName(); 23 | 24 | String getProductPic(); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/order/service/OrderItemService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.order.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.order.model.OrderItemDO; 5 | import com.d2c.shop.service.modules.order.query.OrderItemQuery; 6 | 7 | import java.util.Map; 8 | 9 | /** 10 | * @author BaiCai 11 | */ 12 | public interface OrderItemService extends IService { 13 | 14 | Map countDaily(OrderItemQuery query); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/service/CouponProductService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.product.model.CouponProductDO; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author BaiCai 10 | */ 11 | public interface CouponProductService extends IService { 12 | 13 | List findQualified(List couponIds, List productIds, Integer type); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/api/constant/ApiConstant.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.api.constant; 2 | 3 | /** 4 | * @author BaiCai 5 | */ 6 | public interface ApiConstant { 7 | 8 | /** 9 | * APP的识别号 10 | */ 11 | String APP_TERMINAL = "appTerminal"; 12 | /** 13 | * APP的版本号 14 | */ 15 | String APP_VERSION = "appVersion"; 16 | /** 17 | * 请求来源单位 18 | */ 19 | String USER_AGENT = "User-Agent"; 20 | /** 21 | * 请求设备系统 22 | */ 23 | String DEVICE = "Device"; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/core/model/support/IMember.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.core.model.support; 2 | 3 | import java.util.Date; 4 | 5 | /** 6 | * @author Cai 7 | */ 8 | public interface IMember { 9 | 10 | String getAccount(); 11 | 12 | String getPassword(); 13 | 14 | String getNickname(); 15 | 16 | String getAvatar(); 17 | 18 | String getAccessToken(); 19 | 20 | Date getAccessExpired(); 21 | 22 | String getRegisterIp(); 23 | 24 | Date getLoginDate(); 25 | 26 | String getLoginIp(); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/service/OauthService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.member.model.OauthDO; 5 | 6 | import java.util.Date; 7 | 8 | /** 9 | * @author BaiCai 10 | */ 11 | public interface OauthService extends IService { 12 | 13 | OauthDO findByUnionId(String unionId); 14 | 15 | boolean doLogin(String unionId, String nickname, String avatar, String accessToken, Date accessExpired); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /shop-service/src/main/resources/mapper/core/ShopMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | UPDATE CORE_SHOP 10 | SET balance=balance + #{amount}, modify_date=now() 11 | WHERE id = #{id} 12 | 13 | 14 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/order/mapper/OrderMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.order.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.order.model.OrderDO; 5 | import com.d2c.shop.service.modules.order.query.OrderQuery; 6 | import org.apache.ibatis.annotations.Param; 7 | 8 | import java.util.Map; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | public interface OrderMapper extends BaseMapper { 14 | 15 | Map countDaily(@Param("query") OrderQuery query); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/mapper/RoleMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.security.model.RoleDO; 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author BaiCai 11 | */ 12 | public interface RoleMapper extends BaseMapper { 13 | 14 | List findByUserId(@Param("userId") Long userId); 15 | 16 | List findByMenuId(@Param("menuId") Long menuId); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/config/security/IgnoreUrlsConfig.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.config.security; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Data 14 | @Configuration 15 | @ConfigurationProperties(prefix = "ignored") 16 | public class IgnoreUrlsConfig { 17 | 18 | private List urls = new ArrayList<>(); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/api/annotation/Prevent.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.api.annotation; 2 | 3 | import com.d2c.shop.service.common.api.emuns.OperateEnum; 4 | 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.Target; 7 | 8 | import static java.lang.annotation.ElementType.FIELD; 9 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 10 | 11 | /** 12 | * @author BaiCai 13 | */ 14 | @Target(FIELD) 15 | @Retention(RUNTIME) 16 | public @interface Prevent { 17 | 18 | OperateEnum operate() default OperateEnum.UPDATE; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/order/mapper/CrowdGroupMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.order.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.order.model.CrowdGroupDO; 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | /** 8 | * @author BaiCai 9 | */ 10 | public interface CrowdGroupMapper extends BaseMapper { 11 | 12 | int doAttend(@Param("id") Long id, @Param("avatars") String avatars); 13 | 14 | int doCancel(@Param("id") Long id, @Param("avatars") String avatars); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/service/ProductService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.product.model.ProductDO; 5 | 6 | /** 7 | * @author BaiCai 8 | */ 9 | public interface ProductService extends IService { 10 | 11 | ProductDO doCreate(ProductDO product); 12 | 13 | boolean doUpdate(ProductDO product); 14 | 15 | int doDeductStock(Long id, Integer quantity); 16 | 17 | int doReturnStock(Long id, Integer quantity); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/order/mapper/OrderItemMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.order.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.order.model.OrderItemDO; 5 | import com.d2c.shop.service.modules.order.query.OrderItemQuery; 6 | import org.apache.ibatis.annotations.Param; 7 | 8 | import java.util.Map; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | public interface OrderItemMapper extends BaseMapper { 14 | 15 | Map countDaily(@Param("query") OrderItemQuery query); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/mapper/ProductMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.product.model.ProductDO; 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | /** 8 | * @author BaiCai 9 | */ 10 | public interface ProductMapper extends BaseMapper { 11 | 12 | int doDeductStock(@Param("id") Long id, @Param("quantity") Integer quantity); 13 | 14 | int doReturnStock(@Param("id") Long id, @Param("quantity") Integer quantity); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/service/UserService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.security.model.UserDO; 5 | 6 | import java.util.Date; 7 | 8 | /** 9 | * @author BaiCai 10 | */ 11 | public interface UserService extends IService { 12 | 13 | UserDO findByUsername(String username); 14 | 15 | boolean doLogin(String username, String loginIp, String accessToken, Date accessExpired); 16 | 17 | boolean doLogout(String username); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/mapper/ProductSkuMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.product.model.ProductSkuDO; 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | /** 8 | * @author BaiCai 9 | */ 10 | public interface ProductSkuMapper extends BaseMapper { 11 | 12 | int doDeductStock(@Param("id") Long id, @Param("quantity") Integer quantity); 13 | 14 | int doReturnStock(@Param("id") Long id, @Param("quantity") Integer quantity); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shop-service/src/main/resources/mapper/member/MemberMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | UPDATE M_MEMBER 10 | SET consume_times=consume_times + 1, consume_amount=consume_amount + #{amount}, modify_date=now() 11 | WHERE id = #{id} 12 | 13 | 14 | -------------------------------------------------------------------------------- /shop-quartz/src/main/java/com/d2c/shop/quartz/QuartzApplication.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.quartz; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | /* 7 | * VM options: -Dspring.profiles.active=dev -Des.set.netty.runtime.available.processors=false 8 | */ 9 | @SpringBootApplication(scanBasePackages = "com.d2c") 10 | public class QuartzApplication { 11 | 12 | // VM options 解决整合Redis,Mongodb,Elasticsearch启动和部署的一系列问题 13 | public static void main(String[] args) { 14 | SpringApplication.run(QuartzApplication.class, args); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/order/service/impl/PaymentServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.order.service.impl; 2 | 3 | import com.d2c.shop.service.common.api.base.BaseService; 4 | import com.d2c.shop.service.modules.order.mapper.PaymentMapper; 5 | import com.d2c.shop.service.modules.order.model.PaymentDO; 6 | import com.d2c.shop.service.modules.order.service.PaymentService; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * @author BaiCai 11 | */ 12 | @Service 13 | public class PaymentServiceImpl extends BaseService implements PaymentService { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/AdminApplication.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | /* 7 | * VM options: -Dspring.profiles.active=dev -Des.set.netty.runtime.available.processors=false 8 | */ 9 | @SpringBootApplication(scanBasePackages = "com.d2c") 10 | public class AdminApplication { 11 | 12 | // VM options 解决整合Redis,Mongodb,Elasticsearch启动和部署的一系列问题 13 | public static void main(String[] args) { 14 | SpringApplication.run(AdminApplication.class, args); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/service/impl/AddressServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.service.impl; 2 | 3 | import com.d2c.shop.service.common.api.base.BaseService; 4 | import com.d2c.shop.service.modules.member.mapper.AddressMapper; 5 | import com.d2c.shop.service.modules.member.model.AddressDO; 6 | import com.d2c.shop.service.modules.member.service.AddressService; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * @author BaiCai 11 | */ 12 | @Service 13 | public class AddressServiceImpl extends BaseService implements AddressService { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/order/service/impl/CartItemServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.order.service.impl; 2 | 3 | import com.d2c.shop.service.common.api.base.BaseService; 4 | import com.d2c.shop.service.modules.order.mapper.CartItemMapper; 5 | import com.d2c.shop.service.modules.order.model.CartItemDO; 6 | import com.d2c.shop.service.modules.order.service.CartItemService; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * @author BaiCai 11 | */ 12 | @Service 13 | public class CartItemServiceImpl extends BaseService implements CartItemService { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /shop-service/src/main/resources/mapper/product/CouponMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | UPDATE P_COUPON 10 | SET consumption=consumption + 1, modify_date=now() 11 | WHERE id = #{id} 12 | AND consumption < circulation 13 | 14 | 15 | -------------------------------------------------------------------------------- /shop-quartz/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:8-jdk-alpine 2 | VOLUME /tmp 3 | RUN echo "Asia/Shanghai" > /etc/timezone 4 | #ADD target/shop-quartz.jar /run/shop-quartz.jar 5 | ENV PROFILE "" 6 | ENV PASSWORD "" 7 | CMD java $PROFILE $PASSWORD -Djava.security.egd=file:/dev/./urandom -Des.set.netty.runtime.available.processors=false -jar /run/shop-quartz.jar 8 | 9 | # mvn clean install -Dmaven.test.skip=true dockerfile:build 10 | # docker run --net=host --name shop-quartz --env PROFILE=-Dspring.profiles.active=test --env PASSWORD=-Djasypt.encryptor.password=5042d146667518a1a5017644946b8650aafca44c -v /etc/localtime:/etc/localtime:ro -v /data/shop/target:/run -d d2c/shop-quartz -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/mapper/CouponProductMapper.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.d2c.shop.service.modules.product.model.CouponProductDO; 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author BaiCai 11 | */ 12 | public interface CouponProductMapper extends BaseMapper { 13 | 14 | List findQualified(@Param("couponIds") List couponIds, @Param("productIds") List productIds, @Param("type") Integer type); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/service/impl/RoleMenuServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.service.impl; 2 | 3 | import com.d2c.shop.service.common.api.base.BaseService; 4 | import com.d2c.shop.service.modules.security.mapper.RoleMenuMapper; 5 | import com.d2c.shop.service.modules.security.model.RoleMenuDO; 6 | import com.d2c.shop.service.modules.security.service.RoleMenuService; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * @author BaiCai 11 | */ 12 | @Service 13 | public class RoleMenuServiceImpl extends BaseService implements RoleMenuService { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/service/impl/UserRoleServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.service.impl; 2 | 3 | import com.d2c.shop.service.common.api.base.BaseService; 4 | import com.d2c.shop.service.modules.security.mapper.UserRoleMapper; 5 | import com.d2c.shop.service.modules.security.model.UserRoleDO; 6 | import com.d2c.shop.service.modules.security.service.UserRoleService; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * @author BaiCai 11 | */ 12 | @Service 13 | public class UserRoleServiceImpl extends BaseService implements UserRoleService { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /shop-api/shop-api-business/src/main/java/com/d2c/shop/business/BusinessApplication.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.business; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | /* 7 | * VM options: -Dspring.profiles.active=dev -Des.set.netty.runtime.available.processors=false 8 | */ 9 | @SpringBootApplication(scanBasePackages = "com.d2c") 10 | public class BusinessApplication { 11 | 12 | // VM options 解决整合Redis,Mongodb,Elasticsearch启动和部署的一系列问题 13 | public static void main(String[] args) { 14 | SpringApplication.run(BusinessApplication.class, args); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /shop-api/shop-api-customer/src/main/java/com/d2c/shop/customer/CustomerApplication.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.customer; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | /* 7 | * VM options: -Dspring.profiles.active=dev -Des.set.netty.runtime.available.processors=false 8 | */ 9 | @SpringBootApplication(scanBasePackages = "com.d2c") 10 | public class CustomerApplication { 11 | 12 | // VM options 解决整合Redis,Mongodb,Elasticsearch启动和部署的一系列问题 13 | public static void main(String[] args) { 14 | SpringApplication.run(CustomerApplication.class, args); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/api/core/ShopController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.api.core; 2 | 3 | import com.d2c.shop.admin.api.base.BaseCtrl; 4 | import com.d2c.shop.service.modules.core.model.ShopDO; 5 | import com.d2c.shop.service.modules.core.query.ShopQuery; 6 | import io.swagger.annotations.Api; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Api(description = "店铺管理") 14 | @RestController 15 | @RequestMapping("/back/shop") 16 | public class ShopController extends BaseCtrl { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/service/impl/MemberShopServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.service.impl; 2 | 3 | import com.d2c.shop.service.common.api.base.BaseService; 4 | import com.d2c.shop.service.modules.member.mapper.MemberShopMapper; 5 | import com.d2c.shop.service.modules.member.model.MemberShopDO; 6 | import com.d2c.shop.service.modules.member.service.MemberShopService; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * @author BaiCai 11 | */ 12 | @Service 13 | public class MemberShopServiceImpl extends BaseService implements MemberShopService { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/api/order/OrderController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.api.order; 2 | 3 | import com.d2c.shop.admin.api.base.BaseCtrl; 4 | import com.d2c.shop.service.modules.order.model.OrderDO; 5 | import com.d2c.shop.service.modules.order.query.OrderQuery; 6 | import io.swagger.annotations.Api; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Api(description = "订单管理") 14 | @RestController 15 | @RequestMapping("/back/order") 16 | public class OrderController extends BaseCtrl { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/api/annotation/Condition.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.api.annotation; 2 | 3 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 4 | 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.Target; 7 | 8 | import static java.lang.annotation.ElementType.FIELD; 9 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 10 | 11 | /** 12 | * @author BaiCai 13 | */ 14 | @Target(FIELD) 15 | @Retention(RUNTIME) 16 | public @interface Condition { 17 | 18 | ConditionEnum condition() default ConditionEnum.EQ; 19 | 20 | String field() default ""; 21 | 22 | String sql() default ""; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/api/member/MemberController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.api.member; 2 | 3 | import com.d2c.shop.admin.api.base.BaseCtrl; 4 | import com.d2c.shop.service.modules.member.model.MemberDO; 5 | import com.d2c.shop.service.modules.member.query.MemberQuery; 6 | import io.swagger.annotations.Api; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Api(description = "会员管理") 14 | @RestController 15 | @RequestMapping("/back/member") 16 | public class MemberController extends BaseCtrl { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/api/order/PaymentController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.api.order; 2 | 3 | import com.d2c.shop.admin.api.base.BaseCtrl; 4 | import com.d2c.shop.service.modules.order.model.PaymentDO; 5 | import com.d2c.shop.service.modules.order.query.PaymentQuery; 6 | import io.swagger.annotations.Api; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Api(description = "支付单管理") 14 | @RestController 15 | @RequestMapping("/back/payment") 16 | public class PaymentController extends BaseCtrl { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/service/impl/ProductDetailServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.service.impl; 2 | 3 | import com.d2c.shop.service.common.api.base.BaseService; 4 | import com.d2c.shop.service.modules.product.mapper.ProductDetailMapper; 5 | import com.d2c.shop.service.modules.product.model.ProductDetailDO; 6 | import com.d2c.shop.service.modules.product.service.ProductDetailService; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * @author BaiCai 11 | */ 12 | @Service 13 | public class ProductDetailServiceImpl extends BaseService implements ProductDetailService { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/api/core/ShopFlowController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.api.core; 2 | 3 | import com.d2c.shop.admin.api.base.BaseCtrl; 4 | import com.d2c.shop.service.modules.core.model.ShopFlowDO; 5 | import com.d2c.shop.service.modules.core.query.ShopFlowQuery; 6 | import io.swagger.annotations.Api; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Api(description = "店铺流水管理") 14 | @RestController 15 | @RequestMapping("/back/shop_flow") 16 | public class ShopFlowController extends BaseCtrl { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/api/member/AddressController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.api.member; 2 | 3 | import com.d2c.shop.admin.api.base.BaseCtrl; 4 | import com.d2c.shop.service.modules.member.model.AddressDO; 5 | import com.d2c.shop.service.modules.member.query.AddressQuery; 6 | import io.swagger.annotations.Api; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Api(description = "收货地址管理") 14 | @RestController 15 | @RequestMapping("/back/address") 16 | public class AddressController extends BaseCtrl { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/api/product/CouponController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.api.product; 2 | 3 | import com.d2c.shop.admin.api.base.BaseCtrl; 4 | import com.d2c.shop.service.modules.product.model.CouponDO; 5 | import com.d2c.shop.service.modules.product.query.CouponQuery; 6 | import io.swagger.annotations.Api; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Api(description = "优惠券管理") 14 | @RestController 15 | @RequestMapping("/back/coupon") 16 | public class CouponController extends BaseCtrl { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/api/order/CartItemController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.api.order; 2 | 3 | import com.d2c.shop.admin.api.base.BaseCtrl; 4 | import com.d2c.shop.service.modules.order.model.CartItemDO; 5 | import com.d2c.shop.service.modules.order.query.CartItemQuery; 6 | import io.swagger.annotations.Api; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Api(description = "购物车管理") 14 | @RestController 15 | @RequestMapping("/back/cart_item") 16 | public class CartItemController extends BaseCtrl { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/api/product/ProductController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.api.product; 2 | 3 | import com.d2c.shop.admin.api.base.BaseCtrl; 4 | import com.d2c.shop.service.modules.product.model.ProductDO; 5 | import com.d2c.shop.service.modules.product.query.ProductQuery; 6 | import io.swagger.annotations.Api; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Api(description = "商品管理") 14 | @RestController 15 | @RequestMapping("/back/product") 16 | public class ProductController extends BaseCtrl { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:8-jre 2 | VOLUME /tmp 3 | RUN echo "Asia/Shanghai" > /etc/timezone 4 | RUN apt-get install -y libfontconfig 5 | #ADD target/shop-api-admin.jar /run/shop-api-admin.jar 6 | ENV PROFILE "" 7 | ENV PASSWORD "" 8 | CMD java $PROFILE $PASSWORD -Djava.security.egd=file:/dev/./urandom -Des.set.netty.runtime.available.processors=false -jar /run/shop-api-admin.jar 9 | 10 | # mvn clean install -Dmaven.test.skip=true dockerfile:build 11 | # docker run --net=host --name shop-api-admin --env PROFILE=-Dspring.profiles.active=test --env PASSWORD=-Djasypt.encryptor.password=5042d146667518a1a5017644946b8650aafca44c -v /etc/localtime:/etc/localtime:ro -v /data/shop/target:/run -d d2c/shop-api-admin -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/api/core/ShopkeeperController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.api.core; 2 | 3 | import com.d2c.shop.admin.api.base.BaseCtrl; 4 | import com.d2c.shop.service.modules.core.model.ShopkeeperDO; 5 | import com.d2c.shop.service.modules.core.query.ShopkeeperQuery; 6 | import io.swagger.annotations.Api; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Api(description = "店铺员工管理") 14 | @RestController 15 | @RequestMapping("/back/shopkeeper") 16 | public class ShopkeeperController extends BaseCtrl { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/api/order/OrderItemController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.api.order; 2 | 3 | import com.d2c.shop.admin.api.base.BaseCtrl; 4 | import com.d2c.shop.service.modules.order.model.OrderItemDO; 5 | import com.d2c.shop.service.modules.order.query.OrderItemQuery; 6 | import io.swagger.annotations.Api; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Api(description = "订单明细管理") 14 | @RestController 15 | @RequestMapping("/back/order_item") 16 | public class OrderItemController extends BaseCtrl { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/api/constant/FieldConstant.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.api.constant; 2 | 3 | /** 4 | * @author BaiCai 5 | */ 6 | public interface FieldConstant { 7 | 8 | /** 9 | * 唯一主键ID 10 | */ 11 | String ID = "id"; 12 | /** 13 | * 创建时间 14 | */ 15 | String CREATE_DATE = "createDate"; 16 | /** 17 | * 创建用户 18 | */ 19 | String CREATE_MAN = "createMan"; 20 | /** 21 | * 修改时间 22 | */ 23 | String MODIFY_DATE = "modifyDate"; 24 | /** 25 | * 修改用户 26 | */ 27 | String MODIFY_MAN = "modifyMan"; 28 | /** 29 | * 逻辑删除标志 30 | */ 31 | String DELETED = "deleted"; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/service/impl/ProductCategoryServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.service.impl; 2 | 3 | import com.d2c.shop.service.common.api.base.BaseService; 4 | import com.d2c.shop.service.modules.product.mapper.ProductCategoryMapper; 5 | import com.d2c.shop.service.modules.product.model.ProductCategoryDO; 6 | import com.d2c.shop.service.modules.product.service.ProductCategoryService; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * @author BaiCai 11 | */ 12 | @Service 13 | public class ProductCategoryServiceImpl extends BaseService implements ProductCategoryService { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/service/impl/ProductClassifyServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.service.impl; 2 | 3 | import com.d2c.shop.service.common.api.base.BaseService; 4 | import com.d2c.shop.service.modules.product.mapper.ProductClassifyMapper; 5 | import com.d2c.shop.service.modules.product.model.ProductClassifyDO; 6 | import com.d2c.shop.service.modules.product.service.ProductClassifyService; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * @author BaiCai 11 | */ 12 | @Service 13 | public class ProductClassifyServiceImpl extends BaseService implements ProductClassifyService { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/api/order/CrowdGroupController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.api.order; 2 | 3 | import com.d2c.shop.admin.api.base.BaseCtrl; 4 | import com.d2c.shop.service.modules.order.model.CrowdGroupDO; 5 | import com.d2c.shop.service.modules.order.query.CrowdGroupQuery; 6 | import io.swagger.annotations.Api; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Api(description = "拼团团组管理") 14 | @RestController 15 | @RequestMapping("/back/crowd_group") 16 | public class CrowdGroupController extends BaseCtrl { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/query/OauthQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Data 14 | @EqualsAndHashCode(callSuper = false) 15 | public class OauthQuery extends BaseQuery { 16 | 17 | @Condition(condition = ConditionEnum.EQ) 18 | @ApiModelProperty(value = "unionID") 19 | private String unionId; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/core/query/ShopWithdrawQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.core.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Data 14 | @EqualsAndHashCode(callSuper = false) 15 | public class ShopWithdrawQuery extends BaseQuery { 16 | 17 | @Condition(condition = ConditionEnum.EQ) 18 | @ApiModelProperty(value = "店铺ID") 19 | private Long shopId; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/api/core/ShopWithdrawController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.api.core; 2 | 3 | import com.d2c.shop.admin.api.base.BaseCtrl; 4 | import com.d2c.shop.service.modules.core.model.ShopWithdrawDO; 5 | import com.d2c.shop.service.modules.core.query.ShopWithdrawQuery; 6 | import io.swagger.annotations.Api; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Api(description = "店铺提现管理") 14 | @RestController 15 | @RequestMapping("/back/shop_withdraw") 16 | public class ShopWithdrawController extends BaseCtrl { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/api/product/ProductSkuController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.api.product; 2 | 3 | import com.d2c.shop.admin.api.base.BaseCtrl; 4 | import com.d2c.shop.service.modules.product.model.ProductSkuDO; 5 | import com.d2c.shop.service.modules.product.query.ProductSkuQuery; 6 | import io.swagger.annotations.Api; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Api(description = "商品SKU管理") 14 | @RestController 15 | @RequestMapping("/back/product_sku") 16 | public class ProductSkuController extends BaseCtrl { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-api/shop-api-business/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:8-jre 2 | VOLUME /tmp 3 | RUN echo "Asia/Shanghai" > /etc/timezone 4 | RUN apt-get install -y libfontconfig 5 | #ADD target/shop-api-business.jar /run/shop-api-business.jar 6 | ENV PROFILE "" 7 | ENV PASSWORD "" 8 | CMD java $PROFILE $PASSWORD -Djava.security.egd=file:/dev/./urandom -Des.set.netty.runtime.available.processors=false -jar /run/shop-api-business.jar 9 | 10 | # mvn clean install -Dmaven.test.skip=true dockerfile:build 11 | # docker run --net=host --name shop-api-business --env PROFILE=-Dspring.profiles.active=test --env PASSWORD=-Djasypt.encryptor.password=5042d146667518a1a5017644946b8650aafca44c -v /etc/localtime:/etc/localtime:ro -v /data/shop/target:/run -d d2c/shop-api-business -------------------------------------------------------------------------------- /shop-api/shop-api-customer/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:8-jre 2 | VOLUME /tmp 3 | RUN echo "Asia/Shanghai" > /etc/timezone 4 | RUN apt-get install -y libfontconfig 5 | #ADD target/shop-api-customer.jar /run/shop-api-customer.jar 6 | ENV PROFILE "" 7 | ENV PASSWORD "" 8 | CMD java $PROFILE $PASSWORD -Djava.security.egd=file:/dev/./urandom -Des.set.netty.runtime.available.processors=false -jar /run/shop-api-customer.jar 9 | 10 | # mvn clean install -Dmaven.test.skip=true dockerfile:build 11 | # docker run --net=host --name shop-api-customer --env PROFILE=-Dspring.profiles.active=test --env PASSWORD=-Djasypt.encryptor.password=5042d146667518a1a5017644946b8650aafca44c -v /etc/localtime:/etc/localtime:ro -v /data/shop/target:/run -d d2c/shop-api-customer -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/query/ProductSkuQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Data 14 | @EqualsAndHashCode(callSuper = false) 15 | public class ProductSkuQuery extends BaseQuery { 16 | 17 | @Condition(condition = ConditionEnum.EQ) 18 | @ApiModelProperty(value = "商品ID") 19 | private Long productId; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/query/ProductDetailQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Data 14 | @EqualsAndHashCode(callSuper = false) 15 | public class ProductDetailQuery extends BaseQuery { 16 | 17 | @Condition(condition = ConditionEnum.EQ) 18 | @ApiModelProperty(value = "商品ID") 19 | private Long productId; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/api/member/MemberCouponController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.api.member; 2 | 3 | import com.d2c.shop.admin.api.base.BaseCtrl; 4 | import com.d2c.shop.service.modules.member.model.MemberCouponDO; 5 | import com.d2c.shop.service.modules.member.query.MemberCouponQuery; 6 | import io.swagger.annotations.Api; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Api(description = "会员优惠券关系") 14 | @RestController 15 | @RequestMapping("/back/member_coupon") 16 | public class MemberCouponController extends BaseCtrl { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/api/emuns/ConditionEnum.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.api.emuns; 2 | 3 | /** 4 | * @author BaiCai 5 | */ 6 | public enum ConditionEnum { 7 | // 8 | EQ("等于="), 9 | NE("不等于<>"), 10 | GT("大于>"), 11 | GE("大于等于>="), 12 | LT("小于<"), 13 | LE("小于等于<="), 14 | LIKE("模糊查询 LIKE"), 15 | NOT_LIKE("模糊查询 NOT LIKE"), 16 | IN("IN 查询"), 17 | NOT_IN("NOT IN 查询"), 18 | IS_NULL("NULL 值查询"), 19 | IS_NOT_NULL("IS NOT NULL"), 20 | EXIST("EXISTS 条件语句"), 21 | NOT_EXIST("NOT EXISTS 条件语句"); 22 | // 23 | private String description; 24 | 25 | ConditionEnum(String description) { 26 | this.description = description; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/api/product/CouponProductController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.api.product; 2 | 3 | import com.d2c.shop.admin.api.base.BaseCtrl; 4 | import com.d2c.shop.service.modules.product.model.CouponProductDO; 5 | import com.d2c.shop.service.modules.product.query.CouponProductQuery; 6 | import io.swagger.annotations.Api; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Api(description = "优惠券商品关系") 14 | @RestController 15 | @RequestMapping("/back/coupon_product") 16 | public class CouponProductController extends BaseCtrl { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/api/product/ProductDetailController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.api.product; 2 | 3 | import com.d2c.shop.admin.api.base.BaseCtrl; 4 | import com.d2c.shop.service.modules.product.model.ProductDetailDO; 5 | import com.d2c.shop.service.modules.product.query.ProductDetailQuery; 6 | import io.swagger.annotations.Api; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Api(description = "商品详情管理") 14 | @RestController 15 | @RequestMapping("/back/product_detail") 16 | public class ProductDetailController extends BaseCtrl { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/api/product/ProductCategoryController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.api.product; 2 | 3 | import com.d2c.shop.admin.api.base.BaseCtrl; 4 | import com.d2c.shop.service.modules.product.model.ProductCategoryDO; 5 | import com.d2c.shop.service.modules.product.query.ProductCategoryQuery; 6 | import io.swagger.annotations.Api; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Api(description = "商品品类管理") 14 | @RestController 15 | @RequestMapping("/back/product_category") 16 | public class ProductCategoryController extends BaseCtrl { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/api/product/ProductClassifyController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.api.product; 2 | 3 | import com.d2c.shop.admin.api.base.BaseCtrl; 4 | import com.d2c.shop.service.modules.product.model.ProductClassifyDO; 5 | import com.d2c.shop.service.modules.product.query.ProductClassifyQuery; 6 | import io.swagger.annotations.Api; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Api(description = "商品分类管理") 14 | @RestController 15 | @RequestMapping("/back/product_classify") 16 | public class ProductClassifyController extends BaseCtrl { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/api/emuns/AssertEnum.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.api.emuns; 2 | 3 | /** 4 | * @author BaiCai 5 | */ 6 | public enum AssertEnum { 7 | // 8 | NOT_NULL("值不能为NULL"), 9 | NULL("值必须为NULL"), 10 | EQ("值必须等于="), 11 | GT("值必须大于>"), 12 | GE("值必须大于等于>="), 13 | LT("值必须小于<"), 14 | LE("值必须小于等于<="), 15 | REGEX("值必须符合正则表达式"); 16 | // 17 | private String description; 18 | 19 | AssertEnum(String description) { 20 | this.description = description; 21 | } 22 | 23 | public String getDescription() { 24 | return description; 25 | } 26 | 27 | public void setDescription(String description) { 28 | this.description = description; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/core/service/ShopkeeperService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.core.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.core.model.ShopkeeperDO; 5 | 6 | import java.util.Date; 7 | 8 | /** 9 | * @author BaiCai 10 | */ 11 | public interface ShopkeeperService extends IService { 12 | 13 | ShopkeeperDO findByAccount(String account); 14 | 15 | boolean doLogin(String account, String loginIp, String accessToken, Date accessExpired); 16 | 17 | boolean doLogout(String account); 18 | 19 | boolean updateShopId(String account, Long shopId); 20 | 21 | boolean updatePassword(String account, String password); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /shop-service/src/main/resources/mapper/product/ProductMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | UPDATE P_PRODUCT 10 | SET stock = stock - #{quantity}, modify_date=now() 11 | WHERE id = #{id} 12 | 13 | 14 | 15 | UPDATE P_PRODUCT 16 | SET stock = stock + #{quantity}, modify_date=now() 17 | WHERE id = #{id} 18 | 19 | 20 | -------------------------------------------------------------------------------- /LICENSE_CN: -------------------------------------------------------------------------------- 1 | 版权所有(c)<年份><版权持有人> 2 | 3 | 反996许可证版本1.0 4 | 5 | 在符合下列条件的情况下,特此免费向任何得到本授权作品的副本(包括源代码、文件和/或相关内容,以下 6 | 统称为“授权作品”)的个人和法人实体授权:被授权个人或法人实体有权以任何目的处置授权作品,包括但 7 | 不限于使用、复制,修改,衍生利用、散布,发布和再许可: 8 | 9 | 1. 个人或法人实体必须在许可作品的每个再散布或衍生副本上包含以上版权声明和本许可证,不得自行修 10 | 改。 11 | 2. 个人或法人实体必须严格遵守与个人实际所在地或个人出生地或归化地、或法人实体注册地或经营地 12 | (以较严格者为准)的司法管辖区所有适用的与劳动和就业相关法律、法规、规则和标准。如果该司法管辖 13 | 区没有此类法律、法规、规章和标准或其法律、法规、规章和标准不可执行,则个人或法人实体必须遵守国 14 | 际劳工标准的核心公约。 15 | 3. 个人或法人不得以任何方式诱导或强迫其全职或兼职员工或其独立承包人以口头或书面形式同意直接或 16 | 间接限制、削弱或放弃其所拥有的,受相关与劳动和就业有关的法律、法规、规则和标准保护的权利或补救 17 | 措施,无论该等书面或口头协议是否被该司法管辖区的法律所承认,该等个人或法人实体也不得以任何方法 18 | 限制其雇员或独立承包人向版权持有人或监督许可证合规情况的有关当局报告或投诉上述违反许可证的行为 19 | 的权利。 20 | 21 | 该授权作品是"按原样"提供,不做任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性和非侵 22 | 权性的保证。在任何情况下,无论是在合同诉讼、侵权诉讼或其他诉讼中,版权持有人均不承担因本软件或 23 | 本软件的使用或其他交易而产生、引起或与之相关的任何索赔、损害或其他责任。 24 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/service/MemberService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.member.model.MemberDO; 5 | 6 | import java.math.BigDecimal; 7 | import java.util.Date; 8 | 9 | /** 10 | * @author BaiCai 11 | */ 12 | public interface MemberService extends IService { 13 | 14 | MemberDO findByAccount(String account); 15 | 16 | boolean doLogin(String account, String loginIp, String accessToken, Date accessExpired); 17 | 18 | boolean doLogout(String account); 19 | 20 | boolean updatePassword(String account, String password); 21 | 22 | int doConsume(Long id, String account, BigDecimal amount); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/core/query/ShopQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.core.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Data 14 | @EqualsAndHashCode(callSuper = false) 15 | public class ShopQuery extends BaseQuery { 16 | 17 | @Condition(condition = ConditionEnum.EQ) 18 | @ApiModelProperty(value = "店铺名称") 19 | private String name; 20 | @Condition(condition = ConditionEnum.EQ) 21 | @ApiModelProperty(value = "商户名称") 22 | private String enterprise; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/query/AddressQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Data 14 | @EqualsAndHashCode(callSuper = false) 15 | public class AddressQuery extends BaseQuery { 16 | 17 | @Condition(condition = ConditionEnum.EQ) 18 | @ApiModelProperty(value = "ID") 19 | private Long id; 20 | @Condition(condition = ConditionEnum.EQ) 21 | @ApiModelProperty(value = "会员ID") 22 | private Long memberId; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /shop-service/src/main/resources/mapper/product/ProductSkuMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | UPDATE P_PRODUCT_SKU 10 | SET stock = stock - #{quantity}, modify_date=now() 11 | WHERE id = #{id} 12 | AND stock >= #{quantity} 13 | 14 | 15 | 16 | UPDATE P_PRODUCT_SKU 17 | SET stock = stock + #{quantity}, modify_date=now() 18 | WHERE id = #{id} 19 | 20 | 21 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/api/base/extension/BaseDelDO.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.api.base.extension; 2 | 3 | import com.baomidou.mybatisplus.annotation.FieldFill; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableLogic; 6 | import com.d2c.shop.service.common.api.base.BaseDO; 7 | import io.swagger.annotations.ApiModelProperty; 8 | import lombok.Data; 9 | import lombok.EqualsAndHashCode; 10 | 11 | /** 12 | * @author BaiCai 13 | */ 14 | @Data 15 | @EqualsAndHashCode(callSuper = false) 16 | public abstract class BaseDelDO extends BaseDO { 17 | 18 | @TableLogic(value = "0", delval = "1") 19 | @TableField(value = "deleted", fill = FieldFill.INSERT) 20 | @ApiModelProperty(value = "逻辑删除标志") 21 | private Integer deleted; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/core/query/ShopFlowQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.core.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Data 14 | @EqualsAndHashCode(callSuper = false) 15 | public class ShopFlowQuery extends BaseQuery { 16 | 17 | @Condition(condition = ConditionEnum.EQ) 18 | @ApiModelProperty(value = "店铺ID") 19 | private Long shopId; 20 | @Condition(condition = ConditionEnum.EQ) 21 | @ApiModelProperty(value = "状态 1,0") 22 | private Integer status; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/query/MemberQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Data 14 | @EqualsAndHashCode(callSuper = false) 15 | public class MemberQuery extends BaseQuery { 16 | 17 | @Condition(condition = ConditionEnum.EQ) 18 | @ApiModelProperty(value = "账号") 19 | private String account; 20 | @Condition(condition = ConditionEnum.EQ) 21 | @ApiModelProperty(value = "昵称") 22 | private String nickname; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/order/query/PaymentQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.order.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Data 14 | @EqualsAndHashCode(callSuper = false) 15 | public class PaymentQuery extends BaseQuery { 16 | 17 | @Condition(condition = ConditionEnum.EQ) 18 | @ApiModelProperty(value = "预付单ID") 19 | private String prepayId; 20 | @Condition(condition = ConditionEnum.EQ) 21 | @ApiModelProperty(value = "订单号") 22 | private String orderSn; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/query/RoleQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Data 14 | @EqualsAndHashCode(callSuper = false) 15 | public class RoleQuery extends BaseQuery { 16 | 17 | @Condition(condition = ConditionEnum.EQ) 18 | @ApiModelProperty(value = "ROLE_开头") 19 | private String code; 20 | @Condition(condition = ConditionEnum.LIKE) 21 | @ApiModelProperty(value = "名称") 22 | private String name; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/query/MemberShopQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Data 14 | @EqualsAndHashCode(callSuper = false) 15 | public class MemberShopQuery extends BaseQuery { 16 | 17 | @Condition(condition = ConditionEnum.EQ) 18 | @ApiModelProperty(value = "店铺ID") 19 | private Long shopId; 20 | @Condition(condition = ConditionEnum.EQ) 21 | @ApiModelProperty(value = "会员ID") 22 | private Long memberId; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/query/UserQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Data 14 | @EqualsAndHashCode(callSuper = false) 15 | public class UserQuery extends BaseQuery { 16 | 17 | @Condition(condition = ConditionEnum.LIKE) 18 | @ApiModelProperty(value = "账号") 19 | private String username; 20 | @Condition(condition = ConditionEnum.IN) 21 | @ApiModelProperty(value = "状态 1,0") 22 | private Integer[] status; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /shop-api/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.d2c 8 | shop-api 9 | 1.0-SNAPSHOT 10 | pom 11 | 12 | 13 | shop-api-admin 14 | shop-api-business 15 | shop-api-customer 16 | 17 | 18 | 19 | com.d2c 20 | shop-parent 21 | 1.0-SNAPSHOT 22 | 23 | 24 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/api/annotation/Assert.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.api.annotation; 2 | 3 | import com.d2c.shop.service.common.api.emuns.AssertEnum; 4 | import com.d2c.shop.service.common.api.emuns.OperateEnum; 5 | 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.Target; 8 | 9 | import static java.lang.annotation.ElementType.FIELD; 10 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 11 | 12 | /** 13 | * @author BaiCai 14 | */ 15 | @Target(FIELD) 16 | @Retention(RUNTIME) 17 | public @interface Assert { 18 | 19 | AssertEnum type() default AssertEnum.NOT_NULL; 20 | 21 | OperateEnum operate() default OperateEnum.INSERT; 22 | 23 | int num_value() default 0; 24 | 25 | String str_value() default ""; 26 | 27 | String reg_ex() default ""; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/order/service/OrderService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.order.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.d2c.shop.service.modules.order.model.OrderDO; 5 | import com.d2c.shop.service.modules.order.model.PaymentDO; 6 | import com.d2c.shop.service.modules.order.query.OrderQuery; 7 | 8 | import java.util.Map; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | public interface OrderService extends IService { 14 | 15 | OrderDO doCreate(OrderDO order); 16 | 17 | boolean doPayment(OrderDO order, PaymentDO.PaymentTypeEnum paymentType, String paymentSn, String mchId); 18 | 19 | boolean doClose(OrderDO order); 20 | 21 | boolean doDelete(String orderSn); 22 | 23 | Map countDaily(OrderQuery query); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/query/ProductCategoryQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Data 14 | @EqualsAndHashCode(callSuper = false) 15 | public class ProductCategoryQuery extends BaseQuery { 16 | 17 | @Condition(condition = ConditionEnum.EQ) 18 | @ApiModelProperty(value = "店铺ID") 19 | private Long shopId; 20 | @Condition(condition = ConditionEnum.EQ) 21 | @ApiModelProperty(value = "父级ID") 22 | private Long parentId; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/query/CouponProductQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Data 14 | @EqualsAndHashCode(callSuper = false) 15 | public class CouponProductQuery extends BaseQuery { 16 | 17 | @Condition(condition = ConditionEnum.EQ) 18 | @ApiModelProperty(value = "优惠券ID") 19 | private Long couponId; 20 | @Condition(condition = ConditionEnum.IN) 21 | @ApiModelProperty(value = "商品ID") 22 | private Long[] productId; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /shop-service/src/main/resources/mapper/security/MenuMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 20 | 21 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/config/security/handler/RestLoginExpiredHandler.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.config.security.handler; 2 | 3 | import com.d2c.shop.service.common.api.Response; 4 | import com.d2c.shop.service.common.api.ResultCode; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | import org.springframework.web.bind.annotation.RequestMethod; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | import javax.servlet.http.HttpServletResponse; 10 | 11 | /** 12 | * @author Cai 13 | */ 14 | @RestController 15 | @RequestMapping("") 16 | public class RestLoginExpiredHandler { 17 | 18 | @RequestMapping(value = "/login/expired", method = RequestMethod.GET) 19 | public void expired(HttpServletResponse response) { 20 | Response.out(response, Response.failed(ResultCode.ACCESS_DENIED)); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /shop-service/src/main/resources/mapper/order/CrowdGroupMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | UPDATE O_CROWD_GROUP 10 | SET attend_num=attend_num + 1, avatars=#{avatars}, modify_date=now() 11 | WHERE id = #{id} 12 | AND attend_num < crowd_num 13 | 14 | 15 | 16 | UPDATE O_CROWD_GROUP 17 | SET attend_num=attend_num - 1, avatars=#{avatars}, modify_date=now() 18 | WHERE id = #{id} 19 | AND attend_num > 0 20 | 21 | 22 | -------------------------------------------------------------------------------- /shop-service/src/main/resources/mapper/security/RoleMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 15 | 16 | 23 | 24 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/api/ResultCode.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.api; 2 | 3 | import com.baomidou.mybatisplus.extension.api.IErrorCode; 4 | 5 | /** 6 | * @author BaiCai 7 | */ 8 | public enum ResultCode implements IErrorCode { 9 | // 10 | SUCCESS(1, "操作成功"), 11 | FAILED(-1, "操作失败"), 12 | LOGIN_EXPIRED(-401, "登录已经过期"), 13 | ACCESS_DENIED(-403, "没有访问权限"), 14 | SERVER_EXCEPTION(-500, "服务端异常"), 15 | REQUEST_PARAM_NULL(-501, "请求参数为空"), 16 | RESPONSE_DATA_NULL(-502, "返回数据为空"); 17 | // 18 | private long code; 19 | private String msg; 20 | 21 | private ResultCode(long code, String msg) { 22 | this.code = code; 23 | this.msg = msg; 24 | } 25 | 26 | @Override 27 | public long getCode() { 28 | return this.code; 29 | } 30 | 31 | @Override 32 | public String getMsg() { 33 | return this.msg; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /shop-common/shop-common-orm/src/main/java/com/d2c/shop/orm/mybatis/config/MybatisConfig.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.orm.mybatis.config; 2 | 3 | import com.baomidou.mybatisplus.core.injector.ISqlInjector; 4 | import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector; 5 | import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; 6 | import org.springframework.context.annotation.Bean; 7 | import org.springframework.context.annotation.Configuration; 8 | import org.springframework.transaction.annotation.EnableTransactionManagement; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Configuration 14 | @EnableTransactionManagement 15 | public class MybatisConfig { 16 | 17 | @Bean 18 | public PaginationInterceptor paginationInterceptor() { 19 | return new PaginationInterceptor(); 20 | } 21 | 22 | @Bean 23 | public ISqlInjector sqlInjector() { 24 | return new LogicSqlInjector(); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/service/impl/MenuServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.service.impl; 2 | 3 | import com.d2c.shop.service.common.api.base.BaseService; 4 | import com.d2c.shop.service.modules.security.mapper.MenuMapper; 5 | import com.d2c.shop.service.modules.security.model.MenuDO; 6 | import com.d2c.shop.service.modules.security.service.MenuService; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * @author BaiCai 14 | */ 15 | @Service 16 | public class MenuServiceImpl extends BaseService implements MenuService { 17 | 18 | @Autowired 19 | private MenuMapper menuMapper; 20 | 21 | @Override 22 | public List findByRoleId(List roleIds) { 23 | return menuMapper.findByRoleId(roleIds); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/config/logger/HttpTraceConfig.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.config.logger; 2 | 3 | import com.d2c.shop.admin.config.logger.filter.HttpTraceLogFilter; 4 | import io.micrometer.core.instrument.MeterRegistry; 5 | import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; 6 | import org.springframework.context.annotation.Bean; 7 | import org.springframework.context.annotation.Configuration; 8 | 9 | /** 10 | * @author BaiCai 11 | */ 12 | @Configuration 13 | @ConditionalOnWebApplication 14 | public class HttpTraceConfig { 15 | 16 | @ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) 17 | static class ServletTraceFilterConfiguration { 18 | 19 | @Bean 20 | public HttpTraceLogFilter httpTraceLogFilter(MeterRegistry registry) { 21 | return new HttpTraceLogFilter(registry); 22 | } 23 | 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /shop-api/shop-api-customer/src/main/java/com/d2c/shop/customer/api/support/OrderRequestBean.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.customer.api.support; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | import java.util.List; 9 | 10 | /** 11 | * @author Cai 12 | */ 13 | @Data 14 | @ApiModel(description = "订单请求POJO") 15 | public class OrderRequestBean implements Serializable { 16 | 17 | @ApiModelProperty(value = "购物车ID") 18 | private List cartIds; 19 | @ApiModelProperty(value = "SKU的ID") 20 | private Long skuId; 21 | @ApiModelProperty(value = "SKU的数量") 22 | private Integer quantity; 23 | @ApiModelProperty(value = "收货地址ID") 24 | private Long addressId; 25 | @ApiModelProperty(value = "优惠券的ID") 26 | private Long couponId; 27 | @ApiModelProperty(value = "拼团参团ID") 28 | private Long crowdId; 29 | 30 | } 31 | -------------------------------------------------------------------------------- /shop-common/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.d2c 8 | shop-common 9 | 1.0-SNAPSHOT 10 | pom 11 | 12 | 13 | shop-common-orm 14 | shop-common-queue 15 | shop-common-cache 16 | shop-common-nosql 17 | shop-common-search 18 | 19 | 20 | 21 | com.d2c 22 | shop-parent 23 | 1.0-SNAPSHOT 24 | 25 | 26 | -------------------------------------------------------------------------------- /shop-common/shop-common-queue/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.d2c 8 | shop-common-queue 9 | 1.0-SNAPSHOT 10 | jar 11 | 12 | 13 | com.d2c 14 | shop-common 15 | 1.0-SNAPSHOT 16 | 17 | 18 | 19 | 20 | 21 | org.springframework.boot 22 | spring-boot-starter-amqp 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /shop-common/shop-common-nosql/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.d2c 8 | shop-common-nosql 9 | 1.0-SNAPSHOT 10 | jar 11 | 12 | 13 | com.d2c 14 | shop-common 15 | 1.0-SNAPSHOT 16 | 17 | 18 | 19 | 20 | 21 | org.springframework.boot 22 | spring-boot-starter-data-mongodb 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/core/query/ShopkeeperQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.core.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Data 14 | @EqualsAndHashCode(callSuper = false) 15 | public class ShopkeeperQuery extends BaseQuery { 16 | 17 | @Condition(condition = ConditionEnum.EQ) 18 | @ApiModelProperty(value = "店铺ID") 19 | private Long shopId; 20 | @Condition(condition = ConditionEnum.EQ) 21 | @ApiModelProperty(value = "账号") 22 | private String account; 23 | @Condition(condition = ConditionEnum.EQ) 24 | @ApiModelProperty(value = "昵称") 25 | private String nickname; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/order/query/CartItemQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.order.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Data 14 | @EqualsAndHashCode(callSuper = false) 15 | public class CartItemQuery extends BaseQuery { 16 | 17 | @Condition(condition = ConditionEnum.EQ) 18 | @ApiModelProperty(value = "店铺ID") 19 | private Long shopId; 20 | @Condition(condition = ConditionEnum.EQ) 21 | @ApiModelProperty(value = "会员ID") 22 | private Long memberId; 23 | @Condition(condition = ConditionEnum.EQ) 24 | @ApiModelProperty(value = "商品SKU的ID") 25 | private Long productSkuId; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/model/RoleDO.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.model; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import com.d2c.shop.service.common.api.annotation.Assert; 5 | import com.d2c.shop.service.common.api.base.BaseDO; 6 | import com.d2c.shop.service.common.api.emuns.AssertEnum; 7 | import io.swagger.annotations.ApiModel; 8 | import io.swagger.annotations.ApiModelProperty; 9 | import lombok.Data; 10 | import lombok.EqualsAndHashCode; 11 | 12 | /** 13 | * @author BaiCai 14 | */ 15 | @Data 16 | @EqualsAndHashCode(callSuper = false) 17 | @TableName("SYS_ROLE") 18 | @ApiModel(description = "角色表") 19 | public class RoleDO extends BaseDO { 20 | 21 | @Assert(type = AssertEnum.NOT_NULL) 22 | @ApiModelProperty(value = "ROLE_开头") 23 | private String code; 24 | @Assert(type = AssertEnum.NOT_NULL) 25 | @ApiModelProperty(value = "名称") 26 | private String name; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /shop-common/shop-common-search/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.d2c 8 | shop-common-search 9 | 1.0-SNAPSHOT 10 | jar 11 | 12 | 13 | com.d2c 14 | shop-common 15 | 1.0-SNAPSHOT 16 | 17 | 18 | 19 | 20 | 21 | org.springframework.boot 22 | spring-boot-starter-data-elasticsearch 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/model/DummyDO.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.model; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import com.d2c.shop.service.common.api.annotation.Assert; 5 | import com.d2c.shop.service.common.api.base.BaseDO; 6 | import com.d2c.shop.service.common.api.emuns.AssertEnum; 7 | import io.swagger.annotations.ApiModel; 8 | import io.swagger.annotations.ApiModelProperty; 9 | import lombok.Data; 10 | import lombok.EqualsAndHashCode; 11 | 12 | /** 13 | * @author Cai 14 | */ 15 | @Data 16 | @EqualsAndHashCode(callSuper = false) 17 | @TableName("M_MEMBER_DUMMY") 18 | @ApiModel(description = "假人表") 19 | public class DummyDO extends BaseDO { 20 | 21 | @Assert(type = AssertEnum.NOT_NULL) 22 | @ApiModelProperty(value = "昵称") 23 | private String nickname; 24 | @Assert(type = AssertEnum.NOT_NULL) 25 | @ApiModelProperty(value = "头像") 26 | private String avatar; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/model/MemberShopDO.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.model; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import com.d2c.shop.service.common.api.annotation.Assert; 5 | import com.d2c.shop.service.common.api.base.BaseDO; 6 | import com.d2c.shop.service.common.api.emuns.AssertEnum; 7 | import io.swagger.annotations.ApiModel; 8 | import io.swagger.annotations.ApiModelProperty; 9 | import lombok.Data; 10 | import lombok.EqualsAndHashCode; 11 | 12 | /** 13 | * @author Cai 14 | */ 15 | @Data 16 | @EqualsAndHashCode(callSuper = false) 17 | @TableName("M_MEMBER_SHOP") 18 | @ApiModel(description = "会员店铺关系表") 19 | public class MemberShopDO extends BaseDO { 20 | 21 | @Assert(type = AssertEnum.NOT_NULL) 22 | @ApiModelProperty(value = "会员ID") 23 | private Long memberId; 24 | @Assert(type = AssertEnum.NOT_NULL) 25 | @ApiModelProperty(value = "店铺ID") 26 | private Long shopId; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/model/RoleMenuDO.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.model; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import com.d2c.shop.service.common.api.annotation.Assert; 5 | import com.d2c.shop.service.common.api.base.BaseDO; 6 | import com.d2c.shop.service.common.api.emuns.AssertEnum; 7 | import io.swagger.annotations.ApiModel; 8 | import io.swagger.annotations.ApiModelProperty; 9 | import lombok.Data; 10 | import lombok.EqualsAndHashCode; 11 | 12 | /** 13 | * @author BaiCai 14 | */ 15 | @Data 16 | @EqualsAndHashCode(callSuper = false) 17 | @TableName("SYS_ROLE_MENU") 18 | @ApiModel(description = "角色菜单关系表") 19 | public class RoleMenuDO extends BaseDO { 20 | 21 | @Assert(type = AssertEnum.NOT_NULL) 22 | @ApiModelProperty(value = "角色ID") 23 | private Long roleId; 24 | @Assert(type = AssertEnum.NOT_NULL) 25 | @ApiModelProperty(value = "菜单ID") 26 | private Long menuId; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/model/UserRoleDO.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.model; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import com.d2c.shop.service.common.api.annotation.Assert; 5 | import com.d2c.shop.service.common.api.base.BaseDO; 6 | import com.d2c.shop.service.common.api.emuns.AssertEnum; 7 | import io.swagger.annotations.ApiModel; 8 | import io.swagger.annotations.ApiModelProperty; 9 | import lombok.Data; 10 | import lombok.EqualsAndHashCode; 11 | 12 | /** 13 | * @author BaiCai 14 | */ 15 | @Data 16 | @EqualsAndHashCode(callSuper = false) 17 | @TableName("SYS_USER_ROLE") 18 | @ApiModel(description = "用户角色关系表") 19 | public class UserRoleDO extends BaseDO { 20 | 21 | @Assert(type = AssertEnum.NOT_NULL) 22 | @ApiModelProperty(value = "用户ID") 23 | private Long userId; 24 | @Assert(type = AssertEnum.NOT_NULL) 25 | @ApiModelProperty(value = "角色ID") 26 | private Long roleId; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /doc/script/sql/procedure_uppercase.sql: -------------------------------------------------------------------------------- 1 | /* 2 | * 将当前数据库中所有表的名字转变为大写 3 | */ 4 | 5 | CREATE PROCEDURE `UPPERCASE_TABLENAMES`(IN dbname VARCHAR(200)) 6 | COMMENT '将当前数据库中所有表的名字转变为大写' 7 | BEGIN 8 | DECLARE done INT DEFAULT 0; 9 | DECLARE oldname VARCHAR(200); 10 | DECLARE cur CURSOR FOR SELECT table_name FROM information_schema.TABLES WHERE table_schema = dbname; 11 | DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; 12 | OPEN cur; 13 | REPEAT 14 | FETCH cur INTO oldname; 15 | SET @newname = UPPER(oldname); 16 | SET @isNotSame = @newname <> BINARY oldname; 17 | IF NOT done && @isNotSame THEN 18 | SET @SQL = CONCAT('rename table `',oldname,'` to `', LOWER(@newname), '_tmp` '); 19 | PREPARE tmpstmt FROM @SQL; 20 | EXECUTE tmpstmt; 21 | SET @SQL = CONCAT('rename table `',LOWER(@newname),'_tmp` to `',@newname, '`'); 22 | PREPARE tmpstmt FROM @SQL; 23 | EXECUTE tmpstmt; 24 | DEALLOCATE PREPARE tmpstmt; 25 | END IF; 26 | UNTIL done END REPEAT; 27 | CLOSE cur; 28 | END -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/api/PageModel.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.api; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | 8 | /** 9 | * @author BaiCai 10 | */ 11 | @Data 12 | @EqualsAndHashCode(callSuper = false) 13 | public class PageModel extends Page { 14 | 15 | // 最大页长 16 | public static final long MAX_SIZE = 500L; 17 | // 18 | @ApiModelProperty(value = "页码") 19 | private long p; 20 | @ApiModelProperty(value = "页长") 21 | private long ps; 22 | 23 | public PageModel() { 24 | super(); 25 | this.setDesc("create_date"); 26 | } 27 | 28 | public void setP(long p) { 29 | this.p = p; 30 | this.setCurrent(p); 31 | } 32 | 33 | public void setPs(long ps) { 34 | this.ps = ps; 35 | this.setSize(ps); 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /shop-service/src/main/resources/mapper/product/CouponProductMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 22 | 23 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/api/constant/SecurityConstant.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.api.constant; 2 | 3 | import cn.hutool.crypto.digest.DigestUtil; 4 | 5 | /** 6 | * @author BaiCai 7 | */ 8 | public interface SecurityConstant { 9 | 10 | /** 11 | * token分割 12 | */ 13 | String TOKEN_PREFIX = "D2C-"; 14 | /** 15 | * JWT签名加密key 16 | */ 17 | String JWT_SIGN_KEY = DigestUtil.md5Hex("shop"); 18 | /** 19 | * token参数头 20 | */ 21 | String OAUTH_TOKEN = "oauthToken"; 22 | /** 23 | * token参数头 24 | */ 25 | String ACCESS_TOKEN = "accessToken"; 26 | /** 27 | * author参数头 28 | */ 29 | String AUTHORITIES = "authorities"; 30 | /** 31 | * author的token有效期 32 | */ 33 | Integer OAUTH_OFFSET_DAY = 1; 34 | /** 35 | * C端用户的token有效期 36 | */ 37 | Integer C_OFFSET_DAY = 7; 38 | /** 39 | * B端用户的token有效期 40 | */ 41 | Integer B_OFFSET_DAY = 30; 42 | 43 | } 44 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/service/impl/CouponServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.service.impl; 2 | 3 | import com.d2c.shop.service.common.api.base.BaseService; 4 | import com.d2c.shop.service.modules.product.mapper.CouponMapper; 5 | import com.d2c.shop.service.modules.product.model.CouponDO; 6 | import com.d2c.shop.service.modules.product.service.CouponService; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | import org.springframework.transaction.annotation.Transactional; 10 | 11 | /** 12 | * @author BaiCai 13 | */ 14 | @Service 15 | public class CouponServiceImpl extends BaseService implements CouponService { 16 | 17 | @Autowired 18 | private CouponMapper couponMapper; 19 | 20 | @Override 21 | @Transactional 22 | public int updateConsumption(Long id) { 23 | return couponMapper.updateConsumption(id); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/order/service/impl/OrderItemServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.order.service.impl; 2 | 3 | import com.d2c.shop.service.common.api.base.BaseService; 4 | import com.d2c.shop.service.modules.order.mapper.OrderItemMapper; 5 | import com.d2c.shop.service.modules.order.model.OrderItemDO; 6 | import com.d2c.shop.service.modules.order.query.OrderItemQuery; 7 | import com.d2c.shop.service.modules.order.service.OrderItemService; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.stereotype.Service; 10 | 11 | import java.util.Map; 12 | 13 | /** 14 | * @author BaiCai 15 | */ 16 | @Service 17 | public class OrderItemServiceImpl extends BaseService implements OrderItemService { 18 | 19 | @Autowired 20 | private OrderItemMapper orderItemMapper; 21 | 22 | @Override 23 | public Map countDaily(OrderItemQuery query) { 24 | return orderItemMapper.countDaily(query); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/config/FastJsonConfig.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.config; 2 | 3 | import com.alibaba.fastjson.parser.ParserConfig; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | import javax.annotation.PostConstruct; 7 | 8 | /** 9 | * @author BaiCai 10 | */ 11 | @Configuration 12 | public class FastJsonConfig { 13 | 14 | @PostConstruct 15 | public void accept() { 16 | ParserConfig.getGlobalInstance().addAccept("com.d2c.shop.service.modules.core.model."); 17 | ParserConfig.getGlobalInstance().addAccept("com.d2c.shop.service.modules.logger.model."); 18 | ParserConfig.getGlobalInstance().addAccept("com.d2c.shop.service.modules.member.model."); 19 | ParserConfig.getGlobalInstance().addAccept("com.d2c.shop.service.modules.order.model."); 20 | ParserConfig.getGlobalInstance().addAccept("com.d2c.shop.service.modules.product.model."); 21 | ParserConfig.getGlobalInstance().addAccept("com.d2c.shop.service.modules.security.model."); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/logger/nosql/elasticsearch/document/MqErrorLog.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.logger.nosql.elasticsearch.document; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.Data; 6 | import org.springframework.data.annotation.Id; 7 | import org.springframework.data.elasticsearch.annotations.Document; 8 | 9 | import java.io.Serializable; 10 | 11 | /** 12 | * @author BaiCai 13 | */ 14 | @Data 15 | @ApiModel(description = "MQ消费失败日志") 16 | @Document(indexName = "logger-index", type = "mq_error_log") 17 | public class MqErrorLog implements Serializable { 18 | 19 | @Id 20 | @ApiModelProperty(value = "主键(时间戳方便查询)") 21 | private Long id; 22 | @ApiModelProperty(value = "时间") 23 | private String time; 24 | @ApiModelProperty(value = "类型") 25 | private String type; 26 | @ApiModelProperty(value = "内容") 27 | private String message; 28 | @ApiModelProperty(value = "是否处理") 29 | private Integer status; 30 | 31 | } 32 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/rabbitmq/sender/OrderDelayedSender.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.rabbitmq.sender; 2 | 3 | import cn.hutool.core.date.DateUtil; 4 | import com.d2c.shop.service.config.RabbitmqConfig; 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.springframework.amqp.core.AmqpTemplate; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Component; 9 | 10 | import java.util.Date; 11 | 12 | /** 13 | * @author Cai 14 | */ 15 | @Slf4j 16 | @Component 17 | public class OrderDelayedSender { 18 | 19 | @Autowired 20 | private AmqpTemplate rabbitTemplate; 21 | 22 | public void send(String msg, Long seconds) { 23 | log.info("订单编号:" + msg + " 发送时间:" + DateUtil.formatDateTime(new Date())); 24 | rabbitTemplate.convertAndSend(RabbitmqConfig.EXCHANGE_NAME, RabbitmqConfig.ORDER_QUEUE_NAME, msg, message -> { 25 | message.getMessageProperties().setHeader("x-delay", seconds * 1000); 26 | return message; 27 | }); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/rabbitmq/sender/CrowdDelayedSender.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.rabbitmq.sender; 2 | 3 | import cn.hutool.core.date.DateUtil; 4 | import com.d2c.shop.service.config.RabbitmqConfig; 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.springframework.amqp.core.AmqpTemplate; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Component; 9 | 10 | import java.util.Date; 11 | 12 | /** 13 | * @author Cai 14 | */ 15 | @Slf4j 16 | @Component 17 | public class CrowdDelayedSender { 18 | 19 | @Autowired 20 | private AmqpTemplate rabbitTemplate; 21 | 22 | public void send(String msg, Long seconds) { 23 | log.info("拼团团组ID:" + msg + " 发送时间:" + DateUtil.formatDateTime(new Date())); 24 | rabbitTemplate.convertAndSend(RabbitmqConfig.EXCHANGE_NAME, RabbitmqConfig.CROWD_QUEUE_NAME, msg, message -> { 25 | message.getMessageProperties().setHeader("x-delay", seconds * 1000); 26 | return message; 27 | }); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/config/security/handler/RestAccessDeniedHandler.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.config.security.handler; 2 | 3 | import com.d2c.shop.service.common.api.Response; 4 | import com.d2c.shop.service.common.api.ResultCode; 5 | import org.springframework.security.access.AccessDeniedException; 6 | import org.springframework.security.web.access.AccessDeniedHandler; 7 | import org.springframework.stereotype.Component; 8 | 9 | import javax.servlet.ServletException; 10 | import javax.servlet.http.HttpServletRequest; 11 | import javax.servlet.http.HttpServletResponse; 12 | import java.io.IOException; 13 | 14 | /** 15 | * @author BaiCai 16 | */ 17 | @Component 18 | public class RestAccessDeniedHandler implements AccessDeniedHandler { 19 | 20 | @Override 21 | public void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AccessDeniedException e) throws IOException, ServletException { 22 | Response.out(httpServletResponse, Response.failed(ResultCode.ACCESS_DENIED)); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/config/webmvc/SpringMvcConfig.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.config.webmvc; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.format.FormatterRegistry; 5 | import org.springframework.format.datetime.DateFormatter; 6 | import org.springframework.web.servlet.config.annotation.CorsRegistry; 7 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 8 | 9 | /** 10 | * @author BaiCai 11 | */ 12 | @Configuration 13 | public class SpringMvcConfig implements WebMvcConfigurer { 14 | 15 | @Override 16 | public void addCorsMappings(CorsRegistry registry) { 17 | registry.addMapping("/**") 18 | .allowedOrigins("*") 19 | .allowCredentials(true) 20 | .allowedMethods("*") 21 | .maxAge(3600); 22 | } 23 | 24 | @Override 25 | public void addFormatters(FormatterRegistry registry) { 26 | registry.addFormatter(new DateFormatter("yyyy-MM-dd HH:mm:ss")); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /shop-api/shop-api-business/src/main/java/com/d2c/shop/business/config/webmvc/WebMvcConfig.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.business.config.webmvc; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.format.FormatterRegistry; 5 | import org.springframework.format.datetime.DateFormatter; 6 | import org.springframework.web.servlet.config.annotation.CorsRegistry; 7 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 8 | 9 | /** 10 | * @author BaiCai 11 | */ 12 | @Configuration 13 | public class WebMvcConfig implements WebMvcConfigurer { 14 | 15 | @Override 16 | public void addCorsMappings(CorsRegistry registry) { 17 | registry.addMapping("/**") 18 | .allowedOrigins("*") 19 | .allowCredentials(true) 20 | .allowedMethods("*") 21 | .maxAge(3600); 22 | } 23 | 24 | @Override 25 | public void addFormatters(FormatterRegistry registry) { 26 | registry.addFormatter(new DateFormatter("yyyy-MM-dd HH:mm:ss")); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /shop-api/shop-api-customer/src/main/java/com/d2c/shop/customer/config/webmvc/WebMvcConfig.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.customer.config.webmvc; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.format.FormatterRegistry; 5 | import org.springframework.format.datetime.DateFormatter; 6 | import org.springframework.web.servlet.config.annotation.CorsRegistry; 7 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 8 | 9 | /** 10 | * @author BaiCai 11 | */ 12 | @Configuration 13 | public class WebMvcConfig implements WebMvcConfigurer { 14 | 15 | @Override 16 | public void addCorsMappings(CorsRegistry registry) { 17 | registry.addMapping("/**") 18 | .allowedOrigins("*") 19 | .allowCredentials(true) 20 | .allowedMethods("*") 21 | .maxAge(3600); 22 | } 23 | 24 | @Override 25 | public void addFormatters(FormatterRegistry registry) { 26 | registry.addFormatter(new DateFormatter("yyyy-MM-dd HH:mm:ss")); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/query/MenuQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Data 14 | @EqualsAndHashCode(callSuper = false) 15 | public class MenuQuery extends BaseQuery { 16 | 17 | @Condition(condition = ConditionEnum.LIKE) 18 | @ApiModelProperty(value = "名称") 19 | private String name; 20 | @Condition(condition = ConditionEnum.EQ) 21 | @ApiModelProperty(value = "Ant路径") 22 | private String path; 23 | @Condition(condition = ConditionEnum.EQ) 24 | @ApiModelProperty(value = "类型") 25 | private Integer type; 26 | @Condition(condition = ConditionEnum.EQ) 27 | @ApiModelProperty(value = "父级ID") 28 | private Long parentId; 29 | 30 | } 31 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/service/impl/RoleServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.service.impl; 2 | 3 | import com.d2c.shop.service.common.api.base.BaseService; 4 | import com.d2c.shop.service.modules.security.mapper.RoleMapper; 5 | import com.d2c.shop.service.modules.security.model.RoleDO; 6 | import com.d2c.shop.service.modules.security.service.RoleService; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * @author BaiCai 14 | */ 15 | @Service 16 | public class RoleServiceImpl extends BaseService implements RoleService { 17 | 18 | @Autowired 19 | private RoleMapper roleMapper; 20 | 21 | @Override 22 | public List findByUserId(Long userId) { 23 | return roleMapper.findByUserId(userId); 24 | } 25 | 26 | @Override 27 | public List findByMenuId(Long menuId) { 28 | return roleMapper.findByMenuId(menuId); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /shop-service/src/main/resources/mapper/order/OrderMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 25 | 26 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/config/security/context/LoginUserHolder.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.config.security.context; 2 | 3 | import org.springframework.security.authentication.AnonymousAuthenticationToken; 4 | import org.springframework.security.core.Authentication; 5 | import org.springframework.security.core.context.SecurityContextHolder; 6 | import org.springframework.security.core.userdetails.UserDetails; 7 | import org.springframework.stereotype.Component; 8 | 9 | /** 10 | * @author Cai 11 | */ 12 | @Component 13 | public class LoginUserHolder { 14 | 15 | public UserDetails getLoginUser() { 16 | Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); 17 | if (authentication instanceof AnonymousAuthenticationToken) return null; 18 | UserDetails user = (UserDetails) authentication.getPrincipal(); 19 | return user; 20 | } 21 | 22 | public String getUsername() { 23 | if (getLoginUser() == null) return null; 24 | return getLoginUser().getUsername(); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/service/impl/CouponProductServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.service.impl; 2 | 3 | import com.d2c.shop.service.common.api.base.BaseService; 4 | import com.d2c.shop.service.modules.product.mapper.CouponProductMapper; 5 | import com.d2c.shop.service.modules.product.model.CouponProductDO; 6 | import com.d2c.shop.service.modules.product.service.CouponProductService; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * @author BaiCai 14 | */ 15 | @Service 16 | public class CouponProductServiceImpl extends BaseService implements CouponProductService { 17 | 18 | @Autowired 19 | private CouponProductMapper couponProductMapper; 20 | 21 | @Override 22 | public List findQualified(List couponIds, List productIds, Integer type) { 23 | return couponProductMapper.findQualified(couponIds, productIds, type); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/model/CouponProductDO.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.model; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import com.d2c.shop.service.common.api.annotation.Assert; 5 | import com.d2c.shop.service.common.api.base.BaseDO; 6 | import com.d2c.shop.service.common.api.emuns.AssertEnum; 7 | import io.swagger.annotations.ApiModel; 8 | import io.swagger.annotations.ApiModelProperty; 9 | import lombok.Data; 10 | import lombok.EqualsAndHashCode; 11 | 12 | /** 13 | * @author BaiCai 14 | */ 15 | @Data 16 | @EqualsAndHashCode(callSuper = false) 17 | @TableName("P_COUPON_PRODUCT") 18 | @ApiModel(description = "优惠券商品关系表") 19 | public class CouponProductDO extends BaseDO { 20 | 21 | @Assert(type = AssertEnum.NOT_NULL) 22 | @ApiModelProperty(value = "优惠券ID") 23 | private Long couponId; 24 | @Assert(type = AssertEnum.NOT_NULL) 25 | @ApiModelProperty(value = "商品ID") 26 | private Long productId; 27 | @Assert(type = AssertEnum.NOT_NULL) 28 | @ApiModelProperty(value = "类型 1,-1") 29 | private Integer type; 30 | 31 | } 32 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/logger/query/SmsQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.logger.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | import java.util.Date; 11 | 12 | /** 13 | * @author BaiCai 14 | */ 15 | @Data 16 | @EqualsAndHashCode(callSuper = false) 17 | public class SmsQuery extends BaseQuery { 18 | 19 | @Condition(condition = ConditionEnum.EQ) 20 | @ApiModelProperty(value = "手机号") 21 | private String mobile; 22 | @Condition(condition = ConditionEnum.EQ) 23 | @ApiModelProperty(value = "验证码") 24 | private String code; 25 | @Condition(condition = ConditionEnum.GE, field = "deadline") 26 | @ApiModelProperty(value = "过期时间") 27 | private Date deadlineL; 28 | @Condition(condition = ConditionEnum.EQ) 29 | @ApiModelProperty(value = "状态 1,0") 30 | private Integer status; 31 | 32 | } 33 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/query/RoleMenuQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Data 14 | @EqualsAndHashCode(callSuper = false) 15 | public class RoleMenuQuery extends BaseQuery { 16 | 17 | @Condition(condition = ConditionEnum.EQ) 18 | @ApiModelProperty(value = "角色ID") 19 | private Long roleId; 20 | @Condition(condition = ConditionEnum.IN, field = "role_id") 21 | @ApiModelProperty(value = "角色ID") 22 | private Long[] roleIds; 23 | @Condition(condition = ConditionEnum.EQ) 24 | @ApiModelProperty(value = "菜单ID") 25 | private Long menuId; 26 | @Condition(condition = ConditionEnum.IN, field = "menu_id") 27 | @ApiModelProperty(value = "菜单ID") 28 | private Long[] menuIds; 29 | 30 | } 31 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/security/query/UserRoleQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.security.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | @Data 14 | @EqualsAndHashCode(callSuper = false) 15 | public class UserRoleQuery extends BaseQuery { 16 | 17 | @Condition(condition = ConditionEnum.EQ) 18 | @ApiModelProperty(value = "用户ID") 19 | private Long userId; 20 | @Condition(condition = ConditionEnum.IN, field = "user_id") 21 | @ApiModelProperty(value = "用户ID") 22 | private Long[] userIds; 23 | @Condition(condition = ConditionEnum.EQ) 24 | @ApiModelProperty(value = "角色ID") 25 | private Long roleId; 26 | @Condition(condition = ConditionEnum.IN, field = "role_id") 27 | @ApiModelProperty(value = "角色ID") 28 | private Long[] roleIds; 29 | 30 | } 31 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/core/service/impl/ShopFlowServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.core.service.impl; 2 | 3 | import com.d2c.shop.service.common.api.base.BaseService; 4 | import com.d2c.shop.service.modules.core.mapper.ShopFlowMapper; 5 | import com.d2c.shop.service.modules.core.model.ShopFlowDO; 6 | import com.d2c.shop.service.modules.core.service.ShopFlowService; 7 | import com.d2c.shop.service.modules.core.service.ShopService; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.stereotype.Service; 10 | import org.springframework.transaction.annotation.Transactional; 11 | 12 | /** 13 | * @author BaiCai 14 | */ 15 | @Service 16 | public class ShopFlowServiceImpl extends BaseService implements ShopFlowService { 17 | 18 | @Autowired 19 | private ShopService shopService; 20 | 21 | @Override 22 | @Transactional 23 | public int doFlowing(ShopFlowDO shopFlow) { 24 | this.save(shopFlow); 25 | return shopService.updateBalance(shopFlow.getShopId(), shopFlow.getAmount()); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /shop-api/shop-api-customer/src/main/java/com/d2c/shop/customer/api/handler/impl/OrderPromotionHandler.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.customer.api.handler.impl; 2 | 3 | import com.d2c.shop.customer.api.handler.OrderHandler; 4 | import com.d2c.shop.service.modules.order.model.OrderDO; 5 | import com.d2c.shop.service.modules.order.model.OrderItemDO; 6 | import org.springframework.stereotype.Component; 7 | 8 | import java.math.BigDecimal; 9 | 10 | /** 11 | * @author Cai 12 | */ 13 | @Component 14 | public class OrderPromotionHandler implements OrderHandler { 15 | 16 | @Override 17 | public void operator(OrderDO order, Object... conditions) { 18 | // 商品活动和订单活动 19 | BigDecimal productAmount = BigDecimal.ZERO; 20 | for (OrderItemDO orderItem : order.getOrderItemList()) { 21 | BigDecimal itemAmount = orderItem.getRealPrice().multiply(new BigDecimal(orderItem.getQuantity())); 22 | productAmount = productAmount.add(itemAmount); 23 | orderItem.setPayAmount(itemAmount); 24 | } 25 | order.setProductAmount(productAmount); 26 | order.setPayAmount(productAmount); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /shop-service/src/main/resources/mapper/order/OrderItemMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 26 | 27 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/order/query/CrowdGroupQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.order.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | import java.util.Date; 11 | 12 | /** 13 | * @author BaiCai 14 | */ 15 | @Data 16 | @EqualsAndHashCode(callSuper = false) 17 | public class CrowdGroupQuery extends BaseQuery { 18 | 19 | @Condition(condition = ConditionEnum.EQ) 20 | @ApiModelProperty(value = "商品ID") 21 | private Long productId; 22 | @Condition(condition = ConditionEnum.GE, field = "deadline") 23 | @ApiModelProperty(value = "过期时间起") 24 | private Date deadlineL; 25 | @Condition(condition = ConditionEnum.LE, field = "deadline") 26 | @ApiModelProperty(value = "过期时间止") 27 | private Date deadlineR; 28 | @Condition(condition = ConditionEnum.EQ) 29 | @ApiModelProperty(value = "状态 1,0") 30 | private Integer status; 31 | 32 | } 33 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/model/ProductDetailDO.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.model; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import com.d2c.shop.service.common.api.annotation.Assert; 5 | import com.d2c.shop.service.common.api.annotation.Prevent; 6 | import com.d2c.shop.service.common.api.base.BaseDO; 7 | import com.d2c.shop.service.common.api.emuns.AssertEnum; 8 | import io.swagger.annotations.ApiModel; 9 | import io.swagger.annotations.ApiModelProperty; 10 | import lombok.Data; 11 | import lombok.EqualsAndHashCode; 12 | 13 | /** 14 | * @author BaiCai 15 | */ 16 | @Data 17 | @EqualsAndHashCode(callSuper = false) 18 | @TableName("P_PRODUCT_DETAIL") 19 | @ApiModel(description = "商品详情表") 20 | public class ProductDetailDO extends BaseDO { 21 | 22 | @Prevent 23 | @Assert(type = AssertEnum.NOT_NULL) 24 | @ApiModelProperty(value = "店铺ID") 25 | private Long shopId; 26 | @Prevent 27 | @Assert(type = AssertEnum.NOT_NULL) 28 | @ApiModelProperty(value = "商品ID") 29 | private Long productId; 30 | @ApiModelProperty(value = "内容") 31 | private String content; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /shop-common/shop-common-cache/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.d2c 8 | shop-common-cache 9 | 1.0-SNAPSHOT 10 | jar 11 | 12 | 13 | com.d2c 14 | shop-common 15 | 1.0-SNAPSHOT 16 | 17 | 18 | 19 | 20 | 21 | org.springframework.boot 22 | spring-boot-starter-data-redis 23 | 24 | 25 | 26 | com.alibaba 27 | fastjson 28 | 1.2.54 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/config/security/authentication/UserDetailsServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.config.security.authentication; 2 | 3 | import com.d2c.shop.service.modules.security.model.UserDO; 4 | import com.d2c.shop.service.modules.security.service.UserService; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.security.core.userdetails.UserDetails; 7 | import org.springframework.security.core.userdetails.UserDetailsService; 8 | import org.springframework.security.core.userdetails.UsernameNotFoundException; 9 | import org.springframework.stereotype.Component; 10 | 11 | /** 12 | * @author BaiCai 13 | */ 14 | @Component 15 | public class UserDetailsServiceImpl implements UserDetailsService { 16 | 17 | @Autowired 18 | private UserService userService; 19 | 20 | @Override 21 | public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException { 22 | UserDO user = userService.findByUsername(s); 23 | if (user == null) { 24 | throw new UsernameNotFoundException("该账号不存在,请重新确认"); 25 | } 26 | return new SecurityUserDetails(user); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/api/base/BaseQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.api.base; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 5 | import io.swagger.annotations.ApiModelProperty; 6 | import lombok.Data; 7 | 8 | import java.io.Serializable; 9 | import java.util.Date; 10 | 11 | /** 12 | * @author BaiCai 13 | */ 14 | @Data 15 | public abstract class BaseQuery implements Serializable { 16 | 17 | @Condition(condition = ConditionEnum.EQ) 18 | @ApiModelProperty(value = "唯一主键ID") 19 | public Long id; 20 | @Condition(condition = ConditionEnum.GE, field = "create_date") 21 | @ApiModelProperty(value = "创建时间起") 22 | public Date createDateL; 23 | @Condition(condition = ConditionEnum.LE, field = "create_date") 24 | @ApiModelProperty(value = "创建时间止") 25 | public Date createDateR; 26 | @Condition(condition = ConditionEnum.GE, field = "modify_date") 27 | @ApiModelProperty(value = "修改时间起") 28 | public Date modifyDateL; 29 | @Condition(condition = ConditionEnum.LE, field = "modify_date") 30 | @ApiModelProperty(value = "修改时间止") 31 | public Date modifyDateR; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/config/security/handler/RestLogoutSuccessHandler.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.config.security.handler; 2 | 3 | import com.d2c.shop.service.common.api.Response; 4 | import com.d2c.shop.service.common.api.ResultCode; 5 | import com.d2c.shop.service.modules.security.service.UserService; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.security.core.Authentication; 8 | import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; 9 | import org.springframework.stereotype.Component; 10 | 11 | import javax.servlet.ServletException; 12 | import javax.servlet.http.HttpServletRequest; 13 | import javax.servlet.http.HttpServletResponse; 14 | import java.io.IOException; 15 | 16 | /** 17 | * @author Cai 18 | */ 19 | @Component 20 | public class RestLogoutSuccessHandler implements LogoutSuccessHandler { 21 | 22 | @Autowired 23 | private UserService userService; 24 | 25 | @Override 26 | public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { 27 | userService.doLogout(authentication.getName()); 28 | Response.out(response, Response.restResult(null, ResultCode.SUCCESS)); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/logger/model/SmsDO.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.logger.model; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import com.d2c.shop.service.common.api.annotation.Assert; 5 | import com.d2c.shop.service.common.api.base.BaseDO; 6 | import com.d2c.shop.service.common.api.emuns.AssertEnum; 7 | import io.swagger.annotations.ApiModel; 8 | import io.swagger.annotations.ApiModelProperty; 9 | import lombok.Data; 10 | import lombok.EqualsAndHashCode; 11 | 12 | import java.util.Date; 13 | 14 | /** 15 | * @author Cai 16 | */ 17 | @Data 18 | @EqualsAndHashCode(callSuper = false) 19 | @TableName("LOG_SMS") 20 | @ApiModel(description = "短信表") 21 | public class SmsDO extends BaseDO { 22 | 23 | @Assert(type = AssertEnum.NOT_NULL) 24 | @ApiModelProperty(value = "手机号") 25 | private String mobile; 26 | @Assert(type = AssertEnum.NOT_NULL) 27 | @ApiModelProperty(value = "验证码") 28 | private String code; 29 | @Assert(type = AssertEnum.NOT_NULL) 30 | @ApiModelProperty(value = "IP地址") 31 | private String ip; 32 | @Assert(type = AssertEnum.NOT_NULL) 33 | @ApiModelProperty(value = "过期时间") 34 | private Date deadline; 35 | @Assert(type = AssertEnum.NOT_NULL) 36 | @ApiModelProperty(value = "状态 1,0") 37 | private Integer status; 38 | 39 | } 40 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/api/Response.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.api; 2 | 3 | import cn.hutool.json.JSONUtil; 4 | import com.baomidou.mybatisplus.extension.api.IErrorCode; 5 | import com.baomidou.mybatisplus.extension.api.R; 6 | import io.swagger.annotations.ApiModel; 7 | import lombok.extern.slf4j.Slf4j; 8 | 9 | import javax.servlet.ServletOutputStream; 10 | import javax.servlet.ServletResponse; 11 | import java.io.PrintWriter; 12 | 13 | /** 14 | * @author BaiCai 15 | */ 16 | @Slf4j 17 | @ApiModel(description = "返回结果") 18 | public final class Response extends R { 19 | 20 | public static R failed(IErrorCode errorCode, String msg) { 21 | R result = failed(errorCode); 22 | result.setMsg(msg); 23 | return result; 24 | } 25 | 26 | public static void out(ServletResponse response, R result) { 27 | ServletOutputStream os; 28 | try { 29 | response.setCharacterEncoding("UTF-8"); 30 | response.setContentType("application/json"); 31 | os = response.getOutputStream(); 32 | String str = JSONUtil.parse(result).toJSONString(0); 33 | os.write(str.getBytes("UTF-8")); 34 | os.close(); 35 | } catch (Exception e) { 36 | log.error(e.getMessage(), e); 37 | } 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/service/impl/DummyServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.d2c.shop.service.common.api.PageModel; 5 | import com.d2c.shop.service.common.api.base.BaseService; 6 | import com.d2c.shop.service.modules.member.mapper.DummyMapper; 7 | import com.d2c.shop.service.modules.member.model.DummyDO; 8 | import com.d2c.shop.service.modules.member.service.DummyService; 9 | import org.springframework.stereotype.Service; 10 | 11 | import java.util.ArrayList; 12 | import java.util.Collections; 13 | import java.util.List; 14 | 15 | /** 16 | * @author BaiCai 17 | */ 18 | @Service 19 | public class DummyServiceImpl extends BaseService implements DummyService { 20 | 21 | @Override 22 | public List findRandom(Integer size) { 23 | if (size > 100) { 24 | return new ArrayList<>(); 25 | } 26 | PageModel page = new PageModel(); 27 | page.setP((int) (Math.random() * 99)); 28 | page.setPs(100); 29 | Page pager = (Page) this.page(page); 30 | List list = pager.getRecords(); 31 | Collections.shuffle(list); 32 | return list.subList(0, size); 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/order/query/OrderQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.order.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | import java.util.Date; 11 | 12 | /** 13 | * @author BaiCai 14 | */ 15 | @Data 16 | @EqualsAndHashCode(callSuper = false) 17 | public class OrderQuery extends BaseQuery { 18 | 19 | @Condition(condition = ConditionEnum.LE, field = "expire_date") 20 | @ApiModelProperty(value = "过期时间止") 21 | public Date expireDateR; 22 | @Condition(condition = ConditionEnum.EQ) 23 | @ApiModelProperty(value = "店铺ID") 24 | private Long shopId; 25 | @Condition(condition = ConditionEnum.EQ) 26 | @ApiModelProperty(value = "订单号") 27 | private String sn; 28 | @Condition(condition = ConditionEnum.EQ) 29 | @ApiModelProperty(value = "类型") 30 | private String type; 31 | @Condition(condition = ConditionEnum.EQ) 32 | @ApiModelProperty(value = "状态") 33 | private String status; 34 | @Condition(condition = ConditionEnum.EQ) 35 | @ApiModelProperty(value = "会员ID") 36 | private Long memberId; 37 | 38 | } 39 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/core/service/impl/ShopServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.core.service.impl; 2 | 3 | import com.d2c.shop.service.common.api.base.BaseService; 4 | import com.d2c.shop.service.modules.core.mapper.ShopMapper; 5 | import com.d2c.shop.service.modules.core.model.ShopDO; 6 | import com.d2c.shop.service.modules.core.service.ShopService; 7 | import com.d2c.shop.service.modules.core.service.ShopkeeperService; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.stereotype.Service; 10 | import org.springframework.transaction.annotation.Transactional; 11 | 12 | import java.math.BigDecimal; 13 | 14 | /** 15 | * @author BaiCai 16 | */ 17 | @Service 18 | public class ShopServiceImpl extends BaseService implements ShopService { 19 | 20 | @Autowired 21 | private ShopMapper shopMapper; 22 | @Autowired 23 | private ShopkeeperService shopkeeperService; 24 | 25 | @Override 26 | @Transactional 27 | public ShopDO doCreate(ShopDO shop, String account) { 28 | this.save(shop); 29 | shopkeeperService.updateShopId(account, shop.getId()); 30 | return shop; 31 | } 32 | 33 | @Override 34 | @Transactional 35 | public int updateBalance(Long id, BigDecimal amount) { 36 | return shopMapper.updateBalance(id, amount); 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.d2c 8 | shop-parent 9 | 1.0-SNAPSHOT 10 | pom 11 | 12 | 13 | 1.8 14 | 15 | 16 | 17 | shop-api 18 | shop-common 19 | shop-quartz 20 | shop-service 21 | 22 | 23 | 24 | org.springframework.boot 25 | spring-boot-starter-parent 26 | 2.0.5.RELEASE 27 | 28 | 29 | 30 | 31 | org.springframework.boot 32 | spring-boot-starter 33 | 34 | 35 | org.springframework.boot 36 | spring-boot-starter-test 37 | test 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /shop-common/shop-common-cache/src/main/java/com/d2c/shop/cache/redis/config/serializer/FastJsonRedisSerializer.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.cache.redis.config.serializer; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.alibaba.fastjson.serializer.SerializerFeature; 5 | import org.springframework.data.redis.serializer.RedisSerializer; 6 | import org.springframework.data.redis.serializer.SerializationException; 7 | 8 | import java.nio.charset.Charset; 9 | 10 | /** 11 | * @author BaiCai 12 | */ 13 | public class FastJsonRedisSerializer implements RedisSerializer { 14 | 15 | private static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8"); 16 | private Class clazz; 17 | 18 | public FastJsonRedisSerializer(Class clazz) { 19 | super(); 20 | this.clazz = clazz; 21 | } 22 | 23 | @Override 24 | public byte[] serialize(T t) throws SerializationException { 25 | if (null == t) { 26 | return new byte[0]; 27 | } 28 | return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(DEFAULT_CHARSET); 29 | } 30 | 31 | @Override 32 | public T deserialize(byte[] bytes) throws SerializationException { 33 | if (null == bytes || bytes.length <= 0) { 34 | return null; 35 | } 36 | String str = new String(bytes, DEFAULT_CHARSET); 37 | return (T) JSON.parseObject(str, clazz); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /shop-common/shop-common-orm/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.d2c 8 | shop-common-orm 9 | 1.0-SNAPSHOT 10 | jar 11 | 12 | 13 | com.d2c 14 | shop-common 15 | 1.0-SNAPSHOT 16 | 17 | 18 | 19 | 20 | 21 | com.baomidou 22 | mybatis-plus-boot-starter 23 | 3.0.7.1 24 | 25 | 26 | 27 | com.alibaba 28 | druid-spring-boot-starter 29 | 1.1.10 30 | 31 | 32 | 33 | mysql 34 | mysql-connector-java 35 | 5.1.44 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/model/ProductClassifyDO.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.model; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableField; 4 | import com.baomidou.mybatisplus.annotation.TableName; 5 | import com.d2c.shop.service.common.api.annotation.Assert; 6 | import com.d2c.shop.service.common.api.base.BaseDO; 7 | import com.d2c.shop.service.common.api.emuns.AssertEnum; 8 | import io.swagger.annotations.ApiModel; 9 | import io.swagger.annotations.ApiModelProperty; 10 | import lombok.Data; 11 | import lombok.EqualsAndHashCode; 12 | 13 | import java.util.ArrayList; 14 | import java.util.List; 15 | 16 | /** 17 | * @author BaiCai 18 | */ 19 | @Data 20 | @EqualsAndHashCode(callSuper = false) 21 | @TableName("P_PRODUCT_CLASSIFY") 22 | @ApiModel(description = "商品分类表") 23 | public class ProductClassifyDO extends BaseDO { 24 | 25 | @Assert(type = AssertEnum.NOT_NULL) 26 | @ApiModelProperty(value = "名称") 27 | private String name; 28 | @ApiModelProperty(value = "父级ID") 29 | private Long parentId; 30 | @Assert(type = AssertEnum.NOT_NULL) 31 | @ApiModelProperty(value = "级别") 32 | private Integer level; 33 | @Assert(type = AssertEnum.NOT_NULL) 34 | @ApiModelProperty(value = "排序") 35 | private Integer sort; 36 | @TableField(exist = false) 37 | @ApiModelProperty(value = "子级列表") 38 | private List children = new ArrayList<>(); 39 | 40 | } 41 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/utils/SpringUtil.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.utils; 2 | 3 | import org.springframework.beans.BeansException; 4 | import org.springframework.context.ApplicationContext; 5 | import org.springframework.context.ApplicationContextAware; 6 | import org.springframework.stereotype.Component; 7 | 8 | /** 9 | * @author BaiCai 10 | */ 11 | @Component 12 | public class SpringUtil implements ApplicationContextAware { 13 | 14 | private static ApplicationContext applicationContext; 15 | 16 | // 获取applicationContext 17 | public static ApplicationContext getApplicationContext() { 18 | return applicationContext; 19 | } 20 | 21 | @Override 22 | public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { 23 | if (SpringUtil.applicationContext == null) { 24 | SpringUtil.applicationContext = applicationContext; 25 | } 26 | } 27 | 28 | // 通过name获取Bean 29 | public static Object getBean(String name) { 30 | return getApplicationContext().getBean(name); 31 | } 32 | 33 | // 通过class获取Bean 34 | public static T getBean(Class clazz) { 35 | return getApplicationContext().getBean(clazz); 36 | } 37 | 38 | // 通过name,以及Clazz返回指定的Bean 39 | public static T getBean(String name, Class clazz) { 40 | return getApplicationContext().getBean(name, clazz); 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/utils/ReflectUtil.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.utils; 2 | 3 | import cn.hutool.core.bean.copier.CopyOptions; 4 | import com.d2c.shop.service.common.api.constant.FieldConstant; 5 | 6 | import java.lang.reflect.Field; 7 | import java.util.ArrayList; 8 | import java.util.Arrays; 9 | import java.util.List; 10 | 11 | /** 12 | * @author Cai 13 | */ 14 | public class ReflectUtil { 15 | 16 | // 获取基类和父类所有的字段 17 | public static Field[] getAllFields(Class clazz) { 18 | List fieldList = new ArrayList<>(); 19 | while (clazz != null) { 20 | fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields()))); 21 | clazz = clazz.getSuperclass(); 22 | } 23 | Field[] fields = new Field[fieldList.size()]; 24 | fieldList.toArray(fields); 25 | return fields; 26 | } 27 | 28 | // 清空BaseDO的公共字段 29 | public static CopyOptions clearPublicFields() { 30 | CopyOptions options = CopyOptions.create() 31 | .setIgnoreNullValue(true) 32 | .setIgnoreError(true) 33 | .setIgnoreProperties(FieldConstant.ID, 34 | FieldConstant.CREATE_DATE, 35 | FieldConstant.CREATE_MAN, 36 | FieldConstant.MODIFY_DATE, 37 | FieldConstant.MODIFY_MAN, 38 | FieldConstant.DELETED); 39 | return options; 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /doc/script/sql/procedure_utf8mb4.sql: -------------------------------------------------------------------------------- 1 | /* 2 | * 将当前数据库中所有表的字符集转换成utf8mb4 3 | */ 4 | 5 | DROP PROCEDURE IF EXISTS UP_CHANGE_UTF8MB4; 6 | 7 | DELIMITER $$ 8 | 9 | CREATE PROCEDURE UP_CHANGE_UTF8MB4() 10 | COMMENT '将当前数据库中所有表的字符集转换成utf8mb4' 11 | BEGIN 12 | DECLARE $i INT; 13 | DECLARE $cnt INT; 14 | DECLARE $NAME VARCHAR(64); 15 | 16 | #创建临时表,代替游标 17 | DROP TABLE IF EXISTS tmp_Table_name; 18 | CREATE TEMPORARY TABLE tmp_Table_name ( 19 | id INT NOT NULL AUTO_INCREMENT, 20 | table_name VARCHAR(64) NOT NULL, 21 | PRIMARY KEY (`id`) 22 | ); 23 | 24 | #插入要处理的表名到临时表中 25 | INSERT INTO tmp_Table_name (table_name) 26 | SELECT 27 | table_name 28 | FROM information_schema.`TABLES` 29 | WHERE TABLE_TYPE = 'BASE TABLE' 30 | AND TABLE_SCHEMA = DATABASE(); 31 | 32 | #循环处理每一张表,改表的字符集 33 | SET $i = 1; 34 | SELECT 35 | COUNT(1) INTO $cnt 36 | FROM tmp_Table_name; 37 | WHILE $i <= $cnt DO 38 | SELECT 39 | table_name INTO $NAME 40 | FROM tmp_Table_name 41 | WHERE id = $i; 42 | 43 | SET @asql = CONCAT('ALTER TABLE ', $NAME, ' CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci; '); 44 | PREPARE asql FROM @asql; 45 | EXECUTE asql; 46 | 47 | SET @asql = CONCAT('ALTER TABLE ', $NAME, ' CONVERT TO CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci; '); 48 | PREPARE asql FROM @asql; 49 | SELECT @asql; 50 | EXECUTE asql; 51 | 52 | SET $i = $i + 1; 53 | END WHILE; 54 | DEALLOCATE PREPARE asql; 55 | DROP TABLE tmp_Table_name; 56 | END$$ 57 | DELIMITER; -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/logger/nosql/elasticsearch/document/BackTraceLog.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.logger.nosql.elasticsearch.document; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.Data; 6 | import org.springframework.data.annotation.Id; 7 | import org.springframework.data.elasticsearch.annotations.Document; 8 | 9 | import java.io.Serializable; 10 | 11 | /** 12 | * @author BaiCai 13 | */ 14 | @Data 15 | @ApiModel(description = "后台操作日志") 16 | @Document(indexName = "logger-index", type = "back_trace_log") 17 | public class BackTraceLog implements Serializable { 18 | 19 | @Id 20 | @ApiModelProperty(value = "主键(时间戳方便查询)") 21 | private Long id; 22 | @ApiModelProperty(value = "IP地址") 23 | private String ip; 24 | @ApiModelProperty(value = "请求时间") 25 | private String time; 26 | @ApiModelProperty(value = "请求地址") 27 | private String path; 28 | @ApiModelProperty(value = "请求方式") 29 | private String method; 30 | @ApiModelProperty(value = "请求响应") 31 | private Integer status; 32 | @ApiModelProperty(value = "请求账号") 33 | private String username; 34 | @ApiModelProperty(value = "请求耗时") 35 | private Long timeTaken; 36 | @ApiModelProperty(value = "请求参数") 37 | private String parameterMap; 38 | @ApiModelProperty(value = "请求参数") 39 | private String requestBody; 40 | @ApiModelProperty(value = "请求返回") 41 | private String responseBody; 42 | 43 | } 44 | -------------------------------------------------------------------------------- /shop-api/shop-api-customer/src/main/java/com/d2c/shop/customer/sdk/pay/wxpay/IWXPayDomain.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.customer.sdk.pay.wxpay; 2 | 3 | /** 4 | * 域名管理,实现主备域名自动切换 5 | */ 6 | public abstract interface IWXPayDomain { 7 | 8 | /** 9 | * 上报域名网络状况 10 | * 11 | * @param domain 域名。 比如:api.mch.weixin.qq.com 12 | * @param elapsedTimeMillis 耗时 13 | * @param ex 网络请求中出现的异常。 14 | * null表示没有异常 15 | * ConnectTimeoutException,表示建立网络连接异常 16 | * UnknownHostException, 表示dns解析异常 17 | */ 18 | abstract void report(final String domain, long elapsedTimeMillis, final Exception ex); 19 | 20 | /** 21 | * 获取域名 22 | * 23 | * @param config 配置 24 | * @return 域名 25 | */ 26 | abstract DomainInfo getDomain(final WXPayConfig config); 27 | 28 | static class DomainInfo { 29 | 30 | public String domain; //域名 31 | public boolean primaryDomain; //该域名是否为主域名。例如:api.mch.weixin.qq.com为主域名 32 | 33 | public DomainInfo(String domain, boolean primaryDomain) { 34 | this.domain = domain; 35 | this.primaryDomain = primaryDomain; 36 | } 37 | 38 | @Override 39 | public String toString() { 40 | return "DomainInfo{" + 41 | "domain='" + domain + '\'' + 42 | ", primaryDomain=" + primaryDomain + 43 | '}'; 44 | } 45 | 46 | } 47 | 48 | } -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/api/base/BaseDO.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.api.base; 2 | 3 | import cn.afterturn.easypoi.excel.annotation.Excel; 4 | import com.baomidou.mybatisplus.annotation.FieldFill; 5 | import com.baomidou.mybatisplus.annotation.IdType; 6 | import com.baomidou.mybatisplus.annotation.TableField; 7 | import com.baomidou.mybatisplus.annotation.TableId; 8 | import com.baomidou.mybatisplus.extension.activerecord.Model; 9 | import io.swagger.annotations.ApiModelProperty; 10 | import lombok.Data; 11 | import lombok.EqualsAndHashCode; 12 | 13 | import java.util.Date; 14 | 15 | /** 16 | * @author BaiCai 17 | */ 18 | @Data 19 | @EqualsAndHashCode(callSuper = false) 20 | public abstract class BaseDO extends Model { 21 | 22 | @TableId(value = "id", type = IdType.ID_WORKER) 23 | @ApiModelProperty(value = "唯一主键ID") 24 | private Long id; 25 | @Excel(name = "创建时间", format = "yyyy-MM-dd HH:mm:ss") 26 | @TableField(value = "create_date", fill = FieldFill.INSERT) 27 | @ApiModelProperty(value = "创建时间") 28 | private Date createDate; 29 | @TableField(value = "create_man", fill = FieldFill.INSERT) 30 | @ApiModelProperty(value = "创建用户") 31 | private String createMan; 32 | @TableField(value = "modify_date", fill = FieldFill.UPDATE) 33 | @ApiModelProperty(value = "修改时间") 34 | private Date modifyDate; 35 | @TableField(value = "modify_man", fill = FieldFill.UPDATE) 36 | @ApiModelProperty(value = "修改用户") 37 | private String modifyMan; 38 | 39 | } 40 | -------------------------------------------------------------------------------- /shop-api/shop-api-customer/src/main/java/com/d2c/shop/customer/sdk/pay/wxpay/WXPayXmlUtil.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.customer.sdk.pay.wxpay; 2 | 3 | import org.w3c.dom.Document; 4 | 5 | import javax.xml.XMLConstants; 6 | import javax.xml.parsers.DocumentBuilder; 7 | import javax.xml.parsers.DocumentBuilderFactory; 8 | import javax.xml.parsers.ParserConfigurationException; 9 | 10 | /** 11 | * 2018/7/3 12 | */ 13 | public final class WXPayXmlUtil { 14 | 15 | public static DocumentBuilder newDocumentBuilder() throws ParserConfigurationException { 16 | DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); 17 | documentBuilderFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); 18 | documentBuilderFactory.setFeature("http://xml.org/sax/features/external-general-entities", false); 19 | documentBuilderFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); 20 | documentBuilderFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); 21 | documentBuilderFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); 22 | documentBuilderFactory.setXIncludeAware(false); 23 | documentBuilderFactory.setExpandEntityReferences(false); 24 | return documentBuilderFactory.newDocumentBuilder(); 25 | } 26 | 27 | public static Document newDocument() throws ParserConfigurationException { 28 | return newDocumentBuilder().newDocument(); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/api/base/BaseService.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.api.base; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.Wrapper; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 6 | import com.d2c.shop.service.common.api.emuns.OperateEnum; 7 | import com.d2c.shop.service.common.utils.AssertUtil; 8 | import com.d2c.shop.service.common.utils.PreventUtil; 9 | 10 | import java.util.Collection; 11 | 12 | /** 13 | * @author Cai 14 | */ 15 | public abstract class BaseService, T extends BaseDO> extends ServiceImpl { 16 | 17 | @Override 18 | public boolean save(T entity) { 19 | AssertUtil.checkout(entity, OperateEnum.INSERT); 20 | return super.save(entity); 21 | } 22 | 23 | @Override 24 | public boolean saveBatch(Collection entityList, int batchSize) { 25 | for (T entity : entityList) { 26 | AssertUtil.checkout(entity, OperateEnum.INSERT); 27 | } 28 | return super.saveBatch(entityList, batchSize); 29 | } 30 | 31 | @Override 32 | public boolean updateById(T entity) { 33 | PreventUtil.filtrate(entity, OperateEnum.UPDATE); 34 | return super.updateById(entity); 35 | } 36 | 37 | @Override 38 | public boolean update(T entity, Wrapper updateWrapper) { 39 | PreventUtil.filtrate(entity, OperateEnum.UPDATE); 40 | return super.update(entity, updateWrapper); 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/logger/nosql/mongodb/document/UserVisitLog.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.logger.nosql.mongodb.document; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.Data; 6 | import org.springframework.data.annotation.Id; 7 | import org.springframework.data.mongodb.core.index.CompoundIndex; 8 | import org.springframework.data.mongodb.core.index.CompoundIndexes; 9 | import org.springframework.data.mongodb.core.index.Indexed; 10 | import org.springframework.data.mongodb.core.mapping.Document; 11 | 12 | import java.io.Serializable; 13 | import java.util.Date; 14 | 15 | /** 16 | * @author Cai 17 | */ 18 | @Data 19 | @ApiModel(description = "用户访问日志") 20 | @CompoundIndexes({@CompoundIndex(name = "idx_uv_daily", def = "{'shopId':1, 'memberId':1}")}) 21 | @Document(collection = "user_visit_log") 22 | public class UserVisitLog implements Serializable { 23 | 24 | @Indexed(name = "idx_shop_id") 25 | @ApiModelProperty(value = "店铺ID") 26 | private Long shopId; 27 | @ApiModelProperty(value = "账号ID") 28 | private Long memberId; 29 | @Indexed(name = "idx_time") 30 | @ApiModelProperty(value = "访问时间") 31 | private Date time; 32 | @Id 33 | @ApiModelProperty(value = "全局主键") 34 | private String id; 35 | 36 | public UserVisitLog() { 37 | } 38 | 39 | public UserVisitLog(Long memberId, Long shopId) { 40 | this.time = new Date(); 41 | this.memberId = memberId; 42 | this.shopId = shopId; 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /shop-api/shop-api-admin/src/main/java/com/d2c/shop/admin/config/swagger/Swagger2Config.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.admin.config.swagger; 2 | 3 | import io.swagger.annotations.ApiOperation; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | import org.springframework.context.annotation.Profile; 7 | import springfox.documentation.builders.ApiInfoBuilder; 8 | import springfox.documentation.builders.PathSelectors; 9 | import springfox.documentation.builders.RequestHandlerSelectors; 10 | import springfox.documentation.service.ApiInfo; 11 | import springfox.documentation.spi.DocumentationType; 12 | import springfox.documentation.spring.web.plugins.Docket; 13 | import springfox.documentation.swagger2.annotations.EnableSwagger2; 14 | 15 | /** 16 | * @author BaiCai 17 | */ 18 | @Configuration 19 | @EnableSwagger2 20 | @Profile(value = {"dev", "test"}) 21 | public class Swagger2Config { 22 | 23 | @Bean 24 | public Docket backApi() { 25 | return new Docket(DocumentationType.SWAGGER_2) 26 | .groupName("后台接口") 27 | .apiInfo(apiInfo()) 28 | .select() 29 | .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) 30 | .paths(PathSelectors.regex("/back/.*")) 31 | .build(); 32 | } 33 | 34 | private ApiInfo apiInfo() { 35 | return new ApiInfoBuilder() 36 | .title("API接口文档") 37 | .description("Api Documentation") 38 | .version("1.0.0") 39 | .build(); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /shop-api/shop-api-business/src/main/java/com/d2c/shop/business/config/swagger/Swagger2Config.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.business.config.swagger; 2 | 3 | import io.swagger.annotations.ApiOperation; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | import org.springframework.context.annotation.Profile; 7 | import springfox.documentation.builders.ApiInfoBuilder; 8 | import springfox.documentation.builders.PathSelectors; 9 | import springfox.documentation.builders.RequestHandlerSelectors; 10 | import springfox.documentation.service.ApiInfo; 11 | import springfox.documentation.spi.DocumentationType; 12 | import springfox.documentation.spring.web.plugins.Docket; 13 | import springfox.documentation.swagger2.annotations.EnableSwagger2; 14 | 15 | /** 16 | * @author BaiCai 17 | */ 18 | @Configuration 19 | @EnableSwagger2 20 | @Profile(value = {"dev", "test"}) 21 | public class Swagger2Config { 22 | 23 | @Bean 24 | public Docket bApi() { 25 | return new Docket(DocumentationType.SWAGGER_2) 26 | .groupName("B端接口") 27 | .apiInfo(apiInfo()) 28 | .select() 29 | .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) 30 | .paths(PathSelectors.regex("/b_api/.*")) 31 | .build(); 32 | } 33 | 34 | private ApiInfo apiInfo() { 35 | return new ApiInfoBuilder() 36 | .title("API接口文档") 37 | .description("Api Documentation") 38 | .version("1.0.0") 39 | .build(); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /shop-api/shop-api-customer/src/main/java/com/d2c/shop/customer/config/swagger/Swagger2Config.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.customer.config.swagger; 2 | 3 | import io.swagger.annotations.ApiOperation; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | import org.springframework.context.annotation.Profile; 7 | import springfox.documentation.builders.ApiInfoBuilder; 8 | import springfox.documentation.builders.PathSelectors; 9 | import springfox.documentation.builders.RequestHandlerSelectors; 10 | import springfox.documentation.service.ApiInfo; 11 | import springfox.documentation.spi.DocumentationType; 12 | import springfox.documentation.spring.web.plugins.Docket; 13 | import springfox.documentation.swagger2.annotations.EnableSwagger2; 14 | 15 | /** 16 | * @author BaiCai 17 | */ 18 | @Configuration 19 | @EnableSwagger2 20 | @Profile(value = {"dev", "test"}) 21 | public class Swagger2Config { 22 | 23 | @Bean 24 | public Docket cApi() { 25 | return new Docket(DocumentationType.SWAGGER_2) 26 | .groupName("C端接口") 27 | .apiInfo(apiInfo()) 28 | .select() 29 | .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) 30 | .paths(PathSelectors.regex("/c_api/.*")) 31 | .build(); 32 | } 33 | 34 | private ApiInfo apiInfo() { 35 | return new ApiInfoBuilder() 36 | .title("API接口文档") 37 | .description("Api Documentation") 38 | .version("1.0.0") 39 | .build(); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /shop-api/shop-api-business/src/main/java/com/d2c/shop/business/api/MessageController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.business.api; 2 | 3 | import cn.hutool.crypto.digest.DigestUtil; 4 | import com.baomidou.mybatisplus.extension.api.R; 5 | import com.d2c.shop.business.api.base.BaseController; 6 | import com.d2c.shop.service.common.api.Asserts; 7 | import com.d2c.shop.service.common.api.Response; 8 | import com.d2c.shop.service.common.api.ResultCode; 9 | import com.d2c.shop.service.common.sdk.sms.SmsConstant; 10 | import com.d2c.shop.service.common.utils.RequestUtil; 11 | import com.d2c.shop.service.modules.logger.service.SmsService; 12 | import io.swagger.annotations.Api; 13 | import io.swagger.annotations.ApiOperation; 14 | import org.springframework.beans.factory.annotation.Autowired; 15 | import org.springframework.web.bind.annotation.RequestMapping; 16 | import org.springframework.web.bind.annotation.RequestMethod; 17 | import org.springframework.web.bind.annotation.RestController; 18 | 19 | /** 20 | * @author Cai 21 | */ 22 | @Api(description = "短信业务") 23 | @RestController 24 | @RequestMapping("/b_api/message") 25 | public class MessageController extends BaseController { 26 | 27 | @Autowired 28 | private SmsService smsService; 29 | 30 | @ApiOperation(value = "发送短信") 31 | @RequestMapping(value = "/sms", method = RequestMethod.POST) 32 | public R sms(String mobile, String sign) { 33 | Asserts.eq(DigestUtil.md5Hex(mobile + SmsConstant.SIGN_KEY), sign, "签名错误"); 34 | smsService.doSend(mobile, RequestUtil.getRequestIp(request)); 35 | return Response.restResult(null, ResultCode.SUCCESS); 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /shop-api/shop-api-customer/src/main/java/com/d2c/shop/customer/api/MessageController.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.customer.api; 2 | 3 | import cn.hutool.crypto.digest.DigestUtil; 4 | import com.baomidou.mybatisplus.extension.api.R; 5 | import com.d2c.shop.customer.api.base.BaseController; 6 | import com.d2c.shop.service.common.api.Asserts; 7 | import com.d2c.shop.service.common.api.Response; 8 | import com.d2c.shop.service.common.api.ResultCode; 9 | import com.d2c.shop.service.common.sdk.sms.SmsConstant; 10 | import com.d2c.shop.service.common.utils.RequestUtil; 11 | import com.d2c.shop.service.modules.logger.service.SmsService; 12 | import io.swagger.annotations.Api; 13 | import io.swagger.annotations.ApiOperation; 14 | import org.springframework.beans.factory.annotation.Autowired; 15 | import org.springframework.web.bind.annotation.RequestMapping; 16 | import org.springframework.web.bind.annotation.RequestMethod; 17 | import org.springframework.web.bind.annotation.RestController; 18 | 19 | /** 20 | * @author Cai 21 | */ 22 | @Api(description = "短信业务") 23 | @RestController 24 | @RequestMapping("/c_api/message") 25 | public class MessageController extends BaseController { 26 | 27 | @Autowired 28 | private SmsService smsService; 29 | 30 | @ApiOperation(value = "发送短信") 31 | @RequestMapping(value = "/sms", method = RequestMethod.POST) 32 | public R sms(String mobile, String sign) { 33 | Asserts.eq(DigestUtil.md5Hex(mobile + SmsConstant.SIGN_KEY), sign, "签名错误"); 34 | smsService.doSend(mobile, RequestUtil.getRequestIp(request)); 35 | return Response.restResult(null, ResultCode.SUCCESS); 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/query/CouponQuery.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.query; 2 | 3 | import com.d2c.shop.service.common.api.annotation.Condition; 4 | import com.d2c.shop.service.common.api.base.BaseQuery; 5 | import com.d2c.shop.service.common.api.emuns.ConditionEnum; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | import java.util.Date; 11 | 12 | /** 13 | * @author BaiCai 14 | */ 15 | @Data 16 | @EqualsAndHashCode(callSuper = false) 17 | public class CouponQuery extends BaseQuery { 18 | 19 | @Condition(condition = ConditionEnum.EQ) 20 | @ApiModelProperty(value = "店铺ID") 21 | private Long shopId; 22 | @Condition(condition = ConditionEnum.EQ) 23 | @ApiModelProperty(value = "状态 1,0") 24 | private Integer status; 25 | @Condition(condition = ConditionEnum.EQ) 26 | @ApiModelProperty(value = "拼团 1,0") 27 | private Integer crowd; 28 | @Condition(condition = ConditionEnum.GT, field = "receive_start_date") 29 | @ApiModelProperty(value = "领取期限-开始起") 30 | private Date receiveStartDateL; 31 | @Condition(condition = ConditionEnum.LE, field = "receive_start_date") 32 | @ApiModelProperty(value = "领取期限-开始止") 33 | private Date receiveStartDateR; 34 | @Condition(condition = ConditionEnum.GE, field = "receive_end_date") 35 | @ApiModelProperty(value = "领取期限-结束起") 36 | private Date receiveEndDateL; 37 | @Condition(condition = ConditionEnum.LT, field = "receive_end_date") 38 | @ApiModelProperty(value = "领取期限-结束止") 39 | private Date receiveEndDateR; 40 | 41 | } 42 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/model/ProductCategoryDO.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.model; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableField; 4 | import com.baomidou.mybatisplus.annotation.TableName; 5 | import com.d2c.shop.service.common.api.annotation.Assert; 6 | import com.d2c.shop.service.common.api.annotation.Prevent; 7 | import com.d2c.shop.service.common.api.base.BaseDO; 8 | import com.d2c.shop.service.common.api.emuns.AssertEnum; 9 | import io.swagger.annotations.ApiModel; 10 | import io.swagger.annotations.ApiModelProperty; 11 | import lombok.Data; 12 | import lombok.EqualsAndHashCode; 13 | 14 | import java.util.ArrayList; 15 | import java.util.List; 16 | 17 | /** 18 | * @author BaiCai 19 | */ 20 | @Data 21 | @EqualsAndHashCode(callSuper = false) 22 | @TableName("P_PRODUCT_CATEGORY") 23 | @ApiModel(description = "商品品类表") 24 | public class ProductCategoryDO extends BaseDO { 25 | 26 | @Prevent 27 | @Assert(type = AssertEnum.NOT_NULL) 28 | @ApiModelProperty(value = "店铺ID") 29 | private Long shopId; 30 | @Assert(type = AssertEnum.NOT_NULL) 31 | @ApiModelProperty(value = "名称") 32 | private String name; 33 | @ApiModelProperty(value = "父级ID") 34 | private Long parentId; 35 | @Assert(type = AssertEnum.NOT_NULL) 36 | @ApiModelProperty(value = "级别") 37 | private Integer level; 38 | @Assert(type = AssertEnum.NOT_NULL) 39 | @ApiModelProperty(value = "排序") 40 | private Integer sort; 41 | @TableField(exist = false) 42 | @ApiModelProperty(value = "子级列表") 43 | private List children = new ArrayList<>(); 44 | 45 | } 46 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/member/service/impl/MemberCouponServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.member.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.exceptions.ApiException; 4 | import com.d2c.shop.service.common.api.base.BaseService; 5 | import com.d2c.shop.service.modules.member.mapper.MemberCouponMapper; 6 | import com.d2c.shop.service.modules.member.model.MemberCouponDO; 7 | import com.d2c.shop.service.modules.member.service.MemberCouponService; 8 | import com.d2c.shop.service.modules.product.service.CouponService; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.stereotype.Service; 11 | import org.springframework.transaction.annotation.Transactional; 12 | 13 | /** 14 | * @author BaiCai 15 | */ 16 | @Service 17 | public class MemberCouponServiceImpl extends BaseService implements MemberCouponService { 18 | 19 | @Autowired 20 | private CouponService couponService; 21 | 22 | @Override 23 | @Transactional 24 | public MemberCouponDO doReceive(MemberCouponDO memberCoupon) { 25 | int success = couponService.updateConsumption(memberCoupon.getCouponId()); 26 | if (success == 0) { 27 | throw new ApiException("优惠券已被一抢而空"); 28 | } 29 | this.save(memberCoupon); 30 | return memberCoupon; 31 | } 32 | 33 | @Override 34 | @Transactional 35 | public MemberCouponDO doSend(MemberCouponDO memberCoupon) { 36 | couponService.updateConsumption(memberCoupon.getCouponId()); 37 | this.save(memberCoupon); 38 | return memberCoupon; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /shop-api/shop-api-customer/src/main/java/com/d2c/shop/customer/sdk/pay/alipay/AliPayConfig.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.customer.sdk.pay.alipay; 2 | 3 | import org.springframework.beans.factory.annotation.Value; 4 | import org.springframework.stereotype.Component; 5 | 6 | /** 7 | * @author Cai 8 | */ 9 | @Component 10 | public class AliPayConfig { 11 | 12 | public static String API_URL; 13 | public static String APP_ID; 14 | public static String PRIVATE_KEY; 15 | public static String PUBLIC_KEY; 16 | public static String RETURN_URL1; 17 | public static String RETURN_URL2; 18 | public static String NOTIFY_URL; 19 | 20 | @Value("${shop.pay.alipay.api-url}") 21 | public void setApiUrl(String apiUrl) { 22 | API_URL = apiUrl; 23 | } 24 | 25 | @Value("${shop.pay.alipay.return-url1}") 26 | public void setReturnUrl1(String returnUrl) { 27 | RETURN_URL1 = returnUrl; 28 | } 29 | 30 | @Value("${shop.pay.alipay.return-url2}") 31 | public void setReturnUrl2(String returnUrl) { 32 | RETURN_URL2 = returnUrl; 33 | } 34 | 35 | @Value("${shop.pay.alipay.notify-url}") 36 | public void setNotifyUrl(String notifyUrl) { 37 | NOTIFY_URL = notifyUrl; 38 | } 39 | 40 | @Value("${shop.pay.alipay.app-id}") 41 | public void setAppId(String appId) { 42 | APP_ID = appId; 43 | } 44 | 45 | @Value("${shop.pay.alipay.private-key}") 46 | public void setPrivateKey(String privateKey) { 47 | PRIVATE_KEY = privateKey; 48 | } 49 | 50 | @Value("${shop.pay.alipay.public-key}") 51 | public void setPublicKey(String publicKey) { 52 | PUBLIC_KEY = publicKey; 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/service/impl/ProductSkuServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.service.impl; 2 | 3 | import com.d2c.shop.service.common.api.base.BaseService; 4 | import com.d2c.shop.service.modules.product.mapper.ProductSkuMapper; 5 | import com.d2c.shop.service.modules.product.model.ProductSkuDO; 6 | import com.d2c.shop.service.modules.product.service.ProductService; 7 | import com.d2c.shop.service.modules.product.service.ProductSkuService; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.stereotype.Service; 10 | import org.springframework.transaction.annotation.Transactional; 11 | 12 | /** 13 | * @author BaiCai 14 | */ 15 | @Service 16 | public class ProductSkuServiceImpl extends BaseService implements ProductSkuService { 17 | 18 | @Autowired 19 | private ProductSkuMapper productSkuMapper; 20 | @Autowired 21 | private ProductService productService; 22 | 23 | @Override 24 | @Transactional 25 | public int doDeductStock(Long id, Long productId, Integer quantity) { 26 | int success = 1; 27 | success *= productSkuMapper.doDeductStock(id, quantity); 28 | success *= productService.doDeductStock(productId, quantity); 29 | return success; 30 | } 31 | 32 | @Override 33 | @Transactional 34 | public int doReturnStock(Long id, Long productId, Integer quantity) { 35 | int success = 1; 36 | success *= productSkuMapper.doReturnStock(id, quantity); 37 | success *= productService.doReturnStock(productId, quantity); 38 | return success; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/product/model/ProductSkuDO.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.product.model; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import com.d2c.shop.service.common.api.annotation.Assert; 5 | import com.d2c.shop.service.common.api.annotation.Prevent; 6 | import com.d2c.shop.service.common.api.base.extension.BaseDelDO; 7 | import com.d2c.shop.service.common.api.emuns.AssertEnum; 8 | import io.swagger.annotations.ApiModel; 9 | import io.swagger.annotations.ApiModelProperty; 10 | import lombok.Data; 11 | import lombok.EqualsAndHashCode; 12 | 13 | import java.math.BigDecimal; 14 | 15 | /** 16 | * @author BaiCai 17 | */ 18 | @Data 19 | @EqualsAndHashCode(callSuper = false) 20 | @TableName("P_PRODUCT_SKU") 21 | @ApiModel(description = "商品SKU表") 22 | public class ProductSkuDO extends BaseDelDO { 23 | 24 | @Prevent 25 | @Assert(type = AssertEnum.NOT_NULL) 26 | @ApiModelProperty(value = "店铺ID") 27 | private Long shopId; 28 | @Prevent 29 | @Assert(type = AssertEnum.NOT_NULL) 30 | @ApiModelProperty(value = "商品ID") 31 | private Long productId; 32 | @Assert(type = AssertEnum.NOT_NULL) 33 | @ApiModelProperty(value = "规格") 34 | private String standard; 35 | @Assert(type = AssertEnum.NOT_NULL) 36 | @ApiModelProperty(value = "销售价") 37 | private BigDecimal sellPrice; 38 | @Assert(type = AssertEnum.NOT_NULL) 39 | @ApiModelProperty(value = "虚拟 1,0") 40 | private Integer virtual; 41 | @Assert(type = AssertEnum.NOT_NULL) 42 | @ApiModelProperty(value = "库存") 43 | private Integer stock; 44 | @ApiModelProperty(value = "预警库存") 45 | private Integer warnStock; 46 | 47 | } 48 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/modules/core/service/impl/ShopWithdrawServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.modules.core.service.impl; 2 | 3 | import com.d2c.shop.service.common.api.base.BaseService; 4 | import com.d2c.shop.service.modules.core.mapper.ShopWithdrawMapper; 5 | import com.d2c.shop.service.modules.core.model.ShopFlowDO; 6 | import com.d2c.shop.service.modules.core.model.ShopWithdrawDO; 7 | import com.d2c.shop.service.modules.core.service.ShopFlowService; 8 | import com.d2c.shop.service.modules.core.service.ShopWithdrawService; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.stereotype.Service; 11 | import org.springframework.transaction.annotation.Transactional; 12 | 13 | import java.math.BigDecimal; 14 | 15 | /** 16 | * @author BaiCai 17 | */ 18 | @Service 19 | public class ShopWithdrawServiceImpl extends BaseService implements ShopWithdrawService { 20 | 21 | @Autowired 22 | private ShopFlowService shopFlowService; 23 | 24 | @Override 25 | @Transactional 26 | public int doWithdraw(ShopWithdrawDO shopWithdraw) { 27 | this.save(shopWithdraw); 28 | ShopFlowDO sf = new ShopFlowDO(); 29 | sf.setStatus(1); 30 | sf.setType(ShopFlowDO.TypeEnum.WITHDRAW.name()); 31 | sf.setShopId(shopWithdraw.getShopId()); 32 | sf.setOrderSn(String.valueOf(shopWithdraw.getId())); 33 | sf.setPaymentType(shopWithdraw.getPayType()); 34 | sf.setPaymentSn(shopWithdraw.getPaySn()); 35 | sf.setAmount(shopWithdraw.getAmount().multiply(new BigDecimal(-1))); 36 | return shopFlowService.doFlowing(sf); 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /shop-service/src/main/java/com/d2c/shop/service/common/utils/RequestUtil.java: -------------------------------------------------------------------------------- 1 | package com.d2c.shop.service.common.utils; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | import java.net.InetAddress; 5 | import java.net.UnknownHostException; 6 | 7 | /** 8 | * @author Cai 9 | */ 10 | public class RequestUtil { 11 | 12 | // 获取请求IP 13 | public static String getRequestIp(HttpServletRequest request) { 14 | String ipAddress = request.getHeader("x-forwarded-for"); 15 | if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { 16 | ipAddress = request.getHeader("Proxy-Client-IP"); 17 | } 18 | if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { 19 | ipAddress = request.getHeader("WL-Proxy-Client-IP"); 20 | } 21 | if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { 22 | ipAddress = request.getRemoteAddr(); 23 | if (ipAddress.equals("127.0.0.1") || ipAddress.equals("0:0:0:0:0:0:0:1")) { 24 | InetAddress inet = null; 25 | try { 26 | inet = InetAddress.getLocalHost(); 27 | } catch (UnknownHostException e) { 28 | e.printStackTrace(); 29 | } 30 | ipAddress = inet.getHostAddress(); 31 | } 32 | } 33 | if (ipAddress != null && ipAddress.length() > 15) { 34 | if (ipAddress.indexOf(",") > 0) { 35 | ipAddress = ipAddress.substring(0, ipAddress.indexOf(",")); 36 | } 37 | } 38 | return ipAddress; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /shop-service/src/main/resources/application-service-dev.yml: -------------------------------------------------------------------------------- 1 | # spring 2 | spring: 3 | datasource: 4 | url: jdbc:mysql://192.168.0.146:3306/shop?useUnicode=true&characterEncoding=utf-8&useAffectedRows=true&useSSL=false&serverTimezone=Asia/Shanghai 5 | username: root 6 | password: ENC(vx9OWLu20TlanLx53aj/Qg==) 7 | type: com.alibaba.druid.pool.DruidDataSource 8 | driverClassName: com.mysql.jdbc.Driver 9 | 10 | redis: 11 | host: 192.168.0.146 12 | database: 0 13 | port: 6379 14 | timeout: 3000ms 15 | 16 | data: 17 | mongodb: 18 | uri: mongodb://192.168.0.146:27017/shop 19 | elasticsearch: 20 | cluster-name: d2cmall-es 21 | cluster-nodes: 192.168.0.146:9300 22 | 23 | rabbitmq: 24 | addresses: 192.168.0.146 25 | username: guest 26 | password: ENC(PRpwXXJMcX+sAqWS0oKFEQ==) 27 | 28 | jackson: 29 | date-format: yyyy-MM-dd HH:mm:ss 30 | time-zone: GMT+8 31 | serialization: 32 | write-dates-as-timestamps: false 33 | 34 | # mybatis-plus 35 | mybatis-plus: 36 | mapper-locations: classpath*:/mapper/**/*.xml 37 | typeAliasesPackage: com.d2c.shop.service.modules.*.model 38 | global-config: 39 | db-config: 40 | id-type: id_worker 41 | field-strategy: not_null 42 | logic-delete-value: 1 43 | logic-not-delete-value: 0 44 | sql-parser-cache: false 45 | configuration: 46 | auto-mapping-behavior: partial 47 | map-underscore-to-camel-case: true 48 | cache-enabled: false 49 | # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 50 | 51 | # shop-sdk 52 | shop: 53 | sms: 54 | dahantc: 55 | account: ENC(UX8bZOr3oWSvBczS+9SsRA==) 56 | password: ENC(4uCdGxmEQtkdF+Pgl+GVkIE1xpUn36f0) -------------------------------------------------------------------------------- /shop-service/src/main/resources/application-service-test.yml: -------------------------------------------------------------------------------- 1 | # spring 2 | spring: 3 | datasource: 4 | url: jdbc:mysql://192.168.0.146:3306/shop?useUnicode=true&characterEncoding=utf-8&useAffectedRows=true&useSSL=false&serverTimezone=Asia/Shanghai 5 | username: root 6 | password: ENC(vx9OWLu20TlanLx53aj/Qg==) 7 | type: com.alibaba.druid.pool.DruidDataSource 8 | driverClassName: com.mysql.jdbc.Driver 9 | 10 | redis: 11 | host: 192.168.0.146 12 | database: 0 13 | port: 6379 14 | timeout: 3000ms 15 | 16 | data: 17 | mongodb: 18 | uri: mongodb://192.168.0.146:27017/shop 19 | elasticsearch: 20 | cluster-name: d2cmall-es 21 | cluster-nodes: 192.168.0.146:9300 22 | 23 | rabbitmq: 24 | addresses: 192.168.0.146 25 | username: guest 26 | password: ENC(PRpwXXJMcX+sAqWS0oKFEQ==) 27 | 28 | jackson: 29 | date-format: yyyy-MM-dd HH:mm:ss 30 | time-zone: GMT+8 31 | serialization: 32 | write-dates-as-timestamps: false 33 | 34 | # mybatis-plus 35 | mybatis-plus: 36 | mapper-locations: classpath*:/mapper/**/*.xml 37 | typeAliasesPackage: com.d2c.shop.service.modules.*.model 38 | global-config: 39 | db-config: 40 | id-type: id_worker 41 | field-strategy: not_null 42 | logic-delete-value: 1 43 | logic-not-delete-value: 0 44 | sql-parser-cache: false 45 | configuration: 46 | auto-mapping-behavior: partial 47 | map-underscore-to-camel-case: true 48 | cache-enabled: false 49 | # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 50 | 51 | # shop-sdk 52 | shop: 53 | sms: 54 | dahantc: 55 | account: ENC(UX8bZOr3oWSvBczS+9SsRA==) 56 | password: ENC(4uCdGxmEQtkdF+Pgl+GVkIE1xpUn36f0) --------------------------------------------------------------------------------