diff --git a/.gitignore b/.gitignore index 9845fd9c..461f5cc5 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,9 @@ .idea/* *.iml */target/* -*/*.iml \ No newline at end of file +*/*.iml +fx.jpg +poster.jpg +simsunb.ttf +spy.log +Alibaba-PuHuiTi-Regular.otf \ No newline at end of file diff --git a/sql/yxshop.sql b/sql/yxshop.sql index 02620489..363fe63b 100644 --- a/sql/yxshop.sql +++ b/sql/yxshop.sql @@ -11,7 +11,7 @@ Target Server Version : 50723 File Encoding : 65001 - Date: 12/12/2019 17:30:42 + Date: 13/12/2019 19:13:01 */ SET NAMES utf8mb4; @@ -152,7 +152,7 @@ CREATE TABLE `gen_config` ( -- ---------------------------- -- Records of gen_config -- ---------------------------- -INSERT INTO `gen_config` VALUES (1, 'hupeng', b'0', 'yshop-shop', 'co.yixiang.modules.shop', 'E:\\java\\yxshop-private\\yshop-qd\\src\\views\\shop\\express', 'E:\\java\\yxshop-private\\yshop-qd\\src\\api', NULL); +INSERT INTO `gen_config` VALUES (1, 'hupeng', b'0', 'yshop-shop', 'co.yixiang.modules.wechat', 'E:\\java\\yxshop-private\\yshop-qd\\src\\views\\wechat\\user', 'E:\\java\\yxshop-private\\yshop-qd\\src\\api', NULL); -- ---------------------------- -- Table structure for job @@ -227,7 +227,7 @@ CREATE TABLE `log` ( `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 17533 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 17570 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of log @@ -3496,6 +3496,43 @@ INSERT INTO `log` VALUES (17529, '2019-12-12 17:29:54', '查询菜单', NULL, 'I INSERT INTO `log` VALUES (17530, '2019-12-12 17:30:05', '修改菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.update()', '{ resources: co.yixiang.modules.system.domain.Menu@70 }', '127.0.0.1', 55, 'admin', '内网IP'); INSERT INTO `log` VALUES (17531, '2019-12-12 17:30:05', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 18, 'admin', '内网IP'); INSERT INTO `log` VALUES (17532, '2019-12-12 17:30:08', '查询角色', NULL, 'INFO', 'co.yixiang.modules.system.rest.RoleController.getRoles()', '{ criteria: RoleQueryCriteria(blurry=null) pageable: Page request [number: 0, size 10, sort: level: ASC] }', '127.0.0.1', 4, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17533, '2019-12-12 17:39:03', '查询', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreCouponController.getYxStoreCoupons()', '{ criteria: YxStoreCouponQueryCriteria(isDel=0) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 127, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17534, '2019-12-12 17:39:27', '修改', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreCouponController.update()', '{ resources: YxStoreCoupon(id=3, title=999, integral=0, couponPrice=1, useMinPrice=1, couponTime=1, sort=1, status=0, addTime=1574131073, isDel=0) }', '127.0.0.1', 140, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17535, '2019-12-12 17:39:27', '查询', NULL, 'INFO', 'co.yixiang.modules.activity.rest.YxStoreCouponController.getYxStoreCoupons()', '{ criteria: YxStoreCouponQueryCriteria(isDel=0) pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 8, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17536, '2019-12-12 17:57:16', '查询YxExpress', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxExpressController.getYxExpresss()', '{ criteria: YxExpressQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 46, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17537, '2019-12-12 17:57:21', '修改YxExpress', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxExpressController.update()', '{ resources: YxExpress(id=429, code=YTO, name=圆通速递444, sort=0, isShow=0) }', '127.0.0.1', 110, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17538, '2019-12-12 17:57:22', '查询YxExpress', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxExpressController.getYxExpresss()', '{ criteria: YxExpressQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 5, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17539, '2019-12-12 17:57:26', '修改YxExpress', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxExpressController.update()', '{ resources: YxExpress(id=429, code=YTO, name=圆通速递, sort=0, isShow=0) }', '127.0.0.1', 52, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17540, '2019-12-12 17:57:27', '查询YxExpress', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxExpressController.getYxExpresss()', '{ criteria: YxExpressQueryCriteria() pageable: Page request [number: 0, size 10, sort: id: DESC] }', '127.0.0.1', 5, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17541, '2019-12-12 17:57:34', '查询YxUserBill', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserBillController.getYxUserBills()', '{ criteria: YxUserBillQueryCriteria(nickname=, category=, type=) pageable: Page request [number: 0, size 10, sort: UNSORTED] }', '127.0.0.1', 166, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17542, '2019-12-13 14:36:03', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=admin, password= ******} }', '127.0.0.1', 900, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17543, '2019-12-13 14:39:05', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 449, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17544, '2019-12-13 14:40:24', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 2, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17545, '2019-12-13 14:42:50', '新增菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.create()', '{ resources: co.yixiang.modules.system.domain.Menu@71 }', '127.0.0.1', 94, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17546, '2019-12-13 14:42:50', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 64, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17547, '2019-12-13 14:43:14', '查询角色', NULL, 'INFO', 'co.yixiang.modules.system.rest.RoleController.getRoles()', '{ criteria: RoleQueryCriteria(blurry=null) pageable: Page request [number: 0, size 10, sort: level: ASC] }', '127.0.0.1', 19, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17548, '2019-12-13 14:43:21', '修改角色菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.RoleController.updateMenu()', '{ resources: Role{id=1, name=\'null\', remark=\'null\', createDateTime=null} }', '127.0.0.1', 164, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17549, '2019-12-13 14:43:26', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 2, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17550, '2019-12-13 14:43:41', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 3, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17551, '2019-12-13 14:43:51', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 3, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17552, '2019-12-13 14:46:48', '查询YxSystemConfig', NULL, 'INFO', 'co.yixiang.modules.wechat.rest.YxSystemConfigController.getYxSystemConfigs()', '{ criteria: YxSystemConfigQueryCriteria() pageable: Page request [number: 0, size 50, sort: UNSORTED] }', '127.0.0.1', 76, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17553, '2019-12-13 14:53:34', '查询YxSystemConfig', NULL, 'INFO', 'co.yixiang.modules.wechat.rest.YxSystemConfigController.getYxSystemConfigs()', '{ criteria: YxSystemConfigQueryCriteria() pageable: Page request [number: 0, size 50, sort: UNSORTED] }', '127.0.0.1', 2, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17554, '2019-12-13 14:53:34', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 2, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17555, '2019-12-13 15:35:32', '查询YxSystemConfig', NULL, 'INFO', 'co.yixiang.modules.wechat.rest.YxSystemConfigController.getYxSystemConfigs()', '{ criteria: YxSystemConfigQueryCriteria() pageable: Page request [number: 0, size 50, sort: UNSORTED] }', '127.0.0.1', 37, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17556, '2019-12-13 15:35:47', '查询YxSystemConfig', NULL, 'INFO', 'co.yixiang.modules.wechat.rest.YxSystemConfigController.getYxSystemConfigs()', '{ criteria: YxSystemConfigQueryCriteria() pageable: Page request [number: 0, size 50, sort: UNSORTED] }', '127.0.0.1', 3, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17557, '2019-12-13 16:48:09', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 209, '', '内网IP'); +INSERT INTO `log` VALUES (17558, '2019-12-13 17:09:10', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=15136175246, password= ******} }', '127.0.0.1', 1057, '', '内网IP'); +INSERT INTO `log` VALUES (17559, '2019-12-13 17:29:15', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 91, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17560, '2019-12-13 17:30:26', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 5, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17561, '2019-12-13 17:30:43', '修改菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.update()', '{ resources: co.yixiang.modules.system.domain.Menu@71 }', '127.0.0.1', 143, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17562, '2019-12-13 17:30:43', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 88, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17563, '2019-12-13 17:30:47', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 2, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17564, '2019-12-13 17:31:29', '修改菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.update()', '{ resources: co.yixiang.modules.system.domain.Menu@71 }', '127.0.0.1', 64, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17565, '2019-12-13 17:31:30', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 13, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17566, '2019-12-13 17:31:34', '查询菜单', NULL, 'INFO', 'co.yixiang.modules.system.rest.MenuController.getMenus()', '{ criteria: MenuQueryCriteria(blurry=null) }', '127.0.0.1', 1, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17567, '2019-12-13 19:04:45', '用户登录', NULL, 'INFO', 'co.yixiang.modules.security.rest.AuthenticationController.login()', '{ authorizationUser: {username=admin, password= ******} }', '127.0.0.1', 759, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17568, '2019-12-13 19:04:53', '查询YxUserBill', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserBillController.getYxUserBills()', '{ criteria: YxUserBillQueryCriteria(nickname=, category=, type=) pageable: Page request [number: 0, size 10, sort: UNSORTED] }', '127.0.0.1', 36, 'admin', '内网IP'); +INSERT INTO `log` VALUES (17569, '2019-12-13 19:04:59', '查询YxUserBill', NULL, 'INFO', 'co.yixiang.modules.shop.rest.YxUserBillController.getYxUserBills()', '{ criteria: YxUserBillQueryCriteria(nickname=, category=, type=) pageable: Page request [number: 1, size 10, sort: UNSORTED] }', '127.0.0.1', 13, 'admin', '内网IP'); -- ---------------------------- -- Table structure for menu @@ -3516,7 +3553,7 @@ CREATE TABLE `menu` ( `component_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '-', PRIMARY KEY (`id`) USING BTREE, INDEX `FKqcf9gem97gqa5qjm4d3elcqt5`(`pid`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 82 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 83 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of menu @@ -3579,6 +3616,7 @@ INSERT INTO `menu` VALUES (78, '2019-12-04 17:26:19', b'0', '等级任务', 'sho INSERT INTO `menu` VALUES (79, '2019-12-05 14:12:16', b'0', '签到天数配置', 'shop/set/sign', 55, 57, 'sign2', 'signday', b'0', b'0', 'Signday'); INSERT INTO `menu` VALUES (80, '2019-12-11 17:28:38', b'0', '用户账单', 'shop/user/bill', 46, 24, 'list', 'bill', b'0', b'0', 'Bill'); INSERT INTO `menu` VALUES (81, '2019-12-12 16:36:00', b'0', '物流快递', 'shop/express/index', 53, 43, 'express', 'express', b'0', b'0', 'Express'); +INSERT INTO `menu` VALUES (82, '2019-12-13 14:42:50', b'0', '微信模板消息', 'wechat/template/index', 48, 35, 'anq', 'template', b'0', b'0', 'Template'); -- ---------------------------- -- Table structure for permission @@ -3909,6 +3947,7 @@ INSERT INTO `roles_menus` VALUES (78, 1); INSERT INTO `roles_menus` VALUES (79, 1); INSERT INTO `roles_menus` VALUES (80, 1); INSERT INTO `roles_menus` VALUES (81, 1); +INSERT INTO `roles_menus` VALUES (82, 1); INSERT INTO `roles_menus` VALUES (1, 2); INSERT INTO `roles_menus` VALUES (2, 2); INSERT INTO `roles_menus` VALUES (3, 2); @@ -4060,7 +4099,7 @@ CREATE TABLE `visits` ( `week_day` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `UK_11aksgq87euk9bcyeesfs4vtp`(`date`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 162 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 163 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of visits @@ -4131,6 +4170,7 @@ INSERT INTO `visits` VALUES (158, '2019-12-09 09:37:28', '2019-12-09', 1, 3, 'Mo INSERT INTO `visits` VALUES (159, '2019-12-10 19:39:46', '2019-12-10', 1, 1, 'Tue'); INSERT INTO `visits` VALUES (160, '2019-12-11 11:11:35', '2019-12-11', 1, 52, 'Wed'); INSERT INTO `visits` VALUES (161, '2019-12-12 13:33:10', '2019-12-12', 1, 2, 'Thu'); +INSERT INTO `visits` VALUES (162, '2019-12-13 14:17:04', '2019-12-13', 1, 6, 'Fri'); -- ---------------------------- -- Table structure for yx_article @@ -4406,7 +4446,7 @@ CREATE TABLE `yx_store_cart` ( INDEX `uid_2`(`uid`, `is_del`) USING BTREE, INDEX `uid_3`(`uid`, `is_new`) USING BTREE, INDEX `type`(`type`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 96 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '购物车表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 97 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '购物车表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of yx_store_cart @@ -4486,6 +4526,7 @@ INSERT INTO `yx_store_cart` VALUES (92, 12, 'product', 20, 'ba5d202555c44d378e66 INSERT INTO `yx_store_cart` VALUES (93, 12, 'product', 19, '', 1, 1575552290, 0, 0, 1, 2, 0, 0); INSERT INTO `yx_store_cart` VALUES (94, 12, 'product', 19, '', 1, 1575552309, 0, 0, 1, 1, 0, 0); INSERT INTO `yx_store_cart` VALUES (95, 12, 'product', 19, '00e86525a7af4dcf9e653ae0a2062369', 1, 1575771477, 1, 0, 1, 0, 0, 0); +INSERT INTO `yx_store_cart` VALUES (96, 12, 'product', 19, '00e86525a7af4dcf9e653ae0a2062369', 1, 1576234305, 1, 0, 1, 0, 0, 0); -- ---------------------------- -- Table structure for yx_store_category @@ -4624,7 +4665,7 @@ CREATE TABLE `yx_store_coupon` ( -- ---------------------------- INSERT INTO `yx_store_coupon` VALUES (1, '双十一', 0, 1.00, 100.00, 10, 0, 1, 1573281957, 0); INSERT INTO `yx_store_coupon` VALUES (2, '44444446', 0, 1.00, 1.00, 1, 0, 1, 1574130748, 0); -INSERT INTO `yx_store_coupon` VALUES (3, '999', 0, 0.00, 0.00, 0, 1, 0, 1574131073, 0); +INSERT INTO `yx_store_coupon` VALUES (3, '999', 0, 1.00, 1.00, 1, 1, 0, 1574131073, 0); -- ---------------------------- -- Table structure for yx_store_coupon_issue @@ -4781,7 +4822,7 @@ CREATE TABLE `yx_store_order` ( INDEX `status`(`status`) USING BTREE, INDEX `is_del`(`is_del`) USING BTREE, INDEX `coupon_id`(`coupon_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 101 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of yx_store_order @@ -4802,7 +4843,7 @@ INSERT INTO `yx_store_order` VALUES (36, '20191110183227714', 12, 'hu', '1513617 INSERT INTO `yx_store_order` VALUES (37, '20191113104022550', 14, 'zhang', '15136175247', '上海 静安区 城区 999', '37', 0.00, 1, 120.00, 0.00, 120.00, 0.00, 0.00, 0, 0.00, 1, 1573612822, 'yue', 1573612822, 2, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', '顺丰快递', 'express', '1111111', 1.00, 0.00, NULL, '', 0, 'db7d9878c8d2458587fb0441eba3bb55', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); INSERT INTO `yx_store_order` VALUES (38, '20191116145425159', 12, 'hu', '15136175246', '上海 闸北区 城区 99999', '35', 0.00, 1, 120.00, 0.00, 119.00, 0.00, 0.00, 1, 1.00, 0, NULL, 'weixin', 1573887265, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, NULL, NULL, 1.00, 0.00, NULL, '', 1, '5cc35fef31864f4ebe158e43f8e02699', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); INSERT INTO `yx_store_order` VALUES (39, '20191116151201683', 14, 'zhang', '15136175247', '上海 静安区 城区 999', '42', 0.00, 1, 120.00, 0.00, 119.00, 0.00, 1.00, 0, 0.00, 0, NULL, 'weixin', 1573888321, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, NULL, NULL, 1.00, 1.00, 1.00, '', 1, '84892a2626a341939dd05cd7f2adff9e', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); -INSERT INTO `yx_store_order` VALUES (42, '20191117163245197', 14, 'zhang', '15136175247', '上海 静安区 城区 999', '43', 0.00, 1, 120.00, 0.00, 120.00, 0.00, 0.00, 0, 0.00, 1, 1573979565, 'yue', 1573979565, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, NULL, NULL, 1.00, 0.00, NULL, '', 0, '89607a8b9e4d41a5ac2e380be796b24c', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); +INSERT INTO `yx_store_order` VALUES (42, '20191117163245197', 14, 'zhang', '15136175247', '上海 静安区 城区 999', '43', 0.00, 1, 120.00, 0.00, 120.00, 0.00, 0.00, 0, 0.00, 1, 1573979565, 'yue', 1573979565, 1, 0, NULL, NULL, NULL, NULL, NULL, 0.00, 'SF', '顺丰速运', 'express', '999999', 1.00, 0.00, NULL, '', 0, '89607a8b9e4d41a5ac2e380be796b24c', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); INSERT INTO `yx_store_order` VALUES (43, '20191117163347781', 14, 'zhang', '15136175247', '上海 静安区 城区 999', '44', 0.00, 1, 120.00, 0.00, 120.00, 0.00, 0.00, 0, 0.00, 0, NULL, 'weixin', 1573979627, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, NULL, NULL, 1.00, 0.00, NULL, '', 1, '0b25abb12d5c415b91255017598718cc', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); INSERT INTO `yx_store_order` VALUES (44, '20191117164050025', 14, 'zhang', '15136175247', '上海 静安区 城区 999', '45', 0.00, 1, 120.00, 0.00, 120.00, 0.00, 0.00, 0, 0.00, 0, NULL, 'weixin', 1573980050, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, NULL, NULL, 1.00, 0.00, NULL, '', 1, '997f4b8c66814853a43feb054897d1a7', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); INSERT INTO `yx_store_order` VALUES (45, '20191117165632858', 14, 'zhang', '15136175247', '上海 静安区 城区 999', '46', 0.00, 1, 120.00, 0.00, 120.00, 0.00, 0.00, 0, 0.00, 0, NULL, 'weixin', 1573980992, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, NULL, NULL, 1.00, 0.00, NULL, '', 1, 'cc2d97b4c6614c238f1b61c42e77190e', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); @@ -4849,6 +4890,7 @@ INSERT INTO `yx_store_order` VALUES (96, '20191122202407197', 12, 'hu', '1513617 INSERT INTO `yx_store_order` VALUES (97, '20191130142549154', 12, 'hu', '15136175246', '上海 闸北区 城区 99999', '89', 0.00, 1, 120.00, 0.00, 120.00, 0.00, 0.00, 0, 0.00, 0, NULL, 'weixin', 1575095149, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, NULL, NULL, 1.00, 0.00, NULL, '', 1, 'e12352b189954c35bac63da6698ff8a3', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); INSERT INTO `yx_store_order` VALUES (98, '20191130142917149', 12, 'hu', '15136175246', '上海 闸北区 城区 99999', '90', 0.00, 1, 120.00, 0.00, 120.00, 0.00, 0.00, 0, 0.00, 0, NULL, 'weixin', 1575095357, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, NULL, NULL, 1.00, 0.00, NULL, '', 1, '42fa607a1bf243e8b797767c81be8950', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); INSERT INTO `yx_store_order` VALUES (99, '20191208101834125', 12, 'hu', '15136175246', '上海 闸北区 城区 99999', '95', 0.00, 1, 118.80, 0.00, 118.80, 0.00, 0.00, 0, 0.00, 1, 1575771514, 'yue', 1575771514, 1, 0, NULL, NULL, NULL, NULL, NULL, 0.00, 'STO', '申通快递', 'express', '773002763618907', 1.00, 0.00, NULL, '', 0, 'ffe728984deb4fde9efc3ff9ce900bfb', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); +INSERT INTO `yx_store_order` VALUES (100, '20191213185147846', 12, 'hu', '15136175246', '上海 闸北区 城区 99999', '96', 0.00, 1, 118.80, 0.00, 118.80, 0.00, 0.00, 0, 0.00, 1, 1576234308, 'yue', 1576234307, 0, 0, NULL, NULL, NULL, NULL, NULL, 0.00, '', NULL, NULL, NULL, 1.00, 0.00, NULL, '', 0, '6f7c8d3152d9432b96b0144f56cfa97f', NULL, 0, 0, 0, 0, 100.00, 0, 0, '', 0, 1, 1, 0, 0); -- ---------------------------- -- Table structure for yx_store_order_cart_info @@ -4865,7 +4907,7 @@ CREATE TABLE `yx_store_order_cart_info` ( UNIQUE INDEX `oid`(`oid`, `unique`) USING BTREE, INDEX `cart_id`(`cart_id`) USING BTREE, INDEX `product_id`(`product_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 96 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单购物详情表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 97 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单购物详情表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of yx_store_order_cart_info @@ -4935,6 +4977,7 @@ INSERT INTO `yx_store_order_cart_info` VALUES (92, 96, 88, 19, '{\"addTime\":157 INSERT INTO `yx_store_order_cart_info` VALUES (93, 97, 89, 19, '{\"addTime\":1575095144,\"productId\":19,\"seckillId\":0,\"vipTruePrice\":120.0,\"combinationId\":0,\"costPrice\":100.0,\"trueStock\":993,\"truePrice\":120.0,\"type\":\"product\",\"cartNum\":1,\"productInfo\":{\"otPrice\":0.50,\"userCollect\":false,\"description\":\"

文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

量大请联系店主,一定让您满意而归

   实体店面经营 保质保量

A4黑白2毛/张,量大1毛/张,

A3黑白双面5毛/张,量大3毛/张,

更大量请联系店主报价,

每消费1元可积1分,1分抵现金1毛,

付款时直接抵扣

(如此优惠的基础上还可积分,积分抵现金)



    

\",\"merUse\":0,\"isPostage\":1,\"image_base\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"isBest\":1,\"sales\":18,\"price\":120.00,\"isBargain\":0,\"userLike\":false,\"vipPrice\":0.20,\"storeName\":\"70gA4黑白打印复印\",\"id\":19,\"keyword\":\"打印复印\",\"stock\":99,\"image\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"cost\":0.20,\"isGood\":1,\"unitName\":\"张\",\"isBenefit\":1,\"giveIntegral\":1.00,\"isNew\":1,\"sort\":1,\"sliderImageArr\":[\"https://image.dayouqiantu.cn/5ca01c7fc9238.jpg\",\"https://image.dayouqiantu.cn/5ca01c7676042.jpg\"],\"sliderImage\":\"https://image.dayouqiantu.cn/5ca01c7fc9238.jpg,https://image.dayouqiantu.cn/5ca01c7676042.jpg\",\"barCode\":\"\",\"isShow\":1,\"postage\":0.00,\"codePath\":\"\",\"soureLink\":\"\",\"cateId\":\"24\",\"isSeckill\":0,\"storeInfo\":\"打印复印资料A4黑白彩色印刷画册书本装订图文数码快印服务\",\"isDel\":0,\"isHot\":1,\"attrInfo\":{\"image\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"cost\":100.00,\"productId\":19,\"price\":120.00,\"unique\":\"00e86525a7af4dcf9e653ae0a2062369\",\"suk\":\"A1,白色\",\"id\":22,\"stock\":993}},\"uid\":12,\"productAttrUnique\":\"00e86525a7af4dcf9e653ae0a2062369\",\"bargainId\":0,\"id\":89}', '247853fbd42241269dc6812edc71fba1'); INSERT INTO `yx_store_order_cart_info` VALUES (94, 98, 90, 19, '{\"addTime\":1575095354,\"productId\":19,\"seckillId\":0,\"vipTruePrice\":120.0,\"combinationId\":0,\"costPrice\":100.0,\"trueStock\":993,\"truePrice\":120.0,\"type\":\"product\",\"cartNum\":1,\"productInfo\":{\"otPrice\":0.50,\"userCollect\":false,\"description\":\"

文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

量大请联系店主,一定让您满意而归

   实体店面经营 保质保量

A4黑白2毛/张,量大1毛/张,

A3黑白双面5毛/张,量大3毛/张,

更大量请联系店主报价,

每消费1元可积1分,1分抵现金1毛,

付款时直接抵扣

(如此优惠的基础上还可积分,积分抵现金)



    

\",\"merUse\":0,\"isPostage\":1,\"image_base\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"isBest\":1,\"sales\":17,\"price\":120.00,\"isBargain\":0,\"userLike\":false,\"vipPrice\":0.20,\"storeName\":\"70gA4黑白打印复印\",\"id\":19,\"keyword\":\"打印复印\",\"stock\":99,\"image\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"cost\":0.20,\"isGood\":1,\"unitName\":\"张\",\"isBenefit\":1,\"giveIntegral\":1.00,\"isNew\":1,\"sort\":1,\"sliderImageArr\":[\"https://image.dayouqiantu.cn/5ca01c7fc9238.jpg\",\"https://image.dayouqiantu.cn/5ca01c7676042.jpg\"],\"sliderImage\":\"https://image.dayouqiantu.cn/5ca01c7fc9238.jpg,https://image.dayouqiantu.cn/5ca01c7676042.jpg\",\"barCode\":\"\",\"isShow\":1,\"postage\":0.00,\"codePath\":\"\",\"soureLink\":\"\",\"cateId\":\"24\",\"isSeckill\":0,\"storeInfo\":\"打印复印资料A4黑白彩色印刷画册书本装订图文数码快印服务\",\"isDel\":0,\"isHot\":1,\"attrInfo\":{\"image\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"cost\":100.00,\"productId\":19,\"price\":120.00,\"unique\":\"00e86525a7af4dcf9e653ae0a2062369\",\"suk\":\"A1,白色\",\"id\":22,\"stock\":993}},\"uid\":12,\"productAttrUnique\":\"00e86525a7af4dcf9e653ae0a2062369\",\"bargainId\":0,\"id\":90}', 'e76d7e013f46469492b62998752ad052'); INSERT INTO `yx_store_order_cart_info` VALUES (95, 99, 95, 19, '{\"addTime\":1575771477,\"productId\":19,\"seckillId\":0,\"vipTruePrice\":120.0,\"combinationId\":0,\"costPrice\":100.0,\"trueStock\":993,\"truePrice\":118.8,\"type\":\"product\",\"cartNum\":1,\"productInfo\":{\"otPrice\":0.50,\"userCollect\":false,\"description\":\"

文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

量大请联系店主,一定让您满意而归

   实体店面经营 保质保量

A4黑白2毛/张,量大1毛/张,

A3黑白双面5毛/张,量大3毛/张,

更大量请联系店主报价,

每消费1元可积1分,1分抵现金1毛,

付款时直接抵扣

(如此优惠的基础上还可积分,积分抵现金)



    

\",\"merUse\":0,\"isPostage\":1,\"image_base\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"isBest\":1,\"sales\":17,\"price\":120.00,\"isBargain\":0,\"userLike\":false,\"vipPrice\":0.20,\"storeName\":\"70gA4黑白打印复印\",\"id\":19,\"keyword\":\"打印复印\",\"stock\":99,\"image\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"cost\":0.20,\"isGood\":1,\"unitName\":\"张\",\"isBenefit\":1,\"giveIntegral\":1.00,\"isNew\":1,\"sort\":1,\"sliderImageArr\":[\"https://image.dayouqiantu.cn/5ca01c7fc9238.jpg\",\"https://image.dayouqiantu.cn/5ca01c7676042.jpg\"],\"sliderImage\":\"https://image.dayouqiantu.cn/5ca01c7fc9238.jpg,https://image.dayouqiantu.cn/5ca01c7676042.jpg\",\"barCode\":\"\",\"isShow\":1,\"postage\":0.00,\"codePath\":\"\",\"soureLink\":\"\",\"cateId\":\"24\",\"isSeckill\":0,\"storeInfo\":\"打印复印资料A4黑白彩色印刷画册书本装订图文数码快印服务\",\"isDel\":0,\"isHot\":1,\"attrInfo\":{\"image\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"cost\":100.00,\"productId\":19,\"price\":120.00,\"unique\":\"00e86525a7af4dcf9e653ae0a2062369\",\"suk\":\"A1,白色\",\"id\":22,\"stock\":993}},\"uid\":12,\"productAttrUnique\":\"00e86525a7af4dcf9e653ae0a2062369\",\"bargainId\":0,\"id\":95}', '16e9212266b949cdac21e7e45881a84f'); +INSERT INTO `yx_store_order_cart_info` VALUES (96, 100, 96, 19, '{\"addTime\":1576234305,\"productId\":19,\"seckillId\":0,\"vipTruePrice\":120.0,\"combinationId\":0,\"costPrice\":100.0,\"trueStock\":992,\"truePrice\":118.8,\"type\":\"product\",\"cartNum\":1,\"productInfo\":{\"otPrice\":0.50,\"userCollect\":false,\"description\":\"

文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

量大请联系店主,一定让您满意而归

   实体店面经营 保质保量

A4黑白2毛/张,量大1毛/张,

A3黑白双面5毛/张,量大3毛/张,

更大量请联系店主报价,

每消费1元可积1分,1分抵现金1毛,

付款时直接抵扣

(如此优惠的基础上还可积分,积分抵现金)



    

\",\"merUse\":0,\"isPostage\":1,\"image_base\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"isBest\":1,\"sales\":18,\"price\":120.00,\"isBargain\":0,\"userLike\":false,\"vipPrice\":0.20,\"storeName\":\"70gA4黑白打印复印\",\"id\":19,\"keyword\":\"打印复印\",\"stock\":99,\"image\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"cost\":0.20,\"isGood\":1,\"unitName\":\"张\",\"isBenefit\":1,\"giveIntegral\":1.00,\"isNew\":1,\"sort\":1,\"sliderImageArr\":[\"https://image.dayouqiantu.cn/5ca01c7fc9238.jpg\",\"https://image.dayouqiantu.cn/5ca01c7676042.jpg\"],\"sliderImage\":\"https://image.dayouqiantu.cn/5ca01c7fc9238.jpg,https://image.dayouqiantu.cn/5ca01c7676042.jpg\",\"barCode\":\"\",\"isShow\":1,\"postage\":0.00,\"codePath\":\"\",\"soureLink\":\"\",\"cateId\":\"24\",\"isSeckill\":0,\"storeInfo\":\"打印复印资料A4黑白彩色印刷画册书本装订图文数码快印服务\",\"isDel\":0,\"isHot\":1,\"attrInfo\":{\"image\":\"https://image.dayouqiantu.cn/5ca011a1cd487.jpg\",\"cost\":100.00,\"productId\":19,\"price\":120.00,\"unique\":\"00e86525a7af4dcf9e653ae0a2062369\",\"suk\":\"A1,白色\",\"id\":22,\"stock\":992}},\"uid\":12,\"productAttrUnique\":\"00e86525a7af4dcf9e653ae0a2062369\",\"bargainId\":0,\"id\":96}', 'd186a2b7f7f146389c33223f3ce180cf'); -- ---------------------------- -- Table structure for yx_store_order_status @@ -4949,7 +4992,7 @@ CREATE TABLE `yx_store_order_status` ( PRIMARY KEY (`id`) USING BTREE, INDEX `oid`(`oid`) USING BTREE, INDEX `change_type`(`change_type`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 144 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单操作记录表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 147 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单操作记录表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of yx_store_order_status @@ -5058,6 +5101,9 @@ INSERT INTO `yx_store_order_status` VALUES (140, 92, 'delivery_goods', '已发 INSERT INTO `yx_store_order_status` VALUES (141, 36, 'delivery_goods', '已发货 快递公司:申通快递 快递单号:null', 1576142259); INSERT INTO `yx_store_order_status` VALUES (142, 67, 'delivery_goods', '已发货 快递公司:顺丰速运 快递单号:444444', 1576142488); INSERT INTO `yx_store_order_status` VALUES (143, 61, 'delivery_goods', '已发货 快递公司:顺丰速运 快递单号:99999', 1576142551); +INSERT INTO `yx_store_order_status` VALUES (144, 42, 'delivery_goods', '已发货 快递公司:顺丰速运快递单号:999999', 1576229079); +INSERT INTO `yx_store_order_status` VALUES (145, 100, 'cache_key_create_order', '订单生成', 1576234308); +INSERT INTO `yx_store_order_status` VALUES (146, 100, 'pay_success', '用户付款成功', 1576234308); -- ---------------------------- -- Table structure for yx_store_pink @@ -5149,7 +5195,7 @@ CREATE TABLE `yx_store_product` ( -- ---------------------------- -- Records of yx_store_product -- ---------------------------- -INSERT INTO `yx_store_product` VALUES (19, NULL, 'https://image.dayouqiantu.cn/5ca011a1cd487.jpg', 'https://image.dayouqiantu.cn/5ca01c7fc9238.jpg,https://image.dayouqiantu.cn/5ca01c7676042.jpg', '70gA4黑白打印复印', '打印复印资料A4黑白彩色印刷画册书本装订图文数码快印服务', '打印复印', '', '24', 120.00, 0.20, 0.50, 0.00, '张', 1, 18, 99, 1, 1, 1, 1, 1, '

文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

量大请联系店主,一定让您满意而归

   实体店面经营 保质保量

A4黑白2毛/张,量大1毛/张,

A3黑白双面5毛/张,量大3毛/张,

更大量请联系店主报价,

每消费1元可积1分,1分抵现金1毛,

付款时直接抵扣

(如此优惠的基础上还可积分,积分抵现金)



    

', NULL, 1, 0, 0, 1.00, 0.20, 0, 0, 1, NULL, NULL, '', ''); +INSERT INTO `yx_store_product` VALUES (19, NULL, 'https://image.dayouqiantu.cn/5ca011a1cd487.jpg', 'https://image.dayouqiantu.cn/5ca01c7fc9238.jpg,https://image.dayouqiantu.cn/5ca01c7676042.jpg', '70gA4黑白打印复印', '打印复印资料A4黑白彩色印刷画册书本装订图文数码快印服务', '打印复印', '', '24', 120.00, 0.20, 0.50, 0.00, '张', 1, 19, 99, 1, 1, 1, 1, 1, '

文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

量大请联系店主,一定让您满意而归

   实体店面经营 保质保量

A4黑白2毛/张,量大1毛/张,

A3黑白双面5毛/张,量大3毛/张,

更大量请联系店主报价,

每消费1元可积1分,1分抵现金1毛,

付款时直接抵扣

(如此优惠的基础上还可积分,积分抵现金)



    

', NULL, 1, 0, 0, 1.00, 0.20, 0, 0, 1, NULL, NULL, '', ''); INSERT INTO `yx_store_product` VALUES (20, 0, 'https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg', 'https://image.dayouqiantu.cn/5ca05103ad634.jpg,https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg', '70gA4彩色打印复印', '70gA4彩色打印复印', '彩色打印复印', '', '24', 0.50, 0.50, 1.00, 0.00, '张', 0, 1, 100, 1, 1, 1, 1, 1, '

7文件请传QQ2412733099,

718504558或2412733099@qq.com邮箱,

手机/微信:13733990583

量大请联系店主,一定让您满意而归

   实体店面经营 保质保量

A4黑白2毛/张,量大1毛/张,

A3黑白双面5毛/张,量大3毛/张,

更大量请联系店主报价,

每消费1元可积1分,1分抵现金1毛,

付款时直接抵扣

(如此优惠的基础上还可积分,积分抵现金)



', 1573108370, 1, 0, 0, 0.00, 0.50, 0, 0, 1, 0, 0, '', ''); -- ---------------------------- @@ -5218,7 +5264,7 @@ INSERT INTO `yx_store_product_attr_value` VALUES (10, 20, 'A3,白色', 999, NULL INSERT INTO `yx_store_product_attr_value` VALUES (11, 20, 'A3,红色', 998, NULL, 0.50, 'https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg', '75d1d355cdb44970beb3524911c7bae7', 0.50); INSERT INTO `yx_store_product_attr_value` VALUES (12, 20, 'A4,白色', 999, NULL, 0.20, 'https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg', '8e9aed0696654a6bafc2f68a7b4d9960', 0.50); INSERT INTO `yx_store_product_attr_value` VALUES (13, 20, 'A4,红色', 999, NULL, 0.20, 'https://image.dayouqiantu.cn/5ca04fa9c08ef.jpg', 'de81216b2dc743d0b2b626a514e2f78c', 0.50); -INSERT INTO `yx_store_product_attr_value` VALUES (22, 19, 'A1,白色', 992, NULL, 120.00, 'https://image.dayouqiantu.cn/5ca011a1cd487.jpg', '00e86525a7af4dcf9e653ae0a2062369', 100.00); +INSERT INTO `yx_store_product_attr_value` VALUES (22, 19, 'A1,白色', 991, NULL, 120.00, 'https://image.dayouqiantu.cn/5ca011a1cd487.jpg', '00e86525a7af4dcf9e653ae0a2062369', 100.00); INSERT INTO `yx_store_product_attr_value` VALUES (23, 19, 'A1,蓝色', 9999, NULL, 119.00, 'https://image.dayouqiantu.cn/5ca011a1cd487.jpg', '26b0cd2c869e445f850212f62ee2de26', 100.00); INSERT INTO `yx_store_product_attr_value` VALUES (24, 19, 'A4,白色', 999, NULL, 150.00, 'https://image.dayouqiantu.cn/5ca011a1cd487.jpg', '6c2deabbdebd4f57a7c7b4c9e1c08bce', 100.00); INSERT INTO `yx_store_product_attr_value` VALUES (25, 19, 'A4,蓝色', 9998, NULL, 170.00, 'https://image.dayouqiantu.cn/5ca011a1cd487.jpg', 'd8c72945fdbe4035a95a393aff1eea46', 100.00); @@ -5738,7 +5784,7 @@ CREATE TABLE `yx_user` ( -- Records of yx_user -- ---------------------------- INSERT INTO `yx_user` VALUES (11, 'hupeng', 'hupeng', 'e10adc3949ba59abbe56e057f20f883e', 'e10adc3949ba59abbe56e057f20f883e', '', 0, '', '', 0, 0, '会敲代码的喵', 'http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83er0oNIia5bws9DCW1VM9qNbObKU9icwtvMpp7zE534e4Y9gwqR5Izvllladvop0ibpJJg2n6ticNSB9gA/132', '', 1573120584, '', 1573120584, '', 9999.00, 12.70, 0.00, 0, 1, 0, 0, 1573613651, 'wechat', 0, 2, 1, 0, '', 0, ''); -INSERT INTO `yx_user` VALUES (12, '15136175246', '151361752469', 'e10adc3949ba59abbe56e057f20f883e', 'e10adc3949ba59abbe56e057f20f883e', '', 0, '', '', 0, 0, '会敲代码的喵2', 'https://image.dayouqiantu.cn/5dc2c7f3a104c.png', '15136175246', 1573120881, '', 1573120881, '', 9479.80, 28.00, 40.00, 2, 1, 1, 11, 1573527758, 'h5', 0, 10, 1, 0, '', 0, ''); +INSERT INTO `yx_user` VALUES (12, '15136175246', '151361752469', 'e10adc3949ba59abbe56e057f20f883e', 'e10adc3949ba59abbe56e057f20f883e', '', 0, '', '', 0, 0, '会敲代码的喵2', 'https://image.dayouqiantu.cn/5dc2c7f3a104c.png', '15136175246', 1573120881, '', 1573120881, '', 9361.00, 28.00, 40.00, 2, 1, 1, 11, 1573527758, 'h5', 0, 11, 1, 0, '', 0, ''); INSERT INTO `yx_user` VALUES (14, '15136175247', '15136175247', 'e10adc3949ba59abbe56e057f20f883e', 'e10adc3949ba59abbe56e057f20f883e', '', 0, '', '', 0, 0, '15136175247', 'https://image.dayouqiantu.cn/5dc2c7f3a104c.png', '15136175247', 1573612696, '', 1573612696, '', 9400.00, 0.00, 2.00, 0, 1, 0, 12, 1573612702, 'h5', 0, 5, 0, 0, '', 0, ''); -- ---------------------------- @@ -5797,7 +5843,7 @@ CREATE TABLE `yx_user_bill` ( INDEX `add_time`(`add_time`) USING BTREE, INDEX `pm`(`pm`) USING BTREE, INDEX `type`(`category`, `type`, `link_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 50 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户账单表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 51 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户账单表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of yx_user_bill @@ -5846,6 +5892,7 @@ INSERT INTO `yx_user_bill` VALUES (46, 12, '0', 1, '签到奖励', 'integral', ' INSERT INTO `yx_user_bill` VALUES (47, 12, '99', 0, '购买商品', 'now_money', 'pay_product', 118.80, 9598.60, '余额支付', 1575771514, 1); INSERT INTO `yx_user_bill` VALUES (48, 12, '0', 1, '签到奖励', 'integral', 'sign', 20.00, 20.00, '', 1575771932, 1); INSERT INTO `yx_user_bill` VALUES (49, 11, '96', 1, '获得推广佣金', 'now_money', 'brokerage', 0.70, 12.70, '会敲代码的喵2成功消费1.00元,奖励推广佣金0.7', 1575868078, 1); +INSERT INTO `yx_user_bill` VALUES (50, 12, '100', 0, '购买商品', 'now_money', 'pay_product', 118.80, 9479.80, '余额支付', 1576234308, 1); -- ---------------------------- -- Table structure for yx_user_enter @@ -6157,18 +6204,7 @@ CREATE TABLE `yx_wechat_template` ( -- Records of yx_wechat_template -- ---------------------------- INSERT INTO `yx_wechat_template` VALUES (3, 'OPENTM200565259', '订单发货提醒', '{{first.DATA}}\n订单编号:{{keyword1.DATA}}\n物流公司:{{keyword2.DATA}}\n物流单号:{{keyword3.DATA}}\n{{remark.DATA}}', 'KusKZOFc_4CrRU_gzuXMdMMTfFeR-OLVVuDiMyR5PiM', '1515052638', 1); -INSERT INTO `yx_wechat_template` VALUES (4, 'OPENTM413386489', '订单收货通知', '{{first.DATA}}\n订单编号:{{keyword1.DATA}}\n订单状态:{{keyword2.DATA}}\n收货时间:{{keyword3.DATA}}\n商品详情:{{keyword4.DATA}}\n{{remark.DATA}}', 'UNyz81kgsn1WZHSqmwPiF9fUkcdZghfTZvN6qtDuu54', '1515052765', 1); -INSERT INTO `yx_wechat_template` VALUES (5, 'OPENTM410119152', '退款进度通知', '{{first.DATA}}\n订单编号:{{keyword1.DATA}}\n订单金额:{{keyword2.DATA}}\n下单时间:{{keyword3.DATA}}\n{{remark.DATA}}', 'xrXtApBFv0L3-YXKkl9WYB89hJxFGfQo3jSsk2WpAwI', '1515053049', 1); -INSERT INTO `yx_wechat_template` VALUES (6, 'OPENTM405847076', '帐户资金变动提醒', '{{first.DATA}}\n变动类型:{{keyword1.DATA}}\n变动时间:{{keyword2.DATA}}\n变动金额:{{keyword3.DATA}}\n{{remark.DATA}}', 'Bk3XLd1Nwk9aNF1NIPBlyTDhrgNbzJW4H23OwVQdE-s', '1515053127', 1); -INSERT INTO `yx_wechat_template` VALUES (7, 'OPENTM207707249', '订单发货提醒', '\n{{first.DATA}}\n商品明细:{{keyword1.DATA}}\n下单时间:{{keyword2.DATA}}\n配送地址:{{keyword3.DATA}}\n配送人:{{keyword4.DATA}}\n联系电话:{{keyword5.DATA}}\n{{remark.DATA}}', 'KusKZOFc_4CrRU_gzuXMdMMTfFeR-OLVVuDiMyR5PiM', '1515053313', 1); -INSERT INTO `yx_wechat_template` VALUES (8, 'OPENTM408237350', '服务进度提醒', '{{first.DATA}}\n服务类型:{{keyword1.DATA}}\n服务状态:{{keyword2.DATA}}\n服务时间:{{keyword3.DATA}}\n{{remark.DATA}}', 'ul2g_y0oxqEhtWoSJBbLzmnPrUwtLnIAe30MTBRL7rw', '1515483915', 1); -INSERT INTO `yx_wechat_template` VALUES (9, 'OPENTM204431262', '客服通知提醒', '{{first.DATA}}\n客户名称:{{keyword1.DATA}}\n客服类型:{{keyword2.DATA}}\n提醒内容:{{keyword3.DATA}}\n通知时间:{{keyword4.DATA}}\n{{remark.DATA}}', 'j51mawxEmTuCCtMrXwSTnRfXH93qutoOebs5RG4MyHY', '1515484354', 1); -INSERT INTO `yx_wechat_template` VALUES (10, 'OPENTM407456411', '拼团成功通知', '{{first.DATA}}\n订单编号:{{keyword1.DATA}}\n团购商品:{{keyword2.DATA}}\n{{remark.DATA}}', 'CNvCAz9GIoQri-ogSCODVRANCBUQjZIxWzWvizbHVoQ', '1520063823', 1); -INSERT INTO `yx_wechat_template` VALUES (11, 'OPENTM401113750', '拼团失败通知', '{{first.DATA}}\n拼团商品:{{keyword1.DATA}}\n商品金额:{{keyword2.DATA}}\n退款金额:{{keyword3.DATA}}\n{{remark.DATA}}', 'mSg4ZexW1qaQH3FCrFLe746EYMlTFsZhfTB6VI_ElYg', '1520064059', 1); -INSERT INTO `yx_wechat_template` VALUES (12, 'OPENTM205213550', '订单生成通知', '{{first.DATA}}\n时间:{{keyword1.DATA}}\n商品名称:{{keyword2.DATA}}\n订单号:{{keyword3.DATA}}\n{{remark.DATA}}', 'HYD99ERso6_PcA3hAT6pzH1RmO88H6IIe8crAVaXPRE', '1528966701', 1); INSERT INTO `yx_wechat_template` VALUES (13, 'OPENTM207791277', '订单支付成功通知', '{{first.DATA}}\n订单编号:{{keyword1.DATA}}\n支付金额:{{keyword2.DATA}}\n{{remark.DATA}}', 'hJV1d1OwWB_lbPrSaRHi9RGr5CFAF4PJcZdYeg73Mtg', '1528966759', 1); -INSERT INTO `yx_wechat_template` VALUES (14, 'OPENTM410292733', '砍价成功提醒', '{{first.DATA}}\n商品名称:{{keyword1.DATA}}\n底价:{{keyword2.DATA}}\n{{remark.DATA}}', 'SxBvid65JxK6PWOhlC2sgCG_mlopY1uKekEnEvAALp4', '1564566678', 1); -INSERT INTO `yx_wechat_template` VALUES (15, 'OPENTM414349441', '开团成功通知', '{{first.DATA}}\n拼团名称:{{keyword1.DATA}}\n团购价格:{{keyword2.DATA}}\n拼团人数:{{keyword3.DATA}}\n{{remark.DATA}}', 'VDTU6X1UiK438tu-qcHKc_I76CtsEWVx-_Pbf1voiws', '1564567037', 1); -- ---------------------------- -- Table structure for yx_wechat_user diff --git a/yshop-api/src/main/java/co/yixiang/modules/manage/entity/YxExpress.java b/yshop-api/src/main/java/co/yixiang/modules/manage/entity/YxExpress.java new file mode 100644 index 00000000..1a0b1e0e --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/manage/entity/YxExpress.java @@ -0,0 +1,44 @@ +package co.yixiang.modules.manage.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import co.yixiang.common.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + *

+ * 快递公司表 + *

+ * + * @author hupeng + * @since 2019-12-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value="YxExpress对象", description="快递公司表") +public class YxExpress extends BaseEntity { + + private static final long serialVersionUID = 1L; + +@ApiModelProperty(value = "快递公司id") +@TableId(value = "id", type = IdType.AUTO) +private Integer id; + +@ApiModelProperty(value = "快递公司简称") +private String code; + +@ApiModelProperty(value = "快递公司全称") +private String name; + +@ApiModelProperty(value = "排序") +private Integer sort; + +@ApiModelProperty(value = "是否显示") +private Boolean isShow; + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/manage/mapper/YxExpressMapper.java b/yshop-api/src/main/java/co/yixiang/modules/manage/mapper/YxExpressMapper.java new file mode 100644 index 00000000..bd8b33d9 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/manage/mapper/YxExpressMapper.java @@ -0,0 +1,40 @@ +package co.yixiang.modules.manage.mapper; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import co.yixiang.modules.manage.entity.YxExpress; +import co.yixiang.modules.manage.web.param.YxExpressQueryParam; +import co.yixiang.modules.manage.web.vo.YxExpressQueryVo; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; + +/** + *

+ * 快递公司表 Mapper 接口 + *

+ * + * @author hupeng + * @since 2019-12-13 + */ +@Repository +public interface YxExpressMapper extends BaseMapper { + + /** + * 根据ID获取查询对象 + * @param id + * @return + */ + YxExpressQueryVo getYxExpressById(Serializable id); + + /** + * 获取分页对象 + * @param page + * @param yxExpressQueryParam + * @return + */ + IPage getYxExpressPageList(@Param("page") Page page, @Param("param") YxExpressQueryParam yxExpressQueryParam); + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/manage/service/YxExpressService.java b/yshop-api/src/main/java/co/yixiang/modules/manage/service/YxExpressService.java new file mode 100644 index 00000000..902ba9e6 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/manage/service/YxExpressService.java @@ -0,0 +1,35 @@ +package co.yixiang.modules.manage.service; + +import co.yixiang.modules.manage.entity.YxExpress; +import co.yixiang.common.service.BaseService; +import co.yixiang.modules.manage.web.param.YxExpressQueryParam; +import co.yixiang.modules.manage.web.vo.YxExpressQueryVo; +import co.yixiang.common.web.vo.Paging; + +import java.io.Serializable; + +/** + *

+ * 快递公司表 服务类 + *

+ * + * @author hupeng + * @since 2019-12-13 + */ +public interface YxExpressService extends BaseService { + + /** + * 根据ID获取查询对象 + * @param id + * @return + */ + YxExpressQueryVo getYxExpressById(Serializable id); + + /** + * 获取分页对象 + * @param yxExpressQueryParam + * @return + */ + Paging getYxExpressPageList(YxExpressQueryParam yxExpressQueryParam) throws Exception; + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/manage/service/impl/YxExpressServiceImpl.java b/yshop-api/src/main/java/co/yixiang/modules/manage/service/impl/YxExpressServiceImpl.java new file mode 100644 index 00000000..b0f5f5e8 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/manage/service/impl/YxExpressServiceImpl.java @@ -0,0 +1,49 @@ +package co.yixiang.modules.manage.service.impl; + +import co.yixiang.modules.manage.entity.YxExpress; +import co.yixiang.modules.manage.mapper.YxExpressMapper; +import co.yixiang.modules.manage.service.YxExpressService; +import co.yixiang.modules.manage.web.param.YxExpressQueryParam; +import co.yixiang.modules.manage.web.vo.YxExpressQueryVo; +import co.yixiang.common.service.impl.BaseServiceImpl; +import co.yixiang.common.web.vo.Paging; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.beans.factory.annotation.Autowired; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.io.Serializable; + + +/** + *

+ * 快递公司表 服务实现类 + *

+ * + * @author hupeng + * @since 2019-12-13 + */ +@Slf4j +@Service +@Transactional(rollbackFor = Exception.class) +public class YxExpressServiceImpl extends BaseServiceImpl implements YxExpressService { + + @Autowired + private YxExpressMapper yxExpressMapper; + + @Override + public YxExpressQueryVo getYxExpressById(Serializable id){ + return yxExpressMapper.getYxExpressById(id); + } + + @Override + public Paging getYxExpressPageList(YxExpressQueryParam yxExpressQueryParam) throws Exception{ + Page page = setPageParam(yxExpressQueryParam,OrderItem.desc("create_time")); + IPage iPage = yxExpressMapper.getYxExpressPageList(page,yxExpressQueryParam); + return new Paging(iPage); + } + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/manage/web/controller/ShoperController.java b/yshop-api/src/main/java/co/yixiang/modules/manage/web/controller/ShoperController.java index 2e176137..b54a7fac 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/manage/web/controller/ShoperController.java +++ b/yshop-api/src/main/java/co/yixiang/modules/manage/web/controller/ShoperController.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import co.yixiang.common.api.ApiResult; import co.yixiang.common.web.controller.BaseController; +import co.yixiang.modules.manage.service.YxExpressService; import co.yixiang.modules.manage.web.dto.OrderTimeDataDTO; import co.yixiang.modules.manage.web.param.OrderDeliveryParam; import co.yixiang.modules.manage.web.param.OrderPriceParam; @@ -39,6 +40,7 @@ public class ShoperController extends BaseController { private final YxStoreOrderService storeOrderService; //private final YxUserService yxUserService; + private final YxExpressService expressService; /** * 订单数据统计 @@ -46,7 +48,6 @@ public class ShoperController extends BaseController { @GetMapping("/admin/order/statistics") @ApiOperation(value = "订单数据统计",notes = "订单数据统计") public ApiResult statistics(){ - //int uid = SecurityUtils.getUserId().intValue(); OrderCountDTO orderCountDTO = storeOrderService.orderData(0); OrderTimeDataDTO orderTimeDataDTO = storeOrderService.getOrderTimeData(); @@ -89,7 +90,6 @@ public class ShoperController extends BaseController { @GetMapping("/admin/order/detail/{key}") @ApiOperation(value = "订单详情",notes = "订单详情") public ApiResult orderDetail(@PathVariable String key){ - int uid = SecurityUtils.getUserId().intValue(); if(StrUtil.isEmpty(key)) return ApiResult.fail("参数错误"); YxStoreOrderQueryVo storeOrder = storeOrderService.getOrderInfo(key,0); @@ -107,23 +107,28 @@ public class ShoperController extends BaseController { @ApiOperation(value = "订单改价",notes = "订单改价") public ApiResult orderPrice(@Validated @RequestBody OrderPriceParam param){ - //if(ObjectUtil.isNotNull(param)) return ApiResult.fail("演示环境禁止操作"); - int uid = SecurityUtils.getUserId().intValue(); - storeOrderService.editOrderPrice(param); return ApiResult.ok("ok"); } + /** + * 快递公司 + */ + @GetMapping("/logistics") + @ApiOperation(value = "快递公司",notes = "快递公司") + public ApiResult express(){ + + return ApiResult.ok(expressService.list()); + } + + /** * 订单发货 */ @PostMapping("/admin/order/delivery/keep") @ApiOperation(value = "订单发货",notes = "订单发货") public ApiResult orderDelivery(@Validated @RequestBody OrderDeliveryParam param){ - //if(ObjectUtil.isNotNull(param)) return ApiResult.fail("演示环境禁止操作"); - - int uid = SecurityUtils.getUserId().intValue(); storeOrderService.orderDelivery(param); diff --git a/yshop-api/src/main/java/co/yixiang/modules/manage/web/param/YxExpressQueryParam.java b/yshop-api/src/main/java/co/yixiang/modules/manage/web/param/YxExpressQueryParam.java new file mode 100644 index 00000000..f9352c1c --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/manage/web/param/YxExpressQueryParam.java @@ -0,0 +1,22 @@ +package co.yixiang.modules.manage.web.param; + +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import co.yixiang.common.web.param.QueryParam; + +/** + *

+ * 快递公司表 查询参数对象 + *

+ * + * @author hupeng + * @date 2019-12-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value="YxExpressQueryParam对象", description="快递公司表查询参数") +public class YxExpressQueryParam extends QueryParam { + private static final long serialVersionUID = 1L; +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/manage/web/vo/YxExpressQueryVo.java b/yshop-api/src/main/java/co/yixiang/modules/manage/web/vo/YxExpressQueryVo.java new file mode 100644 index 00000000..36848d01 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/manage/web/vo/YxExpressQueryVo.java @@ -0,0 +1,38 @@ +package co.yixiang.modules.manage.web.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.io.Serializable; + +import java.util.Date; + +/** + *

+ * 快递公司表 查询结果对象 + *

+ * + * @author hupeng + * @date 2019-12-13 + */ +@Data +@ApiModel(value="YxExpressQueryVo对象", description="快递公司表查询参数") +public class YxExpressQueryVo implements Serializable{ + private static final long serialVersionUID = 1L; + +@ApiModelProperty(value = "快递公司id") +private Integer id; + +@ApiModelProperty(value = "快递公司简称") +private String code; + +@ApiModelProperty(value = "快递公司全称") +private String name; + +@ApiModelProperty(value = "排序") +private Integer sort; + +@ApiModelProperty(value = "是否显示") +private Boolean isShow; + +} \ No newline at end of file diff --git a/yshop-api/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java b/yshop-api/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java index 0e52a289..822b80f8 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java +++ b/yshop-api/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java @@ -6,12 +6,14 @@ import co.yixiang.common.constant.CommonConstant; import co.yixiang.exception.ErrorRequestException; import co.yixiang.modules.activity.service.YxStoreCombinationService; import co.yixiang.modules.activity.service.YxStorePinkService; +import co.yixiang.modules.manage.service.YxExpressService; import co.yixiang.modules.manage.web.dto.ChartDataDTO; import co.yixiang.modules.manage.web.dto.OrderDataDTO; import co.yixiang.modules.manage.web.dto.OrderTimeDataDTO; import co.yixiang.modules.manage.web.param.OrderDeliveryParam; import co.yixiang.modules.manage.web.param.OrderPriceParam; import co.yixiang.modules.manage.web.param.OrderRefundParam; +import co.yixiang.modules.manage.web.vo.YxExpressQueryVo; import co.yixiang.modules.monitor.service.RedisService; import co.yixiang.modules.order.entity.YxStoreOrder; import co.yixiang.modules.order.entity.YxStoreOrderCartInfo; @@ -44,6 +46,10 @@ import co.yixiang.modules.user.web.vo.YxUserQueryVo; //import co.yixiang.redisson.DelayJob; //import co.yixiang.redisson.DelayJobService; import co.yixiang.modules.task.DelayJobService; +import co.yixiang.modules.user.web.vo.YxWechatUserQueryVo; +import co.yixiang.modules.wechat.entity.YxWechatTemplate; +import co.yixiang.mp.service.WxMpTemplateMessageService; +import co.yixiang.modules.wechat.service.YxWechatTemplateService; import co.yixiang.utils.OrderUtil; import co.yixiang.utils.RedisUtil; import com.alibaba.fastjson.JSON; @@ -144,8 +150,14 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl().eq("tempkey","OPENTM200565259")); + //付款成功微信模板通知用户 + Map map = new HashMap<>(); + map.put("first","亲,宝贝已经启程了,好想快点来到你身边。"); + map.put("keyword1",storeOrder.getOrderId());//订单号 + map.put("keyword2",expressQueryVo.getName()); + map.put("keyword3",param.getDeliveryId()); + map.put("remark","yshop电商系统为你服务!"); + templateMessageService.sendWxMpTemplateMessage( wechatUser.getOpenid() + ,WechatTemplate.getTempid(), + siteUrl+"/order/detail/"+orderQueryVo.getOrderId(),map); + } } @@ -837,7 +872,6 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl wrapper = new QueryWrapper<>(); @@ -853,13 +887,26 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl().eq("tempkey","OPENTM207791277")); + //付款成功微信模板通知用户 + Map map = new HashMap<>(); + map.put("first","您的订单已支付成功,我们会尽快为您发货。"); + map.put("keyword1",orderInfo.getOrderId());//订单号 + map.put("keyword2",orderInfo.getPayPrice().toString()); + map.put("remark","yshop电商系统为你服务!"); + templateMessageService.sendWxMpTemplateMessage( wechatUser.getOpenid() + ,WechatTemplate.getTempid(), + siteUrl+"/order/detail/"+orderInfo.getOrderId(),map); + } + } /** diff --git a/yshop-api/src/main/java/co/yixiang/modules/security/config/SecurityConfig.java b/yshop-api/src/main/java/co/yixiang/modules/security/config/SecurityConfig.java index 8db67c56..666b9755 100644 --- a/yshop-api/src/main/java/co/yixiang/modules/security/config/SecurityConfig.java +++ b/yshop-api/src/main/java/co/yixiang/modules/security/config/SecurityConfig.java @@ -114,6 +114,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { .antMatchers("/share").anonymous() .antMatchers("/wechat/notify").anonymous() .antMatchers("/wechat/serve").anonymous() + .antMatchers("/logistics").anonymous() // 支付宝回调 .antMatchers("/api/aliPay/return").anonymous() .antMatchers("/api/aliPay/notify").anonymous() diff --git a/yshop-api/src/main/java/co/yixiang/modules/wechat/entity/YxWechatTemplate.java b/yshop-api/src/main/java/co/yixiang/modules/wechat/entity/YxWechatTemplate.java new file mode 100644 index 00000000..01d54677 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/wechat/entity/YxWechatTemplate.java @@ -0,0 +1,48 @@ +package co.yixiang.modules.wechat.entity; + +import co.yixiang.common.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 微信模板 + *

+ * + * @author xuwenbo + * @since 2019-12-10 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "YxWechatTemplate对象", description = "微信模板") +public class YxWechatTemplate extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "模板id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "模板编号") + private String tempkey; + + @ApiModelProperty(value = "模板名") + private String name; + + @ApiModelProperty(value = "回复内容") + private String content; + + @ApiModelProperty(value = "模板ID") + private String tempid; + + @ApiModelProperty(value = "添加时间") + private String addTime; + + @ApiModelProperty(value = "状态") + private Integer status; + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/wechat/mapper/YxWechatTemplateMapper.java b/yshop-api/src/main/java/co/yixiang/modules/wechat/mapper/YxWechatTemplateMapper.java new file mode 100644 index 00000000..f16b6f41 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/wechat/mapper/YxWechatTemplateMapper.java @@ -0,0 +1,40 @@ +package co.yixiang.modules.wechat.mapper; + +import co.yixiang.modules.wechat.entity.YxWechatTemplate; +import co.yixiang.modules.wechat.web.param.YxWechatTemplateQueryParam; +import co.yixiang.modules.wechat.web.vo.YxWechatTemplateQueryVo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; + +/** + *

+ * 微信模板 Mapper 接口 + *

+ * + * @author xuwenbo + * @since 2019-12-10 + */ +@Repository +public interface YxWechatTemplateMapper extends BaseMapper { + + /** + * 根据ID获取查询对象 + * @param id + * @return + */ + YxWechatTemplateQueryVo getYxWechatTemplateById(Serializable id); + + /** + * 获取分页对象 + * @param page + * @param yxWechatTemplateQueryParam + * @return + */ + IPage getYxWechatTemplatePageList(@Param("page") Page page, @Param("param") YxWechatTemplateQueryParam yxWechatTemplateQueryParam); + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/wechat/service/YxWechatTemplateService.java b/yshop-api/src/main/java/co/yixiang/modules/wechat/service/YxWechatTemplateService.java new file mode 100644 index 00000000..a75e853f --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/wechat/service/YxWechatTemplateService.java @@ -0,0 +1,35 @@ +package co.yixiang.modules.wechat.service; + +import co.yixiang.common.service.BaseService; +import co.yixiang.common.web.vo.Paging; +import co.yixiang.modules.wechat.entity.YxWechatTemplate; +import co.yixiang.modules.wechat.web.param.YxWechatTemplateQueryParam; +import co.yixiang.modules.wechat.web.vo.YxWechatTemplateQueryVo; + +import java.io.Serializable; + +/** + *

+ * 微信模板 服务类 + *

+ * + * @author xuwenbo + * @since 2019-12-10 + */ +public interface YxWechatTemplateService extends BaseService { + + /** + * 根据ID获取查询对象 + * @param id + * @return + */ + YxWechatTemplateQueryVo getYxWechatTemplateById(Serializable id) throws Exception; + + /** + * 获取分页对象 + * @param yxWechatTemplateQueryParam + * @return + */ + Paging getYxWechatTemplatePageList(YxWechatTemplateQueryParam yxWechatTemplateQueryParam) throws Exception; + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/wechat/service/impl/WechatTemplateServiceImpl.java b/yshop-api/src/main/java/co/yixiang/modules/wechat/service/impl/WechatTemplateServiceImpl.java new file mode 100644 index 00000000..6ea6b39e --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/wechat/service/impl/WechatTemplateServiceImpl.java @@ -0,0 +1,49 @@ +package co.yixiang.modules.wechat.service.impl; + +import co.yixiang.common.service.impl.BaseServiceImpl; +import co.yixiang.common.web.vo.Paging; +import co.yixiang.modules.wechat.entity.YxWechatTemplate; +import co.yixiang.modules.wechat.mapper.YxWechatTemplateMapper; +import co.yixiang.modules.wechat.service.YxWechatTemplateService; +import co.yixiang.modules.wechat.web.param.YxWechatTemplateQueryParam; +import co.yixiang.modules.wechat.web.vo.YxWechatTemplateQueryVo; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; + + +/** + *

+ * 微信模板 服务实现类 + *

+ * + * @author xuwenbo + * @since 2019-12-10 + */ +@Slf4j +@Service +@Transactional(rollbackFor = Exception.class) +public class WechatTemplateServiceImpl extends BaseServiceImpl implements YxWechatTemplateService { + + @Autowired + private YxWechatTemplateMapper yxWechatTemplateMapper; + + @Override + public YxWechatTemplateQueryVo getYxWechatTemplateById(Serializable id) throws Exception{ + return yxWechatTemplateMapper.getYxWechatTemplateById(id); + } + + @Override + public Paging getYxWechatTemplatePageList(YxWechatTemplateQueryParam yxWechatTemplateQueryParam) throws Exception{ + Page page = setPageParam(yxWechatTemplateQueryParam,OrderItem.desc("create_time")); + IPage iPage = yxWechatTemplateMapper.getYxWechatTemplatePageList(page,yxWechatTemplateQueryParam); + return new Paging(iPage); + } + +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/wechat/web/param/YxWechatTemplateQueryParam.java b/yshop-api/src/main/java/co/yixiang/modules/wechat/web/param/YxWechatTemplateQueryParam.java new file mode 100644 index 00000000..3c471d14 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/wechat/web/param/YxWechatTemplateQueryParam.java @@ -0,0 +1,21 @@ +package co.yixiang.modules.wechat.web.param; + +import co.yixiang.common.web.param.QueryParam; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 微信模板 查询参数对象 + *

+ * + * @author xuwenbo + * @date 2019-12-10 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value="YxWechatTemplateQueryParam对象", description="微信模板查询参数") +public class YxWechatTemplateQueryParam extends QueryParam { + private static final long serialVersionUID = 1L; +} diff --git a/yshop-api/src/main/java/co/yixiang/modules/wechat/web/vo/YxWechatTemplateQueryVo.java b/yshop-api/src/main/java/co/yixiang/modules/wechat/web/vo/YxWechatTemplateQueryVo.java new file mode 100644 index 00000000..d8810c84 --- /dev/null +++ b/yshop-api/src/main/java/co/yixiang/modules/wechat/web/vo/YxWechatTemplateQueryVo.java @@ -0,0 +1,43 @@ +package co.yixiang.modules.wechat.web.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 微信模板 查询结果对象 + *

+ * + * @author xuwenbo + * @date 2019-12-10 + */ +@Data +@ApiModel(value="YxWechatTemplateQueryVo对象", description="微信模板查询参数") +public class YxWechatTemplateQueryVo implements Serializable{ + private static final long serialVersionUID = 1L; + +@ApiModelProperty(value = "模板id") +private Integer id; + +@ApiModelProperty(value = "模板编号") +private String tempkey; + +@ApiModelProperty(value = "模板名") +private String name; + +@ApiModelProperty(value = "回复内容") +private String content; + +@ApiModelProperty(value = "模板ID") +private String tempid; + +@ApiModelProperty(value = "添加时间") +private String addTime; + +@ApiModelProperty(value = "状态") +private Integer status; + +} \ No newline at end of file diff --git a/yshop-api/src/main/resources/mapper/manage/YxExpressMapper.xml b/yshop-api/src/main/resources/mapper/manage/YxExpressMapper.xml new file mode 100644 index 00000000..bd497ef8 --- /dev/null +++ b/yshop-api/src/main/resources/mapper/manage/YxExpressMapper.xml @@ -0,0 +1,18 @@ + + + + + + + id, code, name, sort, is_show + + + + + + + diff --git a/yshop-api/src/test/java/co/yixiang/test/CodeGenerator.java b/yshop-api/src/test/java/co/yixiang/test/CodeGenerator.java index bdd0cd08..52a54e8a 100644 --- a/yshop-api/src/test/java/co/yixiang/test/CodeGenerator.java +++ b/yshop-api/src/test/java/co/yixiang/test/CodeGenerator.java @@ -43,11 +43,11 @@ public class CodeGenerator { // ############################ 配置部分 start ############################ // 模块名称 - private static final String MODULE_NAME = "user"; + private static final String MODULE_NAME = "manage"; // 作者 private static final String AUTHOR = "hupeng"; // 生成的表名称 - private static final String TABLE_NAME = "yx_user_recharge"; // 主键数据库列名称 + private static final String TABLE_NAME = "yx_express"; // 主键数据库列名称 private static final String PK_ID_COLUMN_NAME = "id"; // 代码生成策略 true:All/false:SIMPLE private static final boolean GENERATOR_STRATEGY = true; diff --git a/yshop-mp/src/main/java/co/yixiang/mp/controller/YxWechatTemplateController.java b/yshop-mp/src/main/java/co/yixiang/mp/controller/YxWechatTemplateController.java new file mode 100644 index 00000000..6009ddc9 --- /dev/null +++ b/yshop-mp/src/main/java/co/yixiang/mp/controller/YxWechatTemplateController.java @@ -0,0 +1,61 @@ +package co.yixiang.mp.controller; + +import cn.hutool.core.util.StrUtil; +import co.yixiang.exception.BadRequestException; +import co.yixiang.mp.domain.YxWechatTemplate; +import co.yixiang.mp.service.YxWechatTemplateService; +import co.yixiang.mp.service.dto.YxWechatTemplateQueryCriteria; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.*; + +/** +* @author xuwenbo +* @date 2019-12-10 +*/ +@Api(tags = "YxWechatTemplate管理") +@RestController +@RequestMapping("api") +public class YxWechatTemplateController { + + @Autowired + private YxWechatTemplateService yxWechatTemplateService; + + @ApiOperation(value = "查询YxWechatTemplate") + @GetMapping(value = "/yxWechatTemplate") + @PreAuthorize("hasAnyRole('ADMIN','YXWECHATTEMPLATE_ALL','YXWECHATTEMPLATE_SELECT')") + public ResponseEntity getYxWechatTemplates(YxWechatTemplateQueryCriteria criteria, Pageable pageable){ + return new ResponseEntity(yxWechatTemplateService.queryAll(criteria,pageable),HttpStatus.OK); + } + + @ApiOperation(value = "新增YxWechatTemplate") + @PostMapping(value = "/yxWechatTemplate") + @PreAuthorize("hasAnyRole('ADMIN','YXWECHATTEMPLATE_ALL','YXWECHATTEMPLATE_CREATE')") + public ResponseEntity create(@Validated @RequestBody YxWechatTemplate resources){ + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); + return new ResponseEntity(yxWechatTemplateService.create(resources),HttpStatus.CREATED); + } + + @ApiOperation(value = "修改YxWechatTemplate") + @PutMapping(value = "/yxWechatTemplate") + @PreAuthorize("hasAnyRole('ADMIN','YXWECHATTEMPLATE_ALL','YXWECHATTEMPLATE_EDIT')") + public ResponseEntity update(@Validated @RequestBody YxWechatTemplate resources){ + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); + yxWechatTemplateService.update(resources); + return new ResponseEntity(HttpStatus.NO_CONTENT); + } + + @ApiOperation(value = "删除YxWechatTemplate") + @DeleteMapping(value = "/yxWechatTemplate/{id}") + @PreAuthorize("hasAnyRole('ADMIN','YXWECHATTEMPLATE_ALL','YXWECHATTEMPLATE_DELETE')") + public ResponseEntity delete(@PathVariable Integer id){ + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); + yxWechatTemplateService.delete(id); + return new ResponseEntity(HttpStatus.OK); + } +} \ No newline at end of file diff --git a/yshop-mp/src/main/java/co/yixiang/mp/domain/YxWechatTemplate.java b/yshop-mp/src/main/java/co/yixiang/mp/domain/YxWechatTemplate.java new file mode 100644 index 00000000..f2a6d2b9 --- /dev/null +++ b/yshop-mp/src/main/java/co/yixiang/mp/domain/YxWechatTemplate.java @@ -0,0 +1,51 @@ +package co.yixiang.mp.domain; + +import lombok.Data; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; +import javax.persistence.*; +import java.io.Serializable; + +/** +* @author xuwenbo +* @date 2019-12-10 +*/ +@Entity +@Data +@Table(name="yx_wechat_template") +public class YxWechatTemplate implements Serializable { + + // 模板id + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Integer id; + + // 模板编号 + @Column(name = "tempkey",nullable = false) + private String tempkey; + + // 模板名 + @Column(name = "name",nullable = false) + private String name; + + // 回复内容 + @Column(name = "content",nullable = false) + private String content; + + // 模板ID + @Column(name = "tempid") + private String tempid; + + // 添加时间 + @Column(name = "add_time",nullable = false) + private String addTime; + + // 状态 + @Column(name = "status",nullable = false) + private Integer status; + + public void copy(YxWechatTemplate source){ + BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); + } +} \ No newline at end of file diff --git a/yshop-mp/src/main/java/co/yixiang/mp/repository/YxWechatTemplateRepository.java b/yshop-mp/src/main/java/co/yixiang/mp/repository/YxWechatTemplateRepository.java new file mode 100644 index 00000000..d724494a --- /dev/null +++ b/yshop-mp/src/main/java/co/yixiang/mp/repository/YxWechatTemplateRepository.java @@ -0,0 +1,13 @@ +package co.yixiang.mp.repository; + +import co.yixiang.mp.domain.YxWechatTemplate; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +/** +* @author xuwenbo +* @date 2019-12-10 +*/ +public interface YxWechatTemplateRepository extends JpaRepository, JpaSpecificationExecutor { + YxWechatTemplate findByTempkey(String key); +} \ No newline at end of file diff --git a/yshop-mp/src/main/java/co/yixiang/mp/service/WxMpTemplateMessageService.java b/yshop-mp/src/main/java/co/yixiang/mp/service/WxMpTemplateMessageService.java new file mode 100644 index 00000000..943e46e0 --- /dev/null +++ b/yshop-mp/src/main/java/co/yixiang/mp/service/WxMpTemplateMessageService.java @@ -0,0 +1,8 @@ +package co.yixiang.mp.service; + +import java.util.Map; + +public interface WxMpTemplateMessageService { + + String sendWxMpTemplateMessage(String openId, String templateId, String url, Map map); +} diff --git a/yshop-mp/src/main/java/co/yixiang/mp/service/YxWechatTemplateService.java b/yshop-mp/src/main/java/co/yixiang/mp/service/YxWechatTemplateService.java new file mode 100644 index 00000000..41a01e66 --- /dev/null +++ b/yshop-mp/src/main/java/co/yixiang/mp/service/YxWechatTemplateService.java @@ -0,0 +1,68 @@ +package co.yixiang.mp.service; + +import co.yixiang.mp.domain.YxWechatTemplate; +import co.yixiang.mp.service.dto.YxWechatTemplateDTO; +import co.yixiang.mp.service.dto.YxWechatTemplateQueryCriteria; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.data.domain.Pageable; +import java.util.Map; +import java.util.List; + +/** +* @author xuwenbo +* @date 2019-12-10 +*/ +//@CacheConfig(cacheNames = "yxWechatTemplate") +public interface YxWechatTemplateService { + + YxWechatTemplate findByTempkey(String key); + + /** + * 查询数据分页 + * @param criteria + * @param pageable + * @return + */ + //@Cacheable + Map queryAll(YxWechatTemplateQueryCriteria criteria, Pageable pageable); + + /** + * 查询所有数据不分页 + * @param criteria + * @return + */ + //@Cacheable + List queryAll(YxWechatTemplateQueryCriteria criteria); + + /** + * 根据ID查询 + * @param id + * @return + */ + //@Cacheable(key = "#p0") + YxWechatTemplateDTO findById(Integer id); + + /** + * 创建 + * @param resources + * @return + */ + //@CacheEvict(allEntries = true) + YxWechatTemplateDTO create(YxWechatTemplate resources); + + /** + * 编辑 + * @param resources + */ + //@CacheEvict(allEntries = true) + void update(YxWechatTemplate resources); + + /** + * 删除 + * @param id + */ + //@CacheEvict(allEntries = true) + void delete(Integer id); +} \ No newline at end of file diff --git a/yshop-mp/src/main/java/co/yixiang/mp/service/dto/YxWechatTemplateDTO.java b/yshop-mp/src/main/java/co/yixiang/mp/service/dto/YxWechatTemplateDTO.java new file mode 100644 index 00000000..3f25905b --- /dev/null +++ b/yshop-mp/src/main/java/co/yixiang/mp/service/dto/YxWechatTemplateDTO.java @@ -0,0 +1,34 @@ +package co.yixiang.mp.service.dto; + +import lombok.Data; +import java.io.Serializable; + + +/** +* @author xuwenbo +* @date 2019-12-10 +*/ +@Data +public class YxWechatTemplateDTO implements Serializable { + + // 模板id + private Integer id; + + // 模板编号 + private String tempkey; + + // 模板名 + private String name; + + // 回复内容 + private String content; + + // 模板ID + private String tempid; + + // 添加时间 + private String addTime; + + // 状态 + private Integer status; +} \ No newline at end of file diff --git a/yshop-mp/src/main/java/co/yixiang/mp/service/dto/YxWechatTemplateQueryCriteria.java b/yshop-mp/src/main/java/co/yixiang/mp/service/dto/YxWechatTemplateQueryCriteria.java new file mode 100644 index 00000000..4df0d6e2 --- /dev/null +++ b/yshop-mp/src/main/java/co/yixiang/mp/service/dto/YxWechatTemplateQueryCriteria.java @@ -0,0 +1,12 @@ +package co.yixiang.mp.service.dto; + +import lombok.Data; +import co.yixiang.annotation.Query; + +/** +* @author xuwenbo +* @date 2019-12-10 +*/ +@Data +public class YxWechatTemplateQueryCriteria{ +} \ No newline at end of file diff --git a/yshop-mp/src/main/java/co/yixiang/mp/service/impl/WxMpTemplateMessageServiceImpl.java b/yshop-mp/src/main/java/co/yixiang/mp/service/impl/WxMpTemplateMessageServiceImpl.java new file mode 100644 index 00000000..bc3a1537 --- /dev/null +++ b/yshop-mp/src/main/java/co/yixiang/mp/service/impl/WxMpTemplateMessageServiceImpl.java @@ -0,0 +1,35 @@ +package co.yixiang.mp.service.impl; + +import co.yixiang.mp.service.WxMpTemplateMessageService; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.template.WxMpTemplateData; +import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@Component +public class WxMpTemplateMessageServiceImpl implements WxMpTemplateMessageService { + + @Autowired + private WxMpService wxMpService; + + @Override + public String sendWxMpTemplateMessage(String openId, String templateId, String url, Map map){ + WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder() + .toUser(openId) + .templateId(templateId) + .url(url) + .build(); + map.forEach( (k,v)-> { templateMessage.addData(new WxMpTemplateData(k, v, "#000000"));} ); + String msgId = null; + try { + msgId = wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage); + } catch (WxErrorException e) { + e.printStackTrace(); + } + return msgId; + } +} diff --git a/yshop-mp/src/main/java/co/yixiang/mp/service/impl/YxWechatTemplateServiceImpl.java b/yshop-mp/src/main/java/co/yixiang/mp/service/impl/YxWechatTemplateServiceImpl.java new file mode 100644 index 00000000..62a42fa3 --- /dev/null +++ b/yshop-mp/src/main/java/co/yixiang/mp/service/impl/YxWechatTemplateServiceImpl.java @@ -0,0 +1,80 @@ +package co.yixiang.mp.service.impl; + +import co.yixiang.mp.domain.YxWechatTemplate; +import co.yixiang.utils.ValidationUtil; +import co.yixiang.mp.repository.YxWechatTemplateRepository; +import co.yixiang.mp.service.YxWechatTemplateService; +import co.yixiang.mp.service.dto.YxWechatTemplateDTO; +import co.yixiang.mp.service.dto.YxWechatTemplateQueryCriteria; +import co.yixiang.mp.service.mapper.YxWechatTemplateMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import java.util.Optional; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import co.yixiang.utils.PageUtil; +import co.yixiang.utils.QueryHelp; +import java.util.List; +import java.util.Map; + +/** +* @author xuwenbo +* @date 2019-12-10 +*/ +@Service +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) +public class YxWechatTemplateServiceImpl implements YxWechatTemplateService { + + @Autowired + private YxWechatTemplateRepository yxWechatTemplateRepository; + + @Autowired + private YxWechatTemplateMapper yxWechatTemplateMapper; + + @Override + public YxWechatTemplate findByTempkey(String key) { + return yxWechatTemplateRepository.findByTempkey(key); + } + + @Override + public Map queryAll(YxWechatTemplateQueryCriteria criteria, Pageable pageable){ + Page page = yxWechatTemplateRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); + return PageUtil.toPage(page.map(yxWechatTemplateMapper::toDto)); + } + + @Override + public List queryAll(YxWechatTemplateQueryCriteria criteria){ + return yxWechatTemplateMapper.toDto(yxWechatTemplateRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); + } + + @Override + public YxWechatTemplateDTO findById(Integer id) { + Optional yxWechatTemplate = yxWechatTemplateRepository.findById(id); + ValidationUtil.isNull(yxWechatTemplate,"YxWechatTemplate","id",id); + return yxWechatTemplateMapper.toDto(yxWechatTemplate.get()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public YxWechatTemplateDTO create(YxWechatTemplate resources) { + return yxWechatTemplateMapper.toDto(yxWechatTemplateRepository.save(resources)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(YxWechatTemplate resources) { + Optional optionalYxWechatTemplate = yxWechatTemplateRepository.findById(resources.getId()); + ValidationUtil.isNull( optionalYxWechatTemplate,"YxWechatTemplate","id",resources.getId()); + YxWechatTemplate yxWechatTemplate = optionalYxWechatTemplate.get(); + yxWechatTemplate.copy(resources); + yxWechatTemplateRepository.save(yxWechatTemplate); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(Integer id) { + yxWechatTemplateRepository.deleteById(id); + } +} \ No newline at end of file diff --git a/yshop-mp/src/main/java/co/yixiang/mp/service/mapper/YxWechatTemplateMapper.java b/yshop-mp/src/main/java/co/yixiang/mp/service/mapper/YxWechatTemplateMapper.java new file mode 100644 index 00000000..5536a8de --- /dev/null +++ b/yshop-mp/src/main/java/co/yixiang/mp/service/mapper/YxWechatTemplateMapper.java @@ -0,0 +1,16 @@ +package co.yixiang.mp.service.mapper; + +import co.yixiang.mapper.EntityMapper; +import co.yixiang.mp.domain.YxWechatTemplate; +import co.yixiang.mp.service.dto.YxWechatTemplateDTO; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +/** +* @author xuwenbo +* @date 2019-12-10 +*/ +@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface YxWechatTemplateMapper extends EntityMapper { + +} \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/shop/repository/YxUserBillRepository.java b/yshop-shop/src/main/java/co/yixiang/modules/shop/repository/YxUserBillRepository.java index 4d932384..2fbdfcca 100644 --- a/yshop-shop/src/main/java/co/yixiang/modules/shop/repository/YxUserBillRepository.java +++ b/yshop-shop/src/main/java/co/yixiang/modules/shop/repository/YxUserBillRepository.java @@ -19,7 +19,7 @@ public interface YxUserBillRepository extends JpaRepository value = "select b.title,b.pm,b.category,b.type,b.number,b.add_time as addTime," + "u.nickname from yx_user_bill b left join yx_user u on u.uid=b.uid " + " where if(?1 !='',b.category=?1,1=1) and if(?2 !='',b.type=?2,1=1) " + - "and if(?3 !='',u.nickname LIKE CONCAT('%',?3,'%'),1=1)", + "and if(?3 !='',u.nickname LIKE CONCAT('%',?3,'%'),1=1) order by b.id desc", countQuery = "select count(*) from yx_user_bill b left join yx_user u on u.uid=b.uid" + " where if(?1 !='',b.category=?1,1=1) and if(?2 !='',b.type=?2,1=1) " + "and if(?3 !='',u.nickname LIKE CONCAT('%',?3,'%'),1=1)") diff --git a/yshop-shop/src/main/java/co/yixiang/modules/shop/rest/YxStoreOrderController.java b/yshop-shop/src/main/java/co/yixiang/modules/shop/rest/YxStoreOrderController.java index bebc69ae..6f23a00a 100644 --- a/yshop-shop/src/main/java/co/yixiang/modules/shop/rest/YxStoreOrderController.java +++ b/yshop-shop/src/main/java/co/yixiang/modules/shop/rest/YxStoreOrderController.java @@ -11,7 +11,13 @@ import co.yixiang.aop.log.Log; import co.yixiang.modules.shop.service.YxStoreOrderStatusService; import co.yixiang.modules.shop.service.dto.YxExpressDTO; import co.yixiang.modules.shop.service.dto.YxStoreOrderQueryCriteria; +import co.yixiang.modules.wechat.service.YxWechatUserService; +import co.yixiang.modules.wechat.service.dto.YxWechatUserDTO; +import co.yixiang.mp.domain.YxWechatTemplate; +import co.yixiang.mp.service.WxMpTemplateMessageService; +import co.yixiang.mp.service.YxWechatTemplateService; import co.yixiang.utils.OrderUtil; +import co.yixiang.utils.RedisUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; @@ -21,6 +27,9 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import io.swagger.annotations.*; +import java.util.HashMap; +import java.util.Map; + /** * @author hupeng * @date 2019-10-14 @@ -39,6 +48,15 @@ public class YxStoreOrderController { @Autowired private YxExpressService yxExpressService; + @Autowired + private YxWechatUserService wechatUserService; + + @Autowired + private WxMpTemplateMessageService templateMessageService; + + @Autowired + private YxWechatTemplateService yxWechatTemplateService; + @GetMapping(value = "/data/count") //@PreAuthorize("hasAnyRole('ADMIN','YXSTOREORDER_ALL','YXSTOREORDER_SELECT')") @@ -143,6 +161,23 @@ public class YxStoreOrderController { yxStoreOrderStatusService.create(storeOrderStatus); + //模板消息通知 + String siteUrl = RedisUtil.get("site_url"); + YxWechatUserDTO wechatUser = wechatUserService.findById(resources.getUid()); + if(ObjectUtil.isNotNull(wechatUser)){ + YxWechatTemplate WechatTemplate = yxWechatTemplateService + .findByTempkey("OPENTM200565259"); + Map map = new HashMap<>(); + map.put("first","亲,宝贝已经启程了,好想快点来到你身边。"); + map.put("keyword1",resources.getOrderId());//订单号 + map.put("keyword2",expressDTO.getName()); + map.put("keyword3",resources.getDeliveryId()); + map.put("remark","yshop电商系统为你服务!"); + templateMessageService.sendWxMpTemplateMessage( wechatUser.getOpenid() + ,WechatTemplate.getTempid(), + siteUrl+"/order/detail/"+resources.getOrderId(),map); + } + return new ResponseEntity(HttpStatus.NO_CONTENT); } diff --git a/yshop-shop/src/main/java/co/yixiang/modules/wechat/domain/YxWechatUser.java b/yshop-shop/src/main/java/co/yixiang/modules/wechat/domain/YxWechatUser.java new file mode 100644 index 00000000..d2445a49 --- /dev/null +++ b/yshop-shop/src/main/java/co/yixiang/modules/wechat/domain/YxWechatUser.java @@ -0,0 +1,120 @@ +package co.yixiang.modules.wechat.domain; + +import lombok.Data; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; +import javax.persistence.*; +import java.math.BigDecimal; +import java.io.Serializable; + +/** +* @author hupeng +* @date 2019-12-13 +*/ +@Entity +@Data +@Table(name="yx_wechat_user") +public class YxWechatUser implements Serializable { + + // 微信用户id + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "uid") + private Integer uid; + + // 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段 + @Column(name = "unionid") + private String unionid; + + // 用户的标识,对当前公众号唯一 + @Column(name = "openid") + private String openid; + + // 小程序唯一身份ID + @Column(name = "routine_openid") + private String routineOpenid; + + // 用户的昵称 + @Column(name = "nickname",nullable = false) + private String nickname; + + // 用户头像 + @Column(name = "headimgurl",nullable = false) + private String headimgurl; + + // 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知 + @Column(name = "sex",nullable = false) + private Integer sex; + + // 用户所在城市 + @Column(name = "city",nullable = false) + private String city; + + // 用户的语言,简体中文为zh_CN + @Column(name = "language",nullable = false) + private String language; + + // 用户所在省份 + @Column(name = "province",nullable = false) + private String province; + + // 用户所在国家 + @Column(name = "country",nullable = false) + private String country; + + // 公众号运营者对粉丝的备注,公众号运营者可在微信公众平台用户管理界面对粉丝添加备注 + @Column(name = "remark") + private String remark; + + // 用户所在的分组ID(兼容旧的用户分组接口) + @Column(name = "groupid") + private Integer groupid; + + // 用户被打上的标签ID列表 + @Column(name = "tagid_list") + private String tagidList; + + // 用户是否订阅该公众号标识 + @Column(name = "subscribe") + private Integer subscribe; + + // 关注公众号时间 + @Column(name = "subscribe_time") + private Integer subscribeTime; + + // 添加时间 + @Column(name = "add_time") + private Integer addTime; + + // 一级推荐人 + @Column(name = "stair") + private Integer stair; + + // 二级推荐人 + @Column(name = "second") + private Integer second; + + // 一级推荐人订单 + @Column(name = "order_stair") + private Integer orderStair; + + // 二级推荐人订单 + @Column(name = "order_second") + private Integer orderSecond; + + // 佣金 + @Column(name = "now_money") + private BigDecimal nowMoney; + + // 小程序用户会话密匙 + @Column(name = "session_key") + private String sessionKey; + + // 用户类型 + @Column(name = "user_type") + private String userType; + + public void copy(YxWechatUser source){ + BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); + } +} \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/wechat/repository/YxWechatUserRepository.java b/yshop-shop/src/main/java/co/yixiang/modules/wechat/repository/YxWechatUserRepository.java new file mode 100644 index 00000000..6667e712 --- /dev/null +++ b/yshop-shop/src/main/java/co/yixiang/modules/wechat/repository/YxWechatUserRepository.java @@ -0,0 +1,12 @@ +package co.yixiang.modules.wechat.repository; + +import co.yixiang.modules.wechat.domain.YxWechatUser; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +/** +* @author hupeng +* @date 2019-12-13 +*/ +public interface YxWechatUserRepository extends JpaRepository, JpaSpecificationExecutor { +} \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/wechat/rest/YxWechatUserController.java b/yshop-shop/src/main/java/co/yixiang/modules/wechat/rest/YxWechatUserController.java new file mode 100644 index 00000000..79f85813 --- /dev/null +++ b/yshop-shop/src/main/java/co/yixiang/modules/wechat/rest/YxWechatUserController.java @@ -0,0 +1,61 @@ +package co.yixiang.modules.wechat.rest; + +import co.yixiang.aop.log.Log; +import co.yixiang.modules.wechat.domain.YxWechatUser; +import co.yixiang.modules.wechat.service.YxWechatUserService; +import co.yixiang.modules.wechat.service.dto.YxWechatUserQueryCriteria; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.*; + +/** +* @author hupeng +* @date 2019-12-13 +*/ +@Api(tags = "YxWechatUser管理") +@RestController +@RequestMapping("api") +public class YxWechatUserController { + + @Autowired + private YxWechatUserService yxWechatUserService; + + @Log("查询YxWechatUser") + @ApiOperation(value = "查询YxWechatUser") + @GetMapping(value = "/yxWechatUser") + @PreAuthorize("hasAnyRole('ADMIN','YXWECHATUSER_ALL','YXWECHATUSER_SELECT')") + public ResponseEntity getYxWechatUsers(YxWechatUserQueryCriteria criteria, Pageable pageable){ + return new ResponseEntity(yxWechatUserService.queryAll(criteria,pageable),HttpStatus.OK); + } + + @Log("新增YxWechatUser") + @ApiOperation(value = "新增YxWechatUser") + @PostMapping(value = "/yxWechatUser") + @PreAuthorize("hasAnyRole('ADMIN','YXWECHATUSER_ALL','YXWECHATUSER_CREATE')") + public ResponseEntity create(@Validated @RequestBody YxWechatUser resources){ + return new ResponseEntity(yxWechatUserService.create(resources),HttpStatus.CREATED); + } + + @Log("修改YxWechatUser") + @ApiOperation(value = "修改YxWechatUser") + @PutMapping(value = "/yxWechatUser") + @PreAuthorize("hasAnyRole('ADMIN','YXWECHATUSER_ALL','YXWECHATUSER_EDIT')") + public ResponseEntity update(@Validated @RequestBody YxWechatUser resources){ + yxWechatUserService.update(resources); + return new ResponseEntity(HttpStatus.NO_CONTENT); + } + + @Log("删除YxWechatUser") + @ApiOperation(value = "删除YxWechatUser") + @DeleteMapping(value = "/yxWechatUser/{uid}") + @PreAuthorize("hasAnyRole('ADMIN','YXWECHATUSER_ALL','YXWECHATUSER_DELETE')") + public ResponseEntity delete(@PathVariable Integer uid){ + yxWechatUserService.delete(uid); + return new ResponseEntity(HttpStatus.OK); + } +} \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/wechat/service/YxWechatUserService.java b/yshop-shop/src/main/java/co/yixiang/modules/wechat/service/YxWechatUserService.java new file mode 100644 index 00000000..014a1b8b --- /dev/null +++ b/yshop-shop/src/main/java/co/yixiang/modules/wechat/service/YxWechatUserService.java @@ -0,0 +1,66 @@ +package co.yixiang.modules.wechat.service; + +import co.yixiang.modules.wechat.domain.YxWechatUser; +import co.yixiang.modules.wechat.service.dto.YxWechatUserDTO; +import co.yixiang.modules.wechat.service.dto.YxWechatUserQueryCriteria; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.data.domain.Pageable; +import java.util.Map; +import java.util.List; + +/** +* @author hupeng +* @date 2019-12-13 +*/ +//@CacheConfig(cacheNames = "yxWechatUser") +public interface YxWechatUserService { + + /** + * 查询数据分页 + * @param criteria + * @param pageable + * @return + */ + //@Cacheable + Map queryAll(YxWechatUserQueryCriteria criteria, Pageable pageable); + + /** + * 查询所有数据不分页 + * @param criteria + * @return + */ + //@Cacheable + List queryAll(YxWechatUserQueryCriteria criteria); + + /** + * 根据ID查询 + * @param uid + * @return + */ + //@Cacheable(key = "#p0") + YxWechatUserDTO findById(Integer uid); + + /** + * 创建 + * @param resources + * @return + */ + //@CacheEvict(allEntries = true) + YxWechatUserDTO create(YxWechatUser resources); + + /** + * 编辑 + * @param resources + */ + //@CacheEvict(allEntries = true) + void update(YxWechatUser resources); + + /** + * 删除 + * @param uid + */ + //@CacheEvict(allEntries = true) + void delete(Integer uid); +} \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/wechat/service/dto/YxWechatUserDTO.java b/yshop-shop/src/main/java/co/yixiang/modules/wechat/service/dto/YxWechatUserDTO.java new file mode 100644 index 00000000..e333b61c --- /dev/null +++ b/yshop-shop/src/main/java/co/yixiang/modules/wechat/service/dto/YxWechatUserDTO.java @@ -0,0 +1,86 @@ +package co.yixiang.modules.wechat.service.dto; + +import lombok.Data; +import java.math.BigDecimal; +import java.io.Serializable; + + +/** +* @author hupeng +* @date 2019-12-13 +*/ +@Data +public class YxWechatUserDTO implements Serializable { + + // 微信用户id + private Integer uid; + + // 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段 + private String unionid; + + // 用户的标识,对当前公众号唯一 + private String openid; + + // 小程序唯一身份ID + private String routineOpenid; + + // 用户的昵称 + private String nickname; + + // 用户头像 + private String headimgurl; + + // 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知 + private Integer sex; + + // 用户所在城市 + private String city; + + // 用户的语言,简体中文为zh_CN + private String language; + + // 用户所在省份 + private String province; + + // 用户所在国家 + private String country; + + // 公众号运营者对粉丝的备注,公众号运营者可在微信公众平台用户管理界面对粉丝添加备注 + private String remark; + + // 用户所在的分组ID(兼容旧的用户分组接口) + private Integer groupid; + + // 用户被打上的标签ID列表 + private String tagidList; + + // 用户是否订阅该公众号标识 + private Integer subscribe; + + // 关注公众号时间 + private Integer subscribeTime; + + // 添加时间 + private Integer addTime; + + // 一级推荐人 + private Integer stair; + + // 二级推荐人 + private Integer second; + + // 一级推荐人订单 + private Integer orderStair; + + // 二级推荐人订单 + private Integer orderSecond; + + // 佣金 + private BigDecimal nowMoney; + + // 小程序用户会话密匙 + private String sessionKey; + + // 用户类型 + private String userType; +} \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/wechat/service/dto/YxWechatUserQueryCriteria.java b/yshop-shop/src/main/java/co/yixiang/modules/wechat/service/dto/YxWechatUserQueryCriteria.java new file mode 100644 index 00000000..dff6c909 --- /dev/null +++ b/yshop-shop/src/main/java/co/yixiang/modules/wechat/service/dto/YxWechatUserQueryCriteria.java @@ -0,0 +1,13 @@ +package co.yixiang.modules.wechat.service.dto; + +import lombok.Data; +import java.math.BigDecimal; +import co.yixiang.annotation.Query; + +/** +* @author hupeng +* @date 2019-12-13 +*/ +@Data +public class YxWechatUserQueryCriteria{ +} \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/wechat/service/impl/YxWechatUserServiceImpl.java b/yshop-shop/src/main/java/co/yixiang/modules/wechat/service/impl/YxWechatUserServiceImpl.java new file mode 100644 index 00000000..13c6a3a1 --- /dev/null +++ b/yshop-shop/src/main/java/co/yixiang/modules/wechat/service/impl/YxWechatUserServiceImpl.java @@ -0,0 +1,75 @@ +package co.yixiang.modules.wechat.service.impl; + +import co.yixiang.modules.wechat.domain.YxWechatUser; +import co.yixiang.utils.ValidationUtil; +import co.yixiang.modules.wechat.repository.YxWechatUserRepository; +import co.yixiang.modules.wechat.service.YxWechatUserService; +import co.yixiang.modules.wechat.service.dto.YxWechatUserDTO; +import co.yixiang.modules.wechat.service.dto.YxWechatUserQueryCriteria; +import co.yixiang.modules.wechat.service.mapper.YxWechatUserMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import java.util.Optional; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import co.yixiang.utils.PageUtil; +import co.yixiang.utils.QueryHelp; +import java.util.List; +import java.util.Map; + +/** +* @author hupeng +* @date 2019-12-13 +*/ +@Service +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) +public class YxWechatUserServiceImpl implements YxWechatUserService { + + @Autowired + private YxWechatUserRepository yxWechatUserRepository; + + @Autowired + private YxWechatUserMapper yxWechatUserMapper; + + @Override + public Map queryAll(YxWechatUserQueryCriteria criteria, Pageable pageable){ + Page page = yxWechatUserRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); + return PageUtil.toPage(page.map(yxWechatUserMapper::toDto)); + } + + @Override + public List queryAll(YxWechatUserQueryCriteria criteria){ + return yxWechatUserMapper.toDto(yxWechatUserRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); + } + + @Override + public YxWechatUserDTO findById(Integer uid) { + Optional yxWechatUser = yxWechatUserRepository.findById(uid); + ValidationUtil.isNull(yxWechatUser,"YxWechatUser","uid",uid); + return yxWechatUserMapper.toDto(yxWechatUser.get()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public YxWechatUserDTO create(YxWechatUser resources) { + return yxWechatUserMapper.toDto(yxWechatUserRepository.save(resources)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(YxWechatUser resources) { + Optional optionalYxWechatUser = yxWechatUserRepository.findById(resources.getUid()); + ValidationUtil.isNull( optionalYxWechatUser,"YxWechatUser","id",resources.getUid()); + YxWechatUser yxWechatUser = optionalYxWechatUser.get(); + yxWechatUser.copy(resources); + yxWechatUserRepository.save(yxWechatUser); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(Integer uid) { + yxWechatUserRepository.deleteById(uid); + } +} \ No newline at end of file diff --git a/yshop-shop/src/main/java/co/yixiang/modules/wechat/service/mapper/YxWechatUserMapper.java b/yshop-shop/src/main/java/co/yixiang/modules/wechat/service/mapper/YxWechatUserMapper.java new file mode 100644 index 00000000..f6f68dda --- /dev/null +++ b/yshop-shop/src/main/java/co/yixiang/modules/wechat/service/mapper/YxWechatUserMapper.java @@ -0,0 +1,16 @@ +package co.yixiang.modules.wechat.service.mapper; + +import co.yixiang.mapper.EntityMapper; +import co.yixiang.modules.wechat.domain.YxWechatUser; +import co.yixiang.modules.wechat.service.dto.YxWechatUserDTO; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +/** +* @author hupeng +* @date 2019-12-13 +*/ +@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface YxWechatUserMapper extends EntityMapper { + +} \ No newline at end of file diff --git a/yshop-system/src/main/java/co/yixiang/modules/monitor/service/impl/RedisServiceImpl.java b/yshop-system/src/main/java/co/yixiang/modules/monitor/service/impl/RedisServiceImpl.java index 577a1ea2..5c98ec37 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/monitor/service/impl/RedisServiceImpl.java +++ b/yshop-system/src/main/java/co/yixiang/modules/monitor/service/impl/RedisServiceImpl.java @@ -38,7 +38,9 @@ public class RedisServiceImpl implements RedisService { // 过滤掉权限的缓存 if (s.toString().indexOf("role::loadPermissionByUser") != -1 || s.toString().indexOf("user::loadUserByUsername") != -1 - || s.toString().indexOf("wechat") != -1 || s.toString().indexOf("wxpay") != -1) { + || s.toString().indexOf("wechat") != -1 + || s.toString().indexOf("wxpay") != -1 + || s.toString().indexOf("site_url") != -1) { continue; } DataType dataType = redisTemplate.type(s.toString()); diff --git a/yshop-system/src/main/java/co/yixiang/modules/system/rest/MenuController.java b/yshop-system/src/main/java/co/yixiang/modules/system/rest/MenuController.java index 202e7c94..a60ff16e 100644 --- a/yshop-system/src/main/java/co/yixiang/modules/system/rest/MenuController.java +++ b/yshop-system/src/main/java/co/yixiang/modules/system/rest/MenuController.java @@ -75,7 +75,7 @@ public class MenuController { @PostMapping(value = "/menus") @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_CREATE')") public ResponseEntity create(@Validated @RequestBody Menu resources){ - ////if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); + //if(StrUtil.isNotEmpty("22")) throw new BadRequestException("演示环境禁止操作"); if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); }