From eb5d7885fa9e4bd20c0827eec9b4cdd48c47b509 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 07 一月 2025 09:11:20 +0800
Subject: [PATCH] 修改bug
---
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java | 61 +
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java | 1
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPermissionServiceImpl.java | 14
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/TaskUtil.java | 11
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShareController.java | 2
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ShoppingCartPayment.java | 2
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/SeckillActivityInfoServiceImpl.java | 29
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java | 24
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BaseSettingController.java | 10
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 234 ++++++++
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/VipSettingServiceImpl.java | 22
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java | 4
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserAddressController.java | 6
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ConfirmOrder.java | 2
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/payment/PaymentUtil.java | 7
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponInfoClientFallbackFactory.java | 5
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserPointClient.java | 10
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java | 3
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/UserShopService.java | 11
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/VipSettingService.java | 1
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/payment/PaymentUtil.java | 7
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/ShoppingCart.java | 4
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java | 14
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/VipSettingServiceImpl.java | 73 --
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserPointFallbackFactory.java | 7
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java | 163 ++++--
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/VipSettingService.java | 1
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/TransferPoint.java | 19
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java | 11
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java | 105 ++--
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/task/TaskUtil.java | 12
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java | 34
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserShopServiceImpl.java | 8
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ShoppingCartService.java | 2
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java | 12
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java | 52 ++
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java | 27
ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml | 32
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/RefundPassServiceImpl.java | 18
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java | 2
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java | 11
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java | 57 +
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/UserPointService.java | 3
ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsMapper.xml | 54 +-
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/GoodsMapper.java | 3
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/SeckillActivityVO.java | 3
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/payment/PaymentUtil.java | 9
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java | 20
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java | 2
ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml | 2
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponInfoClient.java | 9
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java | 215 +++++++-
52 files changed, 1,006 insertions(+), 444 deletions(-)
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserPointFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserPointFallbackFactory.java
index 96ac46e..e282ec1 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserPointFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/UserPointFallbackFactory.java
@@ -5,6 +5,8 @@
import com.ruoyi.common.core.domain.R;
import org.springframework.cloud.openfeign.FallbackFactory;
+import java.util.List;
+
/**
* @author zhibing.pu
* @Date 2024/12/2 15:04
@@ -17,6 +19,11 @@
public R saveUserPoint(UserPoint userPoint) {
return R.fail("保存积分流水记录失败:" + cause.getMessage());
}
+
+ @Override
+ public R<List<UserPoint>> getUserPointList(UserPoint userPoint) {
+ return R.fail("获取积分变动明细失败:" + cause.getMessage());
+ }
};
}
}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserPointClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserPointClient.java
index c7af699..478b03f 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserPointClient.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/UserPointClient.java
@@ -8,6 +8,8 @@
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
+import java.util.List;
+
/**
* @author zhibing.pu
* @Date 2024/12/2 15:04
@@ -23,4 +25,12 @@
@PostMapping("/user-point/saveUserPoint")
R saveUserPoint(@RequestBody UserPoint userPoint);
+
+ /**
+ * 获取积分变动明细
+ * @param userPoint
+ * @return
+ */
+ @PostMapping("/user-point/getUserPointList")
+ R<List<UserPoint>> getUserPointList(@RequestBody UserPoint userPoint);
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java
index 7b9b5a2..5537061 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/Order.java
@@ -170,6 +170,18 @@
@ApiModelProperty(value = "预计提货时间")
@TableField("expected_delivery_time")
private String expectedDeliveryTime;
+
+ @ApiModelProperty("退款状态(1=退款中,2=已退款)")
+ @TableField("refund_status")
+ private Integer refundStatus;
+
+ @ApiModelProperty("退款流水号")
+ @TableField("refund_code")
+ private String refundCode;
+
+ @ApiModelProperty("退款时间")
+ @TableField("refund_time")
+ private LocalDateTime refundTime;
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/ShoppingCart.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/ShoppingCart.java
index 11b064f..1a7e25e 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/ShoppingCart.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/ShoppingCart.java
@@ -27,4 +27,8 @@
private Integer goodsId;
@ApiModelProperty("数量")
private Integer number;
+ @ApiModelProperty("购买类型(1=普通商品,2=秒杀商品)")
+ private Integer type;
+ @ApiModelProperty("状态(0=临时数据,1=购物车数据)")
+ private Integer status;
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ConfirmOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ConfirmOrder.java
index 4983fe5..1508b5c 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ConfirmOrder.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ConfirmOrder.java
@@ -13,7 +13,7 @@
public class ConfirmOrder {
@ApiModelProperty(value = "购买方式(1=购物车,2=商品详情)", required = true)
private Integer position;
- @ApiModelProperty(value = "购物车数据id,数量 JSON[{id:1212,num:2}]", required = true)
+ @ApiModelProperty(value = "购物车数据id,数量 JSON[{id:1212,num:2,type:1}]", required = true, notes = "type值取值范围(1=普通商品,2=秒杀商品)")
private String goodsJson;
@ApiModelProperty(value = "支付方式(1=现金,2=积分)", required = true)
private Integer paymentType;
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java
index 922e250..bbb1c05 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/MyShoppingCartVo.java
@@ -15,6 +15,8 @@
public class MyShoppingCartVo {
@ApiModelProperty("数据id")
private String id;
+ @ApiModelProperty("购买类型(1=普通商品,2=秒杀商品)")
+ private Integer type;
@ApiModelProperty("商品id")
private Integer goodsId;
@ApiModelProperty("封面图")
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ShoppingCartPayment.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ShoppingCartPayment.java
index 056104b..772b6ad 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ShoppingCartPayment.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/ShoppingCartPayment.java
@@ -11,7 +11,7 @@
@Data
@ApiModel
public class ShoppingCartPayment {
- @ApiModelProperty(value = "购物车数据id,数量 JSON[{id:1212,num:2}]", required = true)
+ @ApiModelProperty(value = "购物车数据id,数量 JSON[{id:1212,num:2,type:1}]", required = true)
private String goodsJson;
@ApiModelProperty(value = "支付方式(1=微信,2=账户余额,3=积分)", required = true)
private Integer paymentType;
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java
index df0aada..f81f0e7 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java
@@ -149,6 +149,10 @@
@TableField(exist = false)
private Integer showStatus;
+ @TableField(exist = false)
+ private String payMethod;
+
+
public String getIdStr() {
return String.valueOf(id);
}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponInfoClientFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponInfoClientFallbackFactory.java
index b587851..fc091d0 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponInfoClientFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponInfoClientFallbackFactory.java
@@ -19,6 +19,11 @@
public R<List<CouponInfo>> getCouponInfoList(List<Integer> ids) {
return R.fail("根据id集合获取优惠券数据失败:" + cause.getMessage());
}
+
+ @Override
+ public R<List<CouponInfo>> getCouponInfoByPersonType(Integer personType) {
+ return R.fail("根据类型获取有效优惠券列表失败:" + cause.getMessage());
+ }
};
}
}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponInfoClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponInfoClient.java
index 1b447e5..6d36de0 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponInfoClient.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponInfoClient.java
@@ -25,4 +25,13 @@
*/
@PostMapping("/coupon-info/getCouponInfoList")
R<List<CouponInfo>> getCouponInfoList(@RequestParam("ids") List<Integer> ids);
+
+
+ /**
+ * 根据类型获取有效优惠券列表
+ * @param personType
+ * @return
+ */
+ @PostMapping("/coupon-info/getCouponInfoByPersonType")
+ R<List<CouponInfo>> getCouponInfoByPersonType(@RequestParam("personType") Integer personType);
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
index 7114d60..00152ac 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
@@ -22,7 +22,7 @@
* @param userId 用户ID
* @return 菜单列表
*/
- public List<SysMenu> selectMenuList(Long userId);
+ List<SysMenu> selectMenuList(Long userId);
/**
* 根据用户查询系统菜单列表
@@ -31,7 +31,7 @@
* @param userId 用户ID
* @return 菜单列表
*/
- public List<SysMenu> selectMenuList(SysMenu menu, Long userId);
+ List<SysMenu> selectMenuList(SysMenu menu, Long userId);
/**
* 根据用户ID查询权限
@@ -39,7 +39,7 @@
* @param userId 用户ID
* @return 权限列表
*/
- public Set<String> selectMenuPermsByUserId(Long userId);
+ Set<String> selectMenuPermsByUserId(Long userId);
/**
* 根据角色ID查询权限
@@ -47,7 +47,7 @@
* @param roleId 角色ID
* @return 权限列表
*/
- public Set<String> selectMenuPermsByRoleId(Long roleId);
+ Set<String> selectMenuPermsByRoleId(Long roleId);
/**
* 根据用户ID查询菜单树信息
@@ -55,7 +55,7 @@
* @param userId 用户ID
* @return 菜单列表
*/
- public List<SysMenu> selectMenuTreeByUserId(Long userId);
+ List<SysMenu> selectMenuTreeByUserId(Long userId);
/**
* 根据角色ID查询菜单树信息
@@ -63,7 +63,7 @@
* @param roleId 角色ID
* @return 选中菜单列表
*/
- public List<Long> selectMenuListByRoleId(Long roleId);
+ List<Long> selectMenuListByRoleId(Long roleId);
/**
* 构建前端路由所需要的菜单
@@ -71,7 +71,7 @@
* @param menus 菜单列表
* @return 路由列表
*/
- public List<RouterVo> buildMenus(List<SysMenu> menus);
+ List<RouterVo> buildMenus(List<SysMenu> menus);
/**
* 构建前端所需要树结构
@@ -79,7 +79,7 @@
* @param menus 菜单列表
* @return 树结构列表
*/
- public List<SysMenu> buildMenuTree(List<SysMenu> menus);
+ List<SysMenu> buildMenuTree(List<SysMenu> menus);
/**
* 构建前端所需要下拉树结构
@@ -87,7 +87,7 @@
* @param menus 菜单列表
* @return 下拉树结构列表
*/
- public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus);
+ List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus);
/**
* 根据菜单ID查询信息
@@ -95,7 +95,7 @@
* @param menuId 菜单ID
* @return 菜单信息
*/
- public SysMenu selectMenuById(Long menuId);
+ SysMenu selectMenuById(Long menuId);
/**
* 是否存在菜单子节点
@@ -103,7 +103,7 @@
* @param menuId 菜单ID
* @return 结果 true 存在 false 不存在
*/
- public boolean hasChildByMenuId(Long menuId);
+ boolean hasChildByMenuId(Long menuId);
/**
* 查询菜单是否存在角色
@@ -111,7 +111,7 @@
* @param menuId 菜单ID
* @return 结果 true 存在 false 不存在
*/
- public boolean checkMenuExistRole(Long menuId);
+ boolean checkMenuExistRole(Long menuId);
/**
* 新增保存菜单信息
@@ -119,7 +119,7 @@
* @param menu 菜单信息
* @return 结果
*/
- public int insertMenu(SysMenu menu);
+ int insertMenu(SysMenu menu);
/**
* 修改保存菜单信息
@@ -127,7 +127,7 @@
* @param menu 菜单信息
* @return 结果
*/
- public int updateMenu(SysMenu menu);
+ int updateMenu(SysMenu menu);
/**
* 删除菜单管理信息
@@ -135,7 +135,7 @@
* @param menuId 菜单ID
* @return 结果
*/
- public int deleteMenuById(Long menuId);
+ int deleteMenuById(Long menuId);
/**
* 校验菜单名称是否唯一
@@ -143,11 +143,11 @@
* @param menu 菜单信息
* @return 结果
*/
- public boolean checkMenuNameUnique(SysMenu menu);
+ boolean checkMenuNameUnique(SysMenu menu);
List<SysMenus> getAllMenu();
-
+ List<SysMenu> getAllMenu(Integer roleType);
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/UserShopService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/UserShopService.java
index 27b2dff..1109f81 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/UserShopService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/UserShopService.java
@@ -3,9 +3,20 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.system.api.model.UserShop;
+import java.util.List;
+
/**
* @author zhibing.pu
* @Date 2024/12/2 9:39
*/
public interface UserShopService extends IService<UserShop> {
+
+
+ /**
+ * 获取关系数据
+ * @param userId
+ * @param roleType
+ * @return
+ */
+ List<UserShop> getUserShop(Long userId, Integer roleType);
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
index b9d09a4..5701160 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.system.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.constant.UserConstants;
@@ -231,7 +232,7 @@
List<Long> tempList = menus.stream().map(SysMenu::getMenuId).collect(Collectors.toList());
for (Iterator<SysMenu> iterator = menus.iterator(); iterator.hasNext();)
{
- SysMenu menu = (SysMenu) iterator.next();
+ SysMenu menu = iterator.next();
// 如果是顶级节点, 遍历该父节点的所有子节点
if (!tempList.contains(menu.getParentId()))
{
@@ -506,7 +507,7 @@
List<SysMenu> returnList = new ArrayList<SysMenu>();
for (Iterator<SysMenu> iterator = list.iterator(); iterator.hasNext();)
{
- SysMenu t = (SysMenu) iterator.next();
+ SysMenu t = iterator.next();
// 一、根据传入的某个父节点ID,遍历该父节点的所有子节点
if (t.getParentId() == parentId)
{
@@ -546,7 +547,7 @@
Iterator<SysMenu> it = list.iterator();
while (it.hasNext())
{
- SysMenu n = (SysMenu) it.next();
+ SysMenu n = it.next();
if (n.getParentId().longValue() == t.getMenuId().longValue())
{
tlist.add(n);
@@ -573,4 +574,11 @@
return StringUtils.replaceEach(path, new String[] { Constants.HTTP, Constants.HTTPS, Constants.WWW, "." },
new String[] { "", "", "", "/" });
}
+
+
+ @Override
+ public List<SysMenu> getAllMenu(Integer roleType) {
+ return this.list(new LambdaQueryWrapper<SysMenu>().eq(SysMenu::getRoleType, roleType).eq(SysMenu::getVisible, 0)
+ .eq(SysMenu::getStatus, 0));
+ }
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPermissionServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPermissionServiceImpl.java
index 569182e..0a926ba 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPermissionServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPermissionServiceImpl.java
@@ -1,9 +1,11 @@
package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.ruoyi.system.api.domain.SysRole;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.UserShop;
+import com.ruoyi.system.domain.SysMenu;
import com.ruoyi.system.service.ISysMenuService;
import com.ruoyi.system.service.ISysPermissionService;
import com.ruoyi.system.service.ISysRoleService;
@@ -15,6 +17,7 @@
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import java.util.stream.Collectors;
/**
* 用户权限处理
@@ -22,21 +25,19 @@
* @author ruoyi
*/
@Service
-public class SysPermissionServiceImpl implements ISysPermissionService
-{
+public class SysPermissionServiceImpl implements ISysPermissionService {
@Autowired
private ISysRoleService roleService;
@Autowired
private ISysMenuService menuService;
- @Resource
+ @Autowired
private UserShopService userShopService;
/**
* 获取角色数据权限
*
- * @param userId 用户Id
* @return 角色权限信息
*/
@Override
@@ -58,17 +59,20 @@
/**
* 获取菜单数据权限
*
- * @param userId 用户Id
* @return 菜单权限信息
*/
@Override
public Set<String> getMenuPermission(SysUser user)
{
Set<String> perms = new HashSet<String>();
+ List<UserShop> userShop = userShopService.getUserShop(user.getUserId(), 1);
// 管理员拥有所有权限
if (user.isAdmin())
{
perms.add("*:*:*");
+ }else if(user.getRoleType() == 2 && null != userShop && userShop.size() > 0){
+ List<SysMenu> list = menuService.getAllMenu(2);
+ return list.stream().map(SysMenu::getPath).collect(Collectors.toSet());
}
else
{
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserShopServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserShopServiceImpl.java
index 95cc931..5267a1e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserShopServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserShopServiceImpl.java
@@ -1,10 +1,13 @@
package com.ruoyi.system.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.system.api.model.UserShop;
import com.ruoyi.system.mapper.UserShopMapper;
import com.ruoyi.system.service.UserShopService;
import org.springframework.stereotype.Service;
+
+import java.util.List;
/**
* @author zhibing.pu
@@ -13,4 +16,9 @@
@Service
public class UserShopServiceImpl extends ServiceImpl<UserShopMapper, UserShop> implements UserShopService {
+
+ @Override
+ public List<UserShop> getUserShop(Long userId, Integer roleType) {
+ return this.list(new LambdaQueryWrapper<UserShop>().eq(UserShop::getUserId, userId).eq(UserShop::getRoleType, roleType));
+ }
}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
index af03a28..db0c2d6 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
@@ -99,7 +99,6 @@
}
- @ResponseBody
@PostMapping("/getAppUserById")
public AppUser getAppUserById(@RequestParam("id") Long id) {
return appUserService.getById(id);
@@ -465,16 +464,6 @@
AppUser byId = appUserService.getById(id);
byId.setVipId(byId.getVipId() - 1);
appUserService.updateById(byId);
- //执行降级标记代码
- new Thread(new Runnable() {
- @Override
- public void run() {
- {
- vipSettingService.downUsers();
- }
- }
- }
- ).start();
return R.ok();
}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserAddressController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserAddressController.java
index c8b2c71..67e2f25 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserAddressController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserAddressController.java
@@ -62,9 +62,8 @@
@ResponseBody
@PostMapping("/add")
@ApiOperation(value = "添加", tags = {"小程序-个人中心首页-我的地址"})
- public R add(@RequestBody UserAddress userAddress){
+ public R<String> add(@RequestBody UserAddress userAddress){
Long userId = tokenService.getLoginUserApplet().getUserid();
-
if (userAddress.getIsDefault()==1){
List<UserAddress> list = userAddressService.lambdaQuery().eq(UserAddress::getAppUserId, userId).list();
for (UserAddress userAddress1 : list) {
@@ -72,10 +71,9 @@
}
userAddressService.updateBatchById(list);
}
-
userAddress.setAppUserId(userId);
userAddressService.save(userAddress);
- return R.ok();
+ return R.ok(userAddress.getId().toString());
}
@ResponseBody
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java
index 9afbe26..dc5612c 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java
@@ -1,11 +1,13 @@
package com.ruoyi.account.controller;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.account.api.model.UserPoint;
import com.ruoyi.account.service.AppUserService;
import com.ruoyi.account.service.UserPointService;
+import com.ruoyi.account.vo.TransferPoint;
import com.ruoyi.account.vo.UserPointDetailVO;
import com.ruoyi.account.vo.UserPointStatistics;
import com.ruoyi.account.vo.UserPointVO;
@@ -92,9 +94,8 @@
*/
@PostMapping("/transferPoint")
@ApiOperation("转赠积分")
- public R<Void> transferPoint(@ApiParam("积分") @RequestParam BigDecimal point, @ApiParam("手机号") @RequestParam String phone) {
- userPointService.transferPoint(point, phone);
- return R.ok();
+ public R<Void> transferPoint(@RequestBody TransferPoint transferPoint) {
+ return userPointService.transferPoint(transferPoint.getPoint(), transferPoint.getPhone());
}
@@ -152,5 +153,25 @@
}
+ /**
+ * 获取积分变动记录
+ * @param userPoint
+ * @return
+ */
+ @PostMapping("/getUserPointList")
+ public R<List<UserPoint>> getUserPointList(@RequestBody UserPoint userPoint){
+ LambdaQueryWrapper<UserPoint> queryWrapper = new LambdaQueryWrapper<>();
+ if(null != userPoint.getType()){
+ queryWrapper.eq(UserPoint::getType, userPoint.getType());
+ }
+ if(null != userPoint.getObjectId()){
+ queryWrapper.eq(UserPoint::getObjectId, userPoint.getObjectId());
+ }
+ if(null != userPoint.getAppUserId()){
+ queryWrapper.eq(UserPoint::getAppUserId, userPoint.getAppUserId());
+ }
+ List<UserPoint> list = userPointService.list(queryWrapper);
+ return R.ok(list);
+ }
}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/UserPointService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/UserPointService.java
index 149ea11..de8d44b 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/UserPointService.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/UserPointService.java
@@ -9,6 +9,7 @@
import com.ruoyi.account.vo.UserPointDetailVO;
import com.ruoyi.account.vo.UserPointStatistics;
import com.ruoyi.account.vo.UserPointVO;
+import com.ruoyi.common.core.domain.R;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
@@ -30,7 +31,7 @@
List<UserPointDetailVO> getUserPointDetail(Long userId, LocalDateTime startTime, LocalDateTime endTime, Integer type);
- void transferPoint(BigDecimal point, String phone);
+ R transferPoint(Integer point, String phone);
UserPointStatistics getStatistics(UserPoint userPoint);
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/VipSettingService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/VipSettingService.java
index d6831ce..c937b2f 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/VipSettingService.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/VipSettingService.java
@@ -8,5 +8,4 @@
VipSetting getVipSettingByUserId(Long appUserId);
- void downUsers();
}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
index 9d47a7a..c584e72 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
@@ -3,18 +3,13 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.account.api.model.AppUserShop;
-import com.ruoyi.account.api.model.UserChangeLog;
-import com.ruoyi.account.api.model.UserPoint;
+import com.ruoyi.account.api.model.*;
import com.ruoyi.account.mapper.AppUserMapper;
-import com.ruoyi.account.api.model.AppUser;
-import com.ruoyi.account.service.AppUserService;
-import com.ruoyi.account.service.AppUserShopService;
-import com.ruoyi.account.service.UserChangeLogService;
-import com.ruoyi.account.service.UserPointService;
+import com.ruoyi.account.service.*;
import com.ruoyi.account.util.SMSUtil;
import com.ruoyi.account.util.tencentMap.TencentMapUtil;
import com.ruoyi.account.util.weChat.EnvVersion;
@@ -25,14 +20,8 @@
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.service.TokenService;
-import com.ruoyi.other.api.domain.PointSetting;
-import com.ruoyi.other.api.domain.Region;
-import com.ruoyi.other.api.domain.Shop;
-import com.ruoyi.other.api.domain.VipSetting;
-import com.ruoyi.other.api.feignClient.PointSettingClient;
-import com.ruoyi.other.api.feignClient.RegionClient;
-import com.ruoyi.other.api.feignClient.ShopClient;
-import com.ruoyi.other.api.feignClient.VipSettingClient;
+import com.ruoyi.other.api.domain.*;
+import com.ruoyi.other.api.feignClient.*;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.feignClient.SysUserClient;
import com.ruoyi.system.api.model.LoginUser;
@@ -105,6 +94,12 @@
@Resource
private RegionClient regionClient;
+
+ @Resource
+ private CouponInfoClient couponInfoClient;
+
+ @Resource
+ private UserCouponService userCouponService;
/**
@@ -366,6 +361,26 @@
userPoint.setCreateTime(LocalDateTime.now());
userPoint.setAppUserId(appUser.getId());
userPointService.save(userPoint);
+ }
+ //获取优惠券
+ if(0 == old){
+ List<CouponInfo> list = couponInfoClient.getCouponInfoByPersonType(4).getData();
+ for (CouponInfo couponInfo : list) {
+ UserCoupon userCoupon = new UserCoupon();
+ userCoupon.setDelFlag(0);
+ userCoupon.setCreateTime(LocalDateTime.now());
+ userCoupon.setAppUserId(appUser.getId());
+ userCoupon.setCouponId(couponInfo.getId());
+ LocalDateTime start = couponInfo.getPeriodStartTime().atTime(0, 0, 0);
+ LocalDateTime end = couponInfo.getPeriodEndTime().atTime(23, 59, 59);
+ if(couponInfo.getPeriodType() == 2){
+ start = LocalDateTime.now();
+ end = start.plusDays(couponInfo.getPeriodDays());
+ }
+ userCoupon.setStartTime(start);
+ userCoupon.setEndTime(end);
+ userCouponService.save(userCoupon);
+ }
}
//变更等级
vipUpgrade(appUser.getId());
@@ -716,14 +731,14 @@
List<AppUser> list = this.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getVipId, 1).eq(AppUser::getDelFlag, 0).isNotNull(AppUser::getInviteUserId)
.eq(AppUser::getStatus, 1).last(" and ADDDATE(create_time,INTERVAL " + vipCancelDay + " DAY) <= now()"));
for (AppUser appUser : list) {
- appUser.setInviteUserId(null);
- appUser.setShopId(null);
- this.updateById(appUser);
+ UpdateWrapper<AppUser> updateWrapper = new UpdateWrapper<>();
+ updateWrapper.set("invite_user_id", null).set("shop_id", null).eq("id", appUser.getId());
+ this.update(updateWrapper);
}
//可更换推广人
- list = this.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getVipId, 1).eq(AppUser::getDelFlag, 0).eq(AppUser::getChangePromoter, 0)
- .isNull(AppUser::getLastShopTime).eq(AppUser::getStatus, 1).last(" and ADDDATE(create_time,INTERVAL " + vipChangeDay + " DAY) <= now()"));
+ list = this.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getDelFlag, 0).eq(AppUser::getChangePromoter, 0)
+ .eq(AppUser::getStatus, 1).last(" and ADDDATE(ifnull(last_shop_time, create_time),INTERVAL " + vipChangeDay + " DAY) <= now()"));
for (AppUser appUser : list) {
appUser.setChangePromoter(1);
this.updateById(appUser);
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java
index 15e3ad8..8223d51 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java
@@ -15,6 +15,7 @@
import com.ruoyi.account.vo.UserPointDetailVO;
import com.ruoyi.account.vo.UserPointStatistics;
import com.ruoyi.account.vo.UserPointVO;
+import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.PhoneNumberValidator;
import com.ruoyi.common.security.service.TokenService;
@@ -54,6 +55,11 @@
private VipSettingService vipSettingService;
@Resource
private PointSettingService pointSettingService;
+ @Resource
+ private UserPointService userPointService;
+
+
+
@Override
public UserPointVO getUserPoint(Long userId) {
@@ -94,9 +100,9 @@
@Override
@Transactional
- public void transferPoint(BigDecimal point, String phone) {
+ public R transferPoint(Integer point, String phone) {
if (!PhoneNumberValidator.isValidChinaPhoneNumber(phone)) {
- throw new ServiceException("无效的电话号码");
+ return R.fail("无效的电话号码");
}
LoginUser loginUserApplet = tokenService.getLoginUserApplet();
@@ -104,44 +110,65 @@
VipSetting vipSetting = vipSettingService.getVipSettingByUserId(userid);
if (vipSetting == null) {
- throw new ServiceException("VIP 设置未找到");
+ return R.fail("VIP 设置未找到");
}
if (vipSetting.getId() == 0 && vipSetting.getVipGiftRole() == 0) {
- throw new ServiceException("转赠积分权限未开启");
+ return R.fail("转赠积分权限未开启");
}
AppUser appUser = appUserService.getById(userid);
if (appUser == null) {
- throw new ServiceException("用户未找到");
+ return R.fail("用户未找到");
}
PointSetting pointSetting = pointSettingService.getPointSettingByAppUserId(userid);
if (pointSetting == null) {
- throw new ServiceException("积分设置未找到");
+ return R.fail("积分设置未找到");
}
// 可转赠积分总数
- long adjustedPoint = appUser.getAvailablePoint();
-
- if (point.compareTo(new BigDecimal(adjustedPoint)) > 0) {
- throw new ServiceException("转赠积分不足");
+ Integer transferablePoint = appUser.getTransferablePoint();
+ if (point > transferablePoint) {
+ return R.fail("转赠积分不足");
}
AppUser appUserForPhoe = appUserService.getOne(new LambdaQueryWrapper<AppUser>()
.eq(AppUser::getPhone, phone));
if (appUserForPhoe == null) {
- throw new ServiceException("目标用户未找到");
+ return R.fail("目标用户未找到");
}
-
- appUserForPhoe.setLavePoint(appUserForPhoe.getLavePoint() + point.intValue());
- appUserForPhoe.setTotalPoint(appUserForPhoe.getTotalPoint() + point.intValue());
+ Integer lavePoint1 = appUserForPhoe.getLavePoint();
+ appUserForPhoe.setLavePoint(appUserForPhoe.getLavePoint() + point);
+ appUserForPhoe.setTotalPoint(appUserForPhoe.getTotalPoint() + point);
+ appUserForPhoe.setTransferablePoint(transferablePoint + point);
+ appUserForPhoe.setAvailablePoint(appUserForPhoe.getAvailablePoint() + point);
appUserService.updateById(appUserForPhoe);
+ //构建积分流水记录
+ UserPoint userPoint = new UserPoint();
+ userPoint.setType(12);
+ userPoint.setHistoricalPoint(lavePoint1);
+ userPoint.setVariablePoint(point);
+ userPoint.setBalance(appUserForPhoe.getLavePoint());
+ userPoint.setCreateTime(LocalDateTime.now());
+ userPoint.setAppUserId(appUserForPhoe.getId());
+ userPointService.save(userPoint);
Integer lavePoint = appUser.getLavePoint();
- appUser.setLavePoint(lavePoint - point.intValue());
+ appUser.setLavePoint(lavePoint - point);
Integer totalPoint = appUser.getTotalPoint();
- appUser.setTotalPoint(totalPoint - point.intValue());
+ appUser.setTotalPoint(totalPoint - point);
+ appUser.setTransferablePoint(appUser.getTransferablePoint() - point);
+ appUser.setAvailablePoint(appUser.getAvailablePoint() - point);
appUserService.updateById(appUser);
- log.info("积分转赠完成,用户ID: {}, 新积分: {}", appUserForPhoe.getId(), appUserForPhoe.getLavePoint());
+ //构建积分流水记录
+ userPoint = new UserPoint();
+ userPoint.setType(13);
+ userPoint.setHistoricalPoint(lavePoint);
+ userPoint.setVariablePoint(point);
+ userPoint.setBalance(appUser.getLavePoint());
+ userPoint.setCreateTime(LocalDateTime.now());
+ userPoint.setAppUserId(appUser.getId());
+ userPointService.save(userPoint);
+ return R.ok();
}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/VipSettingServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/VipSettingServiceImpl.java
index cd509c3..0ed0de8 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/VipSettingServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/VipSettingServiceImpl.java
@@ -54,78 +54,5 @@
return getVipSettingById(appUser.getVipId());
}
- @Override
- public void downUsers() {
- //查出可能需要降级的人员
- List<Integer> vipIds = new ArrayList<>();
- vipIds.add(5);
- vipIds.add(6);
- vipIds.add(7);
- List<AppUser> list = appUserService.lambdaQuery().in(AppUser::getVipId, vipIds).list();
- VipSetting vipSetting5 = vipSettingClient.getVipSetting(5).getData();
- VipSetting vipSetting6 = vipSettingClient.getVipSetting(6).getData();
- VipSetting vipSetting7 = vipSettingClient.getVipSetting(7).getData();
- LocalDate now = LocalDate.now();
- //循环判断是否要展示
- if (list.size()>0){
- for (AppUser appUser : list){
- boolean danger = false;
- if (appUser.getVipId()==5){
- extracted(vipSetting5, now,danger);
- }
- if (appUser.getVipId()==6){
- extracted(vipSetting6, now,danger);
- }
- if (appUser.getVipId()==7){
- extracted(vipSetting7, now,danger);
- }
- if (danger){
- appUser.setIsDanger(1);
- }else {
- appUser.setIsDanger(0);
- }
- }
- appUserService.updateBatchById(list);
- }
- }
- private void extracted(VipSetting vipSetting5, LocalDate now,boolean danger) {
-
- if (vipSetting5.getKeepBuyPoint()!=null){
- //如果消费不为空,查找对应天数的消费积分
- List<UserPoint> list1 = userPointService.lambdaQuery().eq(UserPoint::getType,1).ge(UserPoint::getCreateTime, now.minusDays(vipSetting5.getKeepBuyDay())).list();
- //如果消费积分小于保级积分,设置用户降级标志并将降级信息
- Integer point = 0;
- for (UserPoint userPoint : list1) {
- point = point+userPoint.getVariablePoint();
- }
- if (point<= vipSetting5.getKeepBuyPoint()){
- danger = true;
- }
- }
- if (vipSetting5.getKeepSharePoint()!=null){
- //如果消费不为空,查找对应天数的消费积分
- List<UserPoint> list1 = userPointService.lambdaQuery().eq(UserPoint::getType,2).ge(UserPoint::getCreateTime, now.minusDays(vipSetting5.getKeepBuyDay())).list();
- //如果消费积分小于保级积分,设置用户降级标志并将降级信息
- Integer point = 0;
- for (UserPoint userPoint : list1) {
- point = point+userPoint.getVariablePoint();
- }
- if (point<= vipSetting5.getKeepBuyPoint()){
- danger = true;
- }
- }
- if (vipSetting5.getKeepShopPoint()!=null){
- //如果消费不为空,查找对应天数的消费积分
- List<UserPoint> list1 = userPointService.lambdaQuery().eq(UserPoint::getType,5).ge(UserPoint::getCreateTime, now.minusDays(vipSetting5.getKeepBuyDay())).list();
- //如果消费积分小于保级积分,设置用户降级标志并将降级信息
- Integer point = 0;
- for (UserPoint userPoint : list1) {
- point = point+userPoint.getVariablePoint();
- }
- if (point<= vipSetting5.getKeepBuyPoint()){
- danger = true;
- }
- }
- }
}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/TaskUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/TaskUtil.java
index 80ab125..8d2d276 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/TaskUtil.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/TaskUtil.java
@@ -17,9 +17,7 @@
@Resource
private AppUserService appUserService;
- @Resource
- private VipSettingService vipSettingService;
-
+
@@ -30,8 +28,6 @@
public void sendVipCoupon(){
//解绑推广人
appUserService.unbindThePromoter();
- //降级检测
- appUserService.demotionDetection();
}
/**
@@ -40,9 +36,8 @@
@Scheduled(cron = "0 0 0 * * *")
public void taskDay(){
try {
-
-
- vipSettingService.downUsers();
+ //降级检测
+ appUserService.demotionDetection();
}catch (Exception e){
e.printStackTrace();
}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/payment/PaymentUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/payment/PaymentUtil.java
index 88ae4d1..3a31f48 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/payment/PaymentUtil.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/payment/PaymentUtil.java
@@ -7,6 +7,7 @@
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.account.util.payment.model.*;
+import com.ruoyi.common.core.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import java.util.*;
@@ -77,7 +78,7 @@
//APPID
body.put("q7_AppId", appId);
//报备商户号
- body.put("qa_TradeMerchantNo", tradeMerchantNo);
+ body.put("qa_TradeMerchantNo", StringUtils.isNotEmpty(tradeMerchantNo) ? tradeMerchantNo : "777168500885852");
String sign = null;
try {
sign = sign(body);
@@ -252,13 +253,13 @@
- public static String sign(JSONObject body) throws Exception{
+ public static String sign(JSONObject body) {
Set<Map.Entry<String, Object>> entries = body.entrySet();
List<Map.Entry<String, Object>> infoIds = new ArrayList<Map.Entry<String, Object>>(entries);
// 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序)
Collections.sort(infoIds, new Comparator<Map.Entry<String, Object>>() {
public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) {
- return (o1.getKey()).toString().compareTo(o2.getKey());
+ return (o1.getKey()).compareTo(o2.getKey());
}
});
// 构造签名键值对的格式
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/TransferPoint.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/TransferPoint.java
new file mode 100644
index 0000000..1c2c58c
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/TransferPoint.java
@@ -0,0 +1,19 @@
+package com.ruoyi.account.vo;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @date 2025/1/6 15:35
+ */
+@Data
+public class TransferPoint {
+ /**
+ * 转增积分
+ */
+ private Integer point;
+ /**
+ * 手机号
+ */
+ private String phone;
+}
diff --git a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml
index 4827216..ee6149e 100644
--- a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml
+++ b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml
@@ -56,7 +56,7 @@
SELECT *
FROM t_app_user ta
<where>
- ta.del_flag = 0
+ ta.del_flag = 0 and ta.status != 3
<if test="null != appUser.name and '' != appUser.name">
and ta.`name` like CONCAT('%',#{appUser.name},'%')
</if>
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
index 25fc793..1fe2e7f 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
@@ -16,6 +16,7 @@
import com.ruoyi.order.model.Order;
import com.ruoyi.order.service.CommissionService;
import com.ruoyi.order.service.OrderService;
+import com.ruoyi.order.util.payment.model.RefundCallbackResult;
import com.ruoyi.order.vo.*;
import com.ruoyi.other.api.domain.BaseSetting;
import com.ruoyi.other.api.feignClient.BaseSettingClient;
@@ -25,7 +26,10 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotBlank;
+import java.io.IOException;
+import java.io.PrintWriter;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@@ -318,5 +322,53 @@
}
+ /**
+ * 订单取消支付回退
+ * @param refundCallbackResult
+ * @param response
+ * @return
+ */
+ @ResponseBody
+ @GetMapping("/refundPayMoneyCallback")
+ public void refundPayMoneyCallback(RefundCallbackResult refundCallbackResult, HttpServletResponse response){
+ R callback = orderService.refundPayMoneyCallback(refundCallbackResult);
+ if(callback.getCode() == 200){
+ response.setStatus(200);
+ PrintWriter out = null;
+ try {
+ out = response.getWriter();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ out.println("success");
+ out.flush();
+ out.close();
+ }
+ }
+
+
+ /**
+ * 取消订单快递费回退
+ * @param refundCallbackResult
+ * @param response
+ */
+ @ResponseBody
+ @GetMapping("/refundExpressPayMoneyCallback")
+ public void refundExpressPayMoneyCallback(RefundCallbackResult refundCallbackResult, HttpServletResponse response){
+ R callback = orderService.refundExpressPayMoneyCallback(refundCallbackResult);
+ if(callback.getCode() == 200){
+ response.setStatus(200);
+ PrintWriter out = null;
+ try {
+ out = response.getWriter();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ out.println("success");
+ out.flush();
+ out.close();
+ }
+ }
+
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java
index da51645..8083049 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ShoppingCartController.java
@@ -169,7 +169,7 @@
@GetMapping("/getGoodsPrice")
public R<Price> getGoodsPrice(Long appUserId, Integer goodsId, Integer shopId){
AppUser appUser = appUserClient.getAppUserById(appUserId);
- Price price = shoppingCartService.getPrice(appUser, goodsId, shopId);
+ Price price = shoppingCartService.getPrice(appUser, goodsId, 1, shopId);
return R.ok(price);
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java
index 0d0cb47..7b32545 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java
@@ -4,6 +4,7 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.order.model.Order;
+import com.ruoyi.order.util.payment.model.RefundCallbackResult;
import com.ruoyi.order.vo.*;
import org.springframework.web.bind.annotation.PathVariable;
@@ -56,9 +57,22 @@
* 返回订单支付金额和回退积分和会员等级
* @param order
*/
- void refundPayMoney(Order order);
-
-
+ R refundPayMoney(Order order);
+
+ /**
+ * 取消订单后回调处理
+ * @return
+ */
+ R refundPayMoneyCallback(RefundCallbackResult refundCallbackResult);
+
+
+ /**
+ * 取消订单快递费回退
+ * @return
+ */
+ R refundExpressPayMoneyCallback(RefundCallbackResult refundCallbackResult);
+
+
/**
* 收货操作
* @param orderId
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ShoppingCartService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ShoppingCartService.java
index 716921a..5fdd626 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ShoppingCartService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/ShoppingCartService.java
@@ -66,7 +66,7 @@
R shoppingCartMaterialFlowPaymentCallback(UniPayCallbackResult uniPayCallbackResult);
- Price getPrice(AppUser appUser, Integer goodsId, Integer shopId);
+ Price getPrice(AppUser appUser, Integer goodsId, Integer type, Integer shopId);
/**
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java
index 3926014..8cb3aca 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java
@@ -143,61 +143,64 @@
bdmdsj_point += orderGood.getBoundShopSuperiorsPoints();
}
//直推上级
- AppUser inviteUser = appUserClient.getAppUserById(appUser.getInviteUserId());
- if(null != inviteUser){
- BigDecimal balance = inviteUser.getBalance();
- Integer lavePoint = inviteUser.getLavePoint();
- if(ztsj_price.compareTo(BigDecimal.ZERO) > 0){
- inviteUser.setTotalDistributionAmount(inviteUser.getTotalDistributionAmount().add(ztsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
- inviteUser.setBalance(inviteUser.getBalance().add(ztsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
- inviteUser.setWithdrawableAmount(inviteUser.getWithdrawableAmount().add(ztsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
- }
- if(ztsj_point > 0){
- PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
- int earnPoint1 = 0;
- //计算可用积分比例
- if(null != pointSetting && 1 == pointSetting.getSharePointOpen()){
- earnPoint1 = new BigDecimal(ztsj_point).multiply(pointSetting.getSharePoint().divide(new BigDecimal(100))).intValue();
+ if(null != appUser.getInviteUserId()){
+ AppUser inviteUser = appUserClient.getAppUserById(appUser.getInviteUserId());
+ if(null != inviteUser){
+ BigDecimal balance = inviteUser.getBalance();
+ Integer lavePoint = inviteUser.getLavePoint();
+ if(ztsj_price.compareTo(BigDecimal.ZERO) > 0){
+ inviteUser.setTotalDistributionAmount(inviteUser.getTotalDistributionAmount().add(ztsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
+ inviteUser.setBalance(inviteUser.getBalance().add(ztsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
+ inviteUser.setWithdrawableAmount(inviteUser.getWithdrawableAmount().add(ztsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN));
}
- inviteUser.setSharePoint(inviteUser.getSharePoint() + ztsj_point);
- inviteUser.setLavePoint(inviteUser.getLavePoint() + ztsj_point);
- inviteUser.setAvailablePoint(inviteUser.getAvailablePoint() + earnPoint1);
- inviteUser.setTotalAvailablePoint(inviteUser.getTotalAvailablePoint() + earnPoint1);
- if(null != pointSetting && 1 == pointSetting.getSharePointGift()){
- inviteUser.setTransferablePoint(inviteUser.getTransferablePoint() + earnPoint1);
+ if(ztsj_point > 0){
+ PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
+ int earnPoint1 = 0;
+ //计算可用积分比例
+ if(null != pointSetting && 1 == pointSetting.getSharePointOpen()){
+ earnPoint1 = new BigDecimal(ztsj_point).multiply(pointSetting.getSharePoint().divide(new BigDecimal(100))).intValue();
+ }
+ inviteUser.setSharePoint(inviteUser.getSharePoint() + ztsj_point);
+ inviteUser.setLavePoint(inviteUser.getLavePoint() + ztsj_point);
+ inviteUser.setAvailablePoint(inviteUser.getAvailablePoint() + earnPoint1);
+ inviteUser.setTotalAvailablePoint(inviteUser.getTotalAvailablePoint() + earnPoint1);
+ if(null != pointSetting && 1 == pointSetting.getSharePointGift()){
+ inviteUser.setTransferablePoint(inviteUser.getTransferablePoint() + earnPoint1);
+ }
+ inviteUser.setTotalPoint(inviteUser.getTotalPoint() + ztsj_point);
}
- inviteUser.setTotalPoint(inviteUser.getTotalPoint() + ztsj_point);
- }
- appUserClient.editAppUserById(inviteUser);
- //添加明细记录
- if(!inviteUser.getBalance().equals(balance)){
- BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
- balanceChangeRecord.setAppUserId(inviteUser.getId());
- balanceChangeRecord.setOrderId(order.getId());
- balanceChangeRecord.setChangeType(4);
- balanceChangeRecord.setBeforeAmount(balance);
- balanceChangeRecord.setChangeAmount(ztsj_price);
- balanceChangeRecord.setAfterAmount(inviteUser.getBalance());
- balanceChangeRecord.setDelFlag(0);
- balanceChangeRecord.setCreateTime(LocalDateTime.now());
- balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord);
- }
- //添加积分明细
- if(!inviteUser.getLavePoint().equals(lavePoint)){
- UserPoint userPoint = new UserPoint();
- userPoint.setType(2);
- userPoint.setHistoricalPoint(lavePoint);
- userPoint.setVariablePoint(ztsj_point);
- userPoint.setBalance(inviteUser.getLavePoint());
- userPoint.setCreateTime(LocalDateTime.now());
- userPoint.setAppUserId(inviteUser.getId());
- userPoint.setObjectId(order.getId());
- userPoint.setExtention(order.getOrderNumber());
- userPointClient.saveUserPoint(userPoint);
- //变更等级
- appUserClient.vipUpgrade(inviteUser.getId());
+ appUserClient.editAppUserById(inviteUser);
+ //添加明细记录
+ if(!inviteUser.getBalance().equals(balance)){
+ BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
+ balanceChangeRecord.setAppUserId(inviteUser.getId());
+ balanceChangeRecord.setOrderId(order.getId());
+ balanceChangeRecord.setChangeType(4);
+ balanceChangeRecord.setBeforeAmount(balance);
+ balanceChangeRecord.setChangeAmount(ztsj_price);
+ balanceChangeRecord.setAfterAmount(inviteUser.getBalance());
+ balanceChangeRecord.setDelFlag(0);
+ balanceChangeRecord.setCreateTime(LocalDateTime.now());
+ balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord);
+ }
+ //添加积分明细
+ if(!inviteUser.getLavePoint().equals(lavePoint)){
+ UserPoint userPoint = new UserPoint();
+ userPoint.setType(2);
+ userPoint.setHistoricalPoint(lavePoint);
+ userPoint.setVariablePoint(ztsj_point);
+ userPoint.setBalance(inviteUser.getLavePoint());
+ userPoint.setCreateTime(LocalDateTime.now());
+ userPoint.setAppUserId(inviteUser.getId());
+ userPoint.setObjectId(order.getId());
+ userPoint.setExtention(order.getOrderNumber());
+ userPointClient.saveUserPoint(userPoint);
+ //变更等级
+ appUserClient.vipUpgrade(inviteUser.getId());
+ }
}
}
+
//直帮上级
AppUser superiorLeader = appUserClient.getSuperiorLeader(appUser.getId()).getData();
if(null != superiorLeader){
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
index e3bc81d..3a68b76 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -20,10 +20,15 @@
import com.ruoyi.order.model.Order;
import com.ruoyi.order.model.OrderBalancePayment;
import com.ruoyi.order.model.OrderGood;
+import com.ruoyi.order.model.RefundPass;
import com.ruoyi.order.service.CommissionService;
import com.ruoyi.order.service.OrderBalancePaymentService;
import com.ruoyi.order.service.OrderService;
+import com.ruoyi.order.service.RefundPassService;
import com.ruoyi.order.util.ExpressDeliveryUtil;
+import com.ruoyi.order.util.payment.PaymentUtil;
+import com.ruoyi.order.util.payment.model.RefundCallbackResult;
+import com.ruoyi.order.util.payment.model.RefundResult;
import com.ruoyi.order.util.vo.QueryKD100Vo;
import com.ruoyi.order.vo.*;
import com.ruoyi.other.api.domain.*;
@@ -89,6 +94,9 @@
@Resource
private GoodsClient goodsClient;
+
+ @Resource
+ private RefundPassService refundPassService;
@@ -339,9 +347,11 @@
return R.fail("无效的操作");
}
order.setOrderStatus(5);
- this.updateById(order);
- refundPayMoney(order);
- return R.ok();
+ R r = refundPayMoney(order);
+ if(200 == r.getCode()){
+ this.updateById(order);
+ }
+ return r;
}
@@ -349,13 +359,20 @@
* 返回订单支付金额和回退积分和会员等级
* @param order
*/
- public void refundPayMoney(Order order){
+ public R refundPayMoney(Order order){
//开始退款
Integer payMethod = order.getPayMethod();
BigDecimal paymentAmount = order.getPaymentAmount();
AppUser appUser = appUserClient.getAppUserById(order.getAppUserId());
if(1 == payMethod){
//微信退款
+ RefundResult refund = PaymentUtil.refund(order.getOrderNumber(), "R" + order.getOrderNumber(), paymentAmount.doubleValue(), "/order/order/refundPayMoneyCallback");
+ if("100".equals(refund.getRa_Status())){
+ order.setRefundStatus(1);
+ return R.ok();
+ }else{
+ return R.fail(refund.getRc_CodeMsg());
+ }
}
if(2 == payMethod){
//余额退款
@@ -367,6 +384,13 @@
}
appUser.setBalance(balance.add(paymentAmount).setScale(2, RoundingMode.HALF_EVEN));
appUser.setShopAmount(appUser.getShopAmount().subtract(paymentAmount).setScale(2, RoundingMode.HALF_EVEN));
+ //查询最后一次的消费订单
+ Order order1 = this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getAppUserId, order.getAppUserId()).eq(Order::getPayStatus, 2).eq(Order::getDelFlag, 0).in(Order::getOrderStatus, Arrays.asList(2, 3, 4, 8)).ne(Order::getId, order.getId()).last(" order by create_time desc limit 0, 1"));
+ if(null != order1){
+ appUser.setLastShopTime(order1.getCreateTime());
+ }else{
+ appUser.setLastShopTime(LocalDateTime.MIN);
+ }
//构建账户余额流水明细
BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
@@ -380,16 +404,19 @@
balanceChangeRecord.setCreateTime(LocalDateTime.now());
balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord);
}
- Integer lavePoint = appUser.getLavePoint();
if(3 == payMethod){
- //积分退款
- appUser.setLavePoint(appUser.getLavePoint() + order.getPoint());
-
//开始运费退款,积分支付,运费是单独进行支付的,所以需要单独退款
if(null != order.getExpressAmount() && BigDecimal.ZERO.compareTo(order.getExpressAmount()) < 0){
BigDecimal expressAmount = order.getExpressAmount();
if(1 == order.getExpressPayMethod()){
//微信退款
+ RefundResult refund = PaymentUtil.refund(order.getOrderNumber(), "R" + order.getOrderNumber(), expressAmount.doubleValue(), "/order/order/refundExpressPayMoneyCallback");
+ if("100".equals(refund.getRa_Status())){
+ order.setRefundStatus(1);
+ return R.ok();
+ }else{
+ return R.fail(refund.getRc_CodeMsg());
+ }
}
if(2 == order.getExpressPayMethod()){
//余额退款
@@ -411,38 +438,209 @@
balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord);
}
}
+
+ Integer lavePoint = appUser.getLavePoint();
+ //积分退款
+ appUser.setLavePoint(appUser.getLavePoint() + order.getPoint());
+ appUser.setAvailablePoint(appUser.getAvailablePoint() + order.getPoint());
+ UserPoint userPoint1 = new UserPoint();
+ userPoint1.setType(11);
+ userPoint1.setObjectId(order.getId());
+ List<UserPoint> data = userPointClient.getUserPointList(userPoint1).getData();
+ Integer transferablePoint = order.getPoint();
+ if(data.size() > 0){
+ UserPoint userPoint = data.get(0);
+ transferablePoint = Integer.valueOf(userPoint.getExtention());
+ }
+ appUser.setTransferablePoint(appUser.getTransferablePoint() + transferablePoint);
+
+ //构建积分流水明细
+ UserPoint userPoint = new UserPoint();
+ userPoint.setType(11);
+ userPoint.setHistoricalPoint(lavePoint);
+ userPoint.setVariablePoint(order.getPoint());
+ userPoint.setBalance(appUser.getLavePoint());
+ userPoint.setCreateTime(LocalDateTime.now());
+ userPoint.setAppUserId(order.getAppUserId());
+ userPoint.setObjectId(order.getId());
+ userPointClient.saveUserPoint(userPoint);
}
//退回获得的消费积分
//需要先检查会员等级时候回回退,使用回退后的会员等级查询配置
+ Integer lavePoint = appUser.getLavePoint();
Integer getPoint = order.getGetPoint();
boolean vipDemotion = vipDemotion(appUser.getShopPoint() - getPoint, appUser.getVipId());
PointSetting pointSetting = pointSettingClient.getPointSetting(vipDemotion ? appUser.getVipId() - 1 : appUser.getVipId()).getData();
- int earnPoint1 = getPoint;
+ int earnPoint1 = 0;
if(null != pointSetting && 1 == pointSetting.getBuyPointOpen()){
earnPoint1 = new BigDecimal(getPoint).divide(pointSetting.getBuyPoint().divide(new BigDecimal(100))).intValue();
}
- appUser.setLavePoint(lavePoint - getPoint);
- appUser.setShopPoint(appUser.getShopPoint() - earnPoint1);
- appUser.setTotalPoint(appUser.getTotalPoint() - earnPoint1);
+ appUser.setShopPoint(appUser.getShopPoint() - getPoint);
+ appUser.setLavePoint(appUser.getLavePoint() - getPoint);
+ appUser.setAvailablePoint(appUser.getAvailablePoint() - earnPoint1);
+ appUser.setTotalAvailablePoint(appUser.getTotalAvailablePoint() - earnPoint1);
+ if(null != pointSetting && 1 == pointSetting.getBuyPointGift()){
+ appUser.setTransferablePoint(appUser.getTransferablePoint() - earnPoint1);
+ }
+ appUser.setTotalPoint(appUser.getTotalPoint() - getPoint);
if(vipDemotion){
appUser.setVipId(appUser.getVipId() - 1);
}
+
//构建积分流水明细
UserPoint userPoint = new UserPoint();
- userPoint.setType(11);
+ userPoint.setType(1);
userPoint.setHistoricalPoint(lavePoint);
- Integer point = appUser.getLavePoint() - lavePoint;
- userPoint.setVariablePoint(point >= 0 ? point : point * -1);
+ userPoint.setVariablePoint(getPoint);
userPoint.setBalance(appUser.getLavePoint());
userPoint.setCreateTime(LocalDateTime.now());
userPoint.setAppUserId(order.getAppUserId());
userPoint.setObjectId(order.getId());
userPointClient.saveUserPoint(userPoint);
appUserClient.editAppUserById(appUser);
+
+ order.setRefundStatus(2);
+ order.setRefundTime(LocalDateTime.now());
+ return R.ok();
}
-
-
-
+
+
+ /**
+ * 取消订单后回调处理
+ * @return
+ */
+ @Override
+ public R refundPayMoneyCallback(RefundCallbackResult refundCallbackResult) {
+ String code = refundCallbackResult.getR3_RefundOrderNo().substring(1);
+ Order order = this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNumber, code));
+ if(null == order || order.getPayStatus() == 1 || order.getOrderStatus() == 6){
+ return R.ok();
+ }
+ order.setRefundCode(refundCallbackResult.getR5_RefundTrxNo());
+ order.setRefundStatus(2);
+ order.setRefundTime(LocalDateTime.now());
+ this.updateById(order);
+
+ //退回获得的消费积分
+ //需要先检查会员等级时候回回退,使用回退后的会员等级查询配置
+ AppUser appUser = appUserClient.getAppUserById(order.getAppUserId());
+ Integer lavePoint = appUser.getLavePoint();
+ Integer getPoint = order.getGetPoint();
+ boolean vipDemotion = vipDemotion(appUser.getShopPoint() - getPoint, appUser.getVipId());
+ PointSetting pointSetting = pointSettingClient.getPointSetting(vipDemotion ? appUser.getVipId() - 1 : appUser.getVipId()).getData();
+ int earnPoint1 = 0;
+ if(null != pointSetting && 1 == pointSetting.getBuyPointOpen()){
+ earnPoint1 = new BigDecimal(getPoint).divide(pointSetting.getBuyPoint().divide(new BigDecimal(100))).intValue();
+ }
+ appUser.setShopPoint(appUser.getShopPoint() - getPoint);
+ appUser.setLavePoint(appUser.getLavePoint() - getPoint);
+ appUser.setAvailablePoint(appUser.getAvailablePoint() - earnPoint1);
+ appUser.setTotalAvailablePoint(appUser.getTotalAvailablePoint() - earnPoint1);
+ if(null != pointSetting && 1 == pointSetting.getBuyPointGift()){
+ appUser.setTransferablePoint(appUser.getTransferablePoint() - earnPoint1);
+ }
+ appUser.setTotalPoint(appUser.getTotalPoint() - getPoint);
+ if(vipDemotion){
+ appUser.setVipId(appUser.getVipId() - 1);
+ }
+
+ //构建积分流水明细
+ UserPoint userPoint = new UserPoint();
+ userPoint.setType(1);
+ userPoint.setHistoricalPoint(lavePoint);
+ userPoint.setVariablePoint(getPoint);
+ userPoint.setBalance(appUser.getLavePoint());
+ userPoint.setCreateTime(LocalDateTime.now());
+ userPoint.setAppUserId(order.getAppUserId());
+ userPoint.setObjectId(order.getId());
+ userPointClient.saveUserPoint(userPoint);
+ appUserClient.editAppUserById(appUser);
+ return R.ok();
+ }
+
+
+ /**
+ * 取消订单快递费回退
+ * @return
+ */
+ @Override
+ public R refundExpressPayMoneyCallback(RefundCallbackResult refundCallbackResult) {
+ String code = refundCallbackResult.getR3_RefundOrderNo().substring(1);
+ Order order = this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNumber, code));
+ if(null == order || order.getPayStatus() == 1 || order.getOrderStatus() == 6){
+ return R.ok();
+ }
+ order.setRefundCode(refundCallbackResult.getR5_RefundTrxNo());
+ order.setRefundStatus(2);
+ order.setRefundTime(LocalDateTime.now());
+ this.updateById(order);
+
+ AppUser appUser = appUserClient.getAppUserById(order.getAppUserId());
+ Integer lavePoint = appUser.getLavePoint();
+ //积分退款
+ appUser.setLavePoint(appUser.getLavePoint() + order.getPoint());
+ appUser.setAvailablePoint(appUser.getAvailablePoint() + order.getPoint());
+ UserPoint userPoint1 = new UserPoint();
+ userPoint1.setType(11);
+ userPoint1.setObjectId(order.getId());
+ List<UserPoint> data = userPointClient.getUserPointList(userPoint1).getData();
+ Integer transferablePoint = order.getPoint();
+ if(data.size() > 0){
+ UserPoint userPoint = data.get(0);
+ transferablePoint = Integer.valueOf(userPoint.getExtention());
+ }
+ appUser.setTransferablePoint(appUser.getTransferablePoint() + transferablePoint);
+
+ //构建积分流水明细
+ UserPoint userPoint = new UserPoint();
+ userPoint.setType(11);
+ userPoint.setHistoricalPoint(lavePoint);
+ userPoint.setVariablePoint(order.getPoint());
+ userPoint.setBalance(appUser.getLavePoint());
+ userPoint.setCreateTime(LocalDateTime.now());
+ userPoint.setAppUserId(order.getAppUserId());
+ userPoint.setObjectId(order.getId());
+ userPointClient.saveUserPoint(userPoint);
+
+ //退回获得的消费积分
+ //需要先检查会员等级时候回回退,使用回退后的会员等级查询配置
+ lavePoint = appUser.getLavePoint();
+ Integer getPoint = order.getGetPoint();
+ boolean vipDemotion = vipDemotion(appUser.getShopPoint() - getPoint, appUser.getVipId());
+ PointSetting pointSetting = pointSettingClient.getPointSetting(vipDemotion ? appUser.getVipId() - 1 : appUser.getVipId()).getData();
+ int earnPoint1 = 0;
+ if(null != pointSetting && 1 == pointSetting.getBuyPointOpen()){
+ earnPoint1 = new BigDecimal(getPoint).divide(pointSetting.getBuyPoint().divide(new BigDecimal(100))).intValue();
+ }
+ appUser.setShopPoint(appUser.getShopPoint() - getPoint);
+ appUser.setLavePoint(appUser.getLavePoint() - getPoint);
+ appUser.setAvailablePoint(appUser.getAvailablePoint() - earnPoint1);
+ appUser.setTotalAvailablePoint(appUser.getTotalAvailablePoint() - earnPoint1);
+ if(null != pointSetting && 1 == pointSetting.getBuyPointGift()){
+ appUser.setTransferablePoint(appUser.getTransferablePoint() - earnPoint1);
+ }
+ appUser.setTotalPoint(appUser.getTotalPoint() - getPoint);
+ if(vipDemotion){
+ appUser.setVipId(appUser.getVipId() - 1);
+ }
+
+ //构建积分流水明细
+ userPoint = new UserPoint();
+ userPoint.setType(1);
+ userPoint.setHistoricalPoint(lavePoint);
+ userPoint.setVariablePoint(getPoint);
+ userPoint.setBalance(appUser.getLavePoint());
+ userPoint.setCreateTime(LocalDateTime.now());
+ userPoint.setAppUserId(order.getAppUserId());
+ userPoint.setObjectId(order.getId());
+ userPointClient.saveUserPoint(userPoint);
+ appUserClient.editAppUserById(appUser);
+
+ order.setRefundStatus(2);
+ order.setRefundTime(LocalDateTime.now());
+ return null;
+ }
+
/**
* 会员降级检测
*/
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/RefundPassServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/RefundPassServiceImpl.java
index 199eaf5..4251ede 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/RefundPassServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/RefundPassServiceImpl.java
@@ -161,15 +161,18 @@
refundPass.setStatus(2);
}
refundPass.setPassRemark(passRemark);
- this.updateById(refundPass);
//仅退款的售后需要将支付金额原路返回,然后再扣减支付获得的积分
if(refundPass.getRefundMethod() == 2 && 2 == status){
Order order = orderService.getById(refundPass.getOrderId());
order.setOrderStatus(6);
- orderService.updateById(order);
//返回订单支付金额和回退积分和会员等级
- orderService.refundPayMoney(order);
+ R r = orderService.refundPayMoney(order);
+ if(200 != r.getCode()){
+ return r;
+ }
+ orderService.updateById(order);
}
+ this.updateById(refundPass);
return R.ok();
}
@@ -189,13 +192,16 @@
return R.fail("操作失败");
}
refundPass.setStatus(2);
- this.updateById(refundPass);
//仅退款的售后需要将支付金额原路返回,然后再扣减支付获得的积分
Order order = orderService.getById(refundPass.getOrderId());
order.setOrderStatus(6);
- orderService.updateById(order);
//返回订单支付金额和回退积分和会员等级
- orderService.refundPayMoney(order);
+ R r = orderService.refundPayMoney(order);
+ if(200 != r.getCode()){
+ return r;
+ }
+ this.updateById(refundPass);
+ orderService.updateById(order);
return R.ok();
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
index 3c5614f..6016597 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
@@ -142,7 +142,8 @@
}
List<Integer> goodsIds = data.stream().map(Goods::getId).collect(Collectors.toList());
//查询符合商品类型的商品数据
- List<ShoppingCart> list = this.list(new LambdaQueryWrapper<ShoppingCart>().eq(ShoppingCart::getAppUserId, userid).in(ShoppingCart::getGoodsId, goodsIds));
+ List<ShoppingCart> list = this.list(new LambdaQueryWrapper<ShoppingCart>().eq(ShoppingCart::getAppUserId, userid)
+ .in(ShoppingCart::getGoodsId, goodsIds).eq(ShoppingCart::getStatus, 1));
//构建返回数据
List<MyShoppingCartVo> page = buildDetail(appUser, shopId, list, null);
return page;
@@ -156,7 +157,7 @@
* @param shopId
* @return
*/
- public Price getPrice(AppUser appUser, Integer goodsId, Integer shopId){
+ public Price getPrice(AppUser appUser, Integer goodsId, Integer type, Integer shopId){
//获取支付价格
//秒杀活动>门店特价>地区价格>会员价格
//判断是否有秒杀活动
@@ -165,7 +166,8 @@
info.setGoodsId(goodsId);
info.setVip(appUser.getVipId());
GoodsSeckill goodsSeckill = seckillActivityInfoClient.getSeckillActivityInfo(info).getData();
- if(null == goodsSeckill){
+ //没有秒杀活动或者添加的普通商品则不使用秒杀活动价格
+ if(null == goodsSeckill || type == 1){
//没有秒杀价,则判断门店特价
GetGoodsBargainPrice goodsBargainPrice = new GetGoodsBargainPrice();
goodsBargainPrice.setGoodsId(goodsId);
@@ -288,9 +290,18 @@
@Override
public Long addGoods(ShoppingCart shoppingCart) {
Long userid = tokenService.getLoginUserApplet().getUserid();
- shoppingCart.setAppUserId(userid);
- this.save(shoppingCart);
- return shoppingCart.getId();
+ ShoppingCart one = this.getOne(new LambdaQueryWrapper<ShoppingCart>().eq(ShoppingCart::getAppUserId, userid)
+ .eq(ShoppingCart::getGoodsId, shoppingCart.getGoodsId()).eq(ShoppingCart::getType, shoppingCart.getType()).eq(ShoppingCart::getStatus, 1));
+ if(null != one){
+ one.setNumber(one.getNumber() + shoppingCart.getNumber());
+ this.updateById(one);
+ return one.getId();
+ }else{
+ shoppingCart.setAppUserId(userid);
+ shoppingCart.setStatus(1);
+ this.save(shoppingCart);
+ return shoppingCart.getId();
+ }
}
@@ -336,12 +347,15 @@
JSONArray objects = JSON.parseArray(goodsJson);
Long id = objects.getJSONObject(0).getLong("id");
Integer num1 = objects.getJSONObject(0).getInteger("num");
+ Integer type = objects.getJSONObject(0).getInteger("type");
ShoppingCart shoppingCart = new ShoppingCart();
shoppingCart.setAppUserId(userid);
shoppingCart.setGoodsId(id.intValue());
shoppingCart.setNumber(num1);
- Long shoppingCarId = addGoods(shoppingCart);
- confirmOrder.setGoodsJson("[{\"id\": " + shoppingCarId + ", \"num\": " + num1 + "}]");
+ shoppingCart.setType(type);
+ shoppingCart.setStatus(0);
+ this.save(shoppingCart);
+ confirmOrder.setGoodsJson("[{\"id\": " + shoppingCart.getId() + ", \"num\": " + num1 + ",\"type\":" + type + "}]");
}
AppUser appUser = appUserClient.getAppUserById(userid);
Integer shopId = confirmOrder.getShopId();
@@ -362,10 +376,16 @@
confirmOrderVo.setShopName(shop.getName());
//现金支付
if(confirmOrder.getPaymentType() == 1){
- BigDecimal bigDecimal = goodsList.stream().map(MyShoppingCartVo::getCash).reduce(BigDecimal::add).get();
+ BigDecimal bigDecimal = BigDecimal.ZERO;
+ for (MyShoppingCartVo myShoppingCartVo : goodsList) {
+ bigDecimal = bigDecimal.add(myShoppingCartVo.getCash().multiply(new BigDecimal(myShoppingCartVo.getNumber())));
+ }
confirmOrderVo.setOrderMoney(bigDecimal);
}else{
- int sum = goodsList.stream().mapToInt(MyShoppingCartVo::getPoint).sum();
+ int sum = 0;
+ for (MyShoppingCartVo myShoppingCartVo : goodsList) {
+ sum += (myShoppingCartVo.getPoint() * myShoppingCartVo.getNumber());
+ }
confirmOrderVo.setOrderPoint(sum);
}
//查询当前是否有订单活动
@@ -474,6 +494,7 @@
Goods goods = goodsClient.getGoodsById(shoppingCart.getGoodsId()).getData();
MyShoppingCartVo vo = new MyShoppingCartVo();
vo.setId(shoppingCart.getId().toString());
+ vo.setType(shoppingCart.getType());
vo.setGoodsId(goods.getId());
vo.setHomePicture(goods.getHomePagePicture());
vo.setName(goods.getName());
@@ -488,7 +509,7 @@
}
}
//获取支付价格
- Price price = getPrice(appUser, shoppingCart.getGoodsId(), shopId);
+ Price price = getPrice(appUser, shoppingCart.getGoodsId(), shoppingCart.getType(), shopId);
if(null == price){
price = new Price();
//使用商品的基础价格
@@ -512,6 +533,7 @@
//判断当前数量是否已经超出限购数量(需要计算已经购买的数量)
if(null == goods.getPurchaseLimit() || -1 == goods.getPurchaseLimit()){
vo.setPurchaseLimit(false);
+ vo.setPurchaseLimitNum(-1);
}else{
List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().eq(Order::getAppUserId, appUser.getId()).eq(Order::getDelFlag, 0).in(Order::getOrderStatus, Arrays.asList(4, 8)));
List<Long> orderIds = orders.stream().map(Order::getId).collect(Collectors.toList());
@@ -565,7 +587,7 @@
//判断当前数量是否已经超出限购数量(需要计算已经购买的数量)
Goods goods = goodsClient.getGoodsById(shoppingCart.getGoodsId()).getData();
if(null != goods.getPurchaseLimit() && -1 != goods.getPurchaseLimit()){
- List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().eq(Order::getAppUserId, appUser.getId()).eq(Order::getDelFlag, 0).in(Order::getOrderStatus, Arrays.asList(4, 8)));
+ List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().eq(Order::getAppUserId, appUser.getId()).eq(Order::getDelFlag, 0).notIn(Order::getOrderStatus, Arrays.asList(5, 6)));
List<Long> orderIds = orders.stream().map(Order::getId).collect(Collectors.toList());
int sum = 0;
if(orderIds.size() > 0){
@@ -881,15 +903,17 @@
//调起微信支付
String goodsNames = goodsList.stream().map(MyShoppingCartVo::getName).collect(Collectors.joining("\n"));
UniPayResult uniPayResult = PaymentUtil.uniPay(order.getOrderNumber(), paymentMoney.doubleValue(), order.getOrderType() == 1 ? "购买服务商品" : "购买单品商品",
- goodsNames, "", "/order/shopping-cart/shoppingCartPaymentCallback", appUser.getWxOpenid(), "");
+ goodsNames, "", "/order/shopping-cart/shoppingCartPaymentCallback", appUser.getWxOpenid(), null);
if(null == uniPayResult || !"100".equals(uniPayResult.getRa_Code())){
return R.fail(null == uniPayResult ? "支付失败" : uniPayResult.getRb_CodeMsg());
}
String rc_result = uniPayResult.getRc_Result();
+ JSONObject jsonObject = JSON.parseObject(rc_result);
+ jsonObject.put("orderId", order.getId().toString());
//将支付数据添加到redis队列中,便于定时任务去校验是否完成支付,没有完成支付支付,15分钟后关闭订单。
long second = LocalDateTime.now().plusMinutes(15).toEpochSecond(ZoneOffset.UTC);
redisTemplate.opsForZSet().add("OrderPayment", order.getOrderNumber(), second);
- return R.ok(rc_result);
+ return R.ok(jsonObject.toJSONString());
}
//账户余额
BigDecimal redPacketAmount = BigDecimal.ZERO;
@@ -942,15 +966,17 @@
appUser.setTransferablePoint(appUser.getTransferablePoint() + earnPoint1);
}
- UserPoint userPoint = new UserPoint();
- userPoint.setType(1);
- userPoint.setHistoricalPoint(appUser.getLavePoint() - earnPoint);
- userPoint.setVariablePoint(earnPoint);
- userPoint.setBalance(appUser.getLavePoint());
- userPoint.setCreateTime(LocalDateTime.now());
- userPoint.setAppUserId(appUser.getId());
- userPoint.setObjectId(order.getId());
- userPointClient.saveUserPoint(userPoint);
+ if(earnPoint > 0){
+ UserPoint userPoint = new UserPoint();
+ userPoint.setType(1);
+ userPoint.setHistoricalPoint(appUser.getLavePoint() - earnPoint);
+ userPoint.setVariablePoint(earnPoint);
+ userPoint.setBalance(appUser.getLavePoint());
+ userPoint.setCreateTime(LocalDateTime.now());
+ userPoint.setAppUserId(appUser.getId());
+ userPoint.setObjectId(order.getId());
+ userPointClient.saveUserPoint(userPoint);
+ }
}
appUser.setShopAmount(appUser.getShopAmount().add(paymentMoney).setScale(2, RoundingMode.HALF_EVEN));
appUser.setLastShopTime(LocalDateTime.now());
@@ -984,29 +1010,52 @@
if(shoppingCartPayment.getFreightPaymentType() == 1){
//调起微信支付
UniPayResult uniPayResult = PaymentUtil.uniPay(order.getOrderNumber() + appUser.getId(), expressFee.doubleValue(), order.getOrderType() == 1 ? "购买服务商品快递费" : "购买单品商品快递费",
- "快递费", "", "/order/shopping-cart/shoppingCartMaterialFlowPaymentCallback", appUser.getWxOpenid(), "");
+ "快递费", "", "/order/shopping-cart/shoppingCartMaterialFlowPaymentCallback", appUser.getWxOpenid(), null);
if(null == uniPayResult || !"100".equals(uniPayResult.getRa_Code())){
return R.fail(null == uniPayResult ? "支付失败" : uniPayResult.getRb_CodeMsg());
}
String rc_result = uniPayResult.getRc_Result();
+ JSONObject jsonObject = JSON.parseObject(rc_result);
+ jsonObject.put("orderId", order.getId().toString());
//将支付数据添加到redis队列中,便于定时任务去校验是否完成支付,没有完成支付支付,15分钟后关闭订单。
long second = LocalDateTime.now().plusMinutes(15).toEpochSecond(ZoneOffset.UTC);
redisTemplate.opsForZSet().add("MaterialFlowPayment", order.getOrderNumber() + appUser.getId(), second);
- return R.ok(rc_result);
+ return R.ok(jsonObject.toJSONString());
}
}
-
+
Integer lavePoint = appUser.getLavePoint();
+ //扣减订单支付积分
+ appUser.setLavePoint(appUser.getLavePoint() - orderPoint);
+ appUser.setAvailablePoint(appUser.getAvailablePoint() - orderPoint);
+ //可转增积分
+ Integer transferablePoint = appUser.getTransferablePoint();
+ Integer tra = 0;
+ if(transferablePoint > 0){
+ tra = transferablePoint - orderPoint;
+ appUser.setTransferablePoint(tra >= 0 ? tra : 0);
+ }
+ appUser.setTransferablePoint(appUser.getTransferablePoint() - orderPoint);
+
+ //构建积分流水记录
+ UserPoint userPoint = new UserPoint();
+ userPoint.setType(11);
+ userPoint.setHistoricalPoint(lavePoint);
+ userPoint.setVariablePoint(orderPoint);
+ userPoint.setBalance(appUser.getLavePoint());
+ userPoint.setCreateTime(LocalDateTime.now());
+ userPoint.setAppUserId(appUser.getId());
+ userPoint.setObjectId(order.getId());
+ userPoint.setExtention((tra >= 0 ? orderPoint : transferablePoint) + "");
+ userPointClient.saveUserPoint(userPoint);
+
+ lavePoint = appUser.getLavePoint();
PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
int earnPoint1 = 0;
//计算可用积分比例
if(null != pointSetting && 1 == pointSetting.getBuyPointOpen()){
earnPoint1 = new BigDecimal(earnPoint).multiply(pointSetting.getBuyPoint().divide(new BigDecimal(100))).intValue();
}
- //扣减订单支付积分
- appUser.setLavePoint(appUser.getLavePoint() - orderPoint);
- appUser.setAvailablePoint(appUser.getAvailablePoint() - orderPoint);
-
appUser.setShopPoint(appUser.getShopPoint() + earnPoint);
appUser.setLavePoint(appUser.getLavePoint() + earnPoint);
appUser.setAvailablePoint(appUser.getAvailablePoint() + earnPoint1);
@@ -1021,16 +1070,17 @@
appUserClient.vipUpgrade(appUser.getId());
//构建积分流水记录
- UserPoint userPoint = new UserPoint();
- userPoint.setType(1);
- userPoint.setHistoricalPoint(lavePoint);
- Integer point = appUser.getLavePoint() - lavePoint;
- userPoint.setVariablePoint(point >= 0 ? point : point * -1);
- userPoint.setBalance(appUser.getLavePoint());
- userPoint.setCreateTime(LocalDateTime.now());
- userPoint.setAppUserId(appUser.getId());
- userPoint.setObjectId(order.getId());
- userPointClient.saveUserPoint(userPoint);
+ if(earnPoint > 0){
+ userPoint = new UserPoint();
+ userPoint.setType(1);
+ userPoint.setHistoricalPoint(lavePoint);
+ userPoint.setVariablePoint(earnPoint);
+ userPoint.setBalance(appUser.getLavePoint());
+ userPoint.setCreateTime(LocalDateTime.now());
+ userPoint.setAppUserId(appUser.getId());
+ userPoint.setObjectId(order.getId());
+ userPointClient.saveUserPoint(userPoint);
+ }
//如果有运费,需要先扣除账户积分,再进行支付。支付成功后修改订单状态,未支付成功则回退积分,删除的订单
if(expressFee.compareTo(BigDecimal.ZERO) > 0){
if(shoppingCartPayment.getFreightPaymentType() == 2){
@@ -1145,15 +1195,17 @@
appUser.setAvailablePoint(appUser.getAvailablePoint() + earnPoint1);
appUser.setTotalAvailablePoint(appUser.getTotalAvailablePoint() + earnPoint1);
- UserPoint userPoint = new UserPoint();
- userPoint.setType(1);
- userPoint.setHistoricalPoint(appUser.getLavePoint() - earnPoint);
- userPoint.setVariablePoint(earnPoint);
- userPoint.setBalance(appUser.getLavePoint());
- userPoint.setCreateTime(LocalDateTime.now());
- userPoint.setAppUserId(appUser.getId());
- userPoint.setObjectId(order.getId());
- userPointClient.saveUserPoint(userPoint);
+ if(earnPoint > 0){
+ UserPoint userPoint = new UserPoint();
+ userPoint.setType(1);
+ userPoint.setHistoricalPoint(appUser.getLavePoint() - earnPoint);
+ userPoint.setVariablePoint(earnPoint);
+ userPoint.setBalance(appUser.getLavePoint());
+ userPoint.setCreateTime(LocalDateTime.now());
+ userPoint.setAppUserId(appUser.getId());
+ userPoint.setObjectId(order.getId());
+ userPointClient.saveUserPoint(userPoint);
+ }
}
appUser.setShopAmount(appUser.getShopAmount().add(paymentMoney).setScale(2, RoundingMode.HALF_EVEN));
appUser.setLastShopTime(LocalDateTime.now());
@@ -1192,17 +1244,12 @@
Integer earnPoint = order.getGetPoint();
AppUser appUser = appUserClient.getAppUserById(order.getAppUserId());
Integer lavePoint = appUser.getLavePoint();
- Integer orderPoint = order.getPoint();
PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
- int earnPoint1 = earnPoint;
+ int earnPoint1 = 0;
//计算可用积分比例
if(null != pointSetting && 1 == pointSetting.getBuyPointOpen()){
- earnPoint1 = new BigDecimal(earnPoint1).multiply(pointSetting.getBuyPoint().divide(new BigDecimal(100))).intValue();
+ earnPoint1 = new BigDecimal(earnPoint).multiply(pointSetting.getBuyPoint().divide(new BigDecimal(100))).intValue();
}
- //扣减订单支付积分
- appUser.setLavePoint(appUser.getLavePoint() - orderPoint);
- appUser.setAvailablePoint(appUser.getAvailablePoint() - orderPoint);
-
appUser.setShopPoint(appUser.getShopPoint() + earnPoint);
appUser.setLavePoint(appUser.getLavePoint() + earnPoint);
appUser.setAvailablePoint(appUser.getAvailablePoint() + earnPoint1);
@@ -1217,13 +1264,13 @@
UserPoint userPoint = new UserPoint();
userPoint.setType(1);
userPoint.setHistoricalPoint(lavePoint);
- Integer point = appUser.getLavePoint() - lavePoint;
- userPoint.setVariablePoint(point >= 0 ? point : point * -1);
+ userPoint.setVariablePoint(earnPoint);
userPoint.setBalance(appUser.getLavePoint());
userPoint.setCreateTime(LocalDateTime.now());
userPoint.setAppUserId(appUser.getId());
userPoint.setObjectId(order.getId());
userPointClient.saveUserPoint(userPoint);
+
//修改订支付状态
order.setPayStatus(2);
//自提
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/payment/PaymentUtil.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/payment/PaymentUtil.java
index 4914a27..9da6f50 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/payment/PaymentUtil.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/payment/PaymentUtil.java
@@ -3,6 +3,7 @@
import cn.hutool.http.*;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
+import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.order.util.payment.model.*;
import lombok.extern.slf4j.Slf4j;
@@ -74,7 +75,7 @@
//APPID
body.put("q7_AppId", appId);
//报备商户号
- body.put("qa_TradeMerchantNo", tradeMerchantNo);
+ body.put("qa_TradeMerchantNo", StringUtils.isNotEmpty(tradeMerchantNo) ? tradeMerchantNo : "777168500885852");
String sign = null;
try {
sign = sign(body);
@@ -155,7 +156,7 @@
//退款金额
body.put("p4_RefundAmount", refundAmount);
//服务器异步通知地址
- body.put("p6_NotifyUrl", notifyUrl);
+ body.put("p6_NotifyUrl", callbackUrl + notifyUrl);
String sign = null;
try {
sign = sign(body);
@@ -249,13 +250,13 @@
- public static String sign(JSONObject body) throws Exception{
+ public static String sign(JSONObject body) {
Set<Map.Entry<String, Object>> entries = body.entrySet();
List<Map.Entry<String, Object>> infoIds = new ArrayList<Map.Entry<String, Object>>(entries);
// 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序)
Collections.sort(infoIds, new Comparator<Map.Entry<String, Object>>() {
public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) {
- return (o1.getKey()).toString().compareTo(o2.getKey());
+ return (o1.getKey()).compareTo(o2.getKey());
}
});
// 构造签名键值对的格式
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BaseSettingController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BaseSettingController.java
index 6cc0e7b..2aee854 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BaseSettingController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/BaseSettingController.java
@@ -56,6 +56,15 @@
@ApiOperation(value = "获取基础配置", tags = {"管理后台-基础配置"})
public R<BaseSetting> getBaseSetting(@RequestParam("id") Integer id){
BaseSetting baseSetting = baseSettingService.getById(id);
+ return R.ok(baseSetting);
+ }
+
+
+ @ResponseBody
+ @GetMapping("/getBaseSetting1")
+ @ApiOperation(value = "获取基础配置", tags = {"小程序-基础配置"})
+ public R<BaseSetting> getBaseSetting1(@RequestParam("id") Integer id){
+ BaseSetting baseSetting = baseSettingService.getById(id);
Long userid = tokenService.getLoginUserApplet().getUserid();
AppUser appUser = appUserClient.getAppUserById(userid);
VipSetting vipSetting = vipSettingService.getById(appUser.getVipId());
@@ -64,6 +73,7 @@
return R.ok(baseSetting);
}
+
/**
* 保存设置
*/
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java
index f7de2e1..45f16c3 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java
@@ -205,9 +205,14 @@
}
-
-
-
+ /**
+ * 根据类型获取有效优惠券列表
+ */
+ @PostMapping("/getCouponInfoByPersonType")
+ public R<List<CouponInfo>> getCouponInfoByPersonType(@RequestParam("personType") Integer personType){
+ List<CouponInfo> list = couponInfoService.list(new LambdaUpdateWrapper<CouponInfo>().eq(CouponInfo::getPersonType, personType).eq(CouponInfo::getDelFlag, 0).eq(CouponInfo::getShelfStatus, 1).last(" and now() between period_start_time and period_end_time"));
+ return R.ok(list);
+ }
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java
index 11a35a9..f91120f 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java
@@ -48,6 +48,7 @@
@PostMapping("/getNowOrderActivityInfo")
public R<OrderActivityInfo> getNowOrderActivityInfo(@RequestParam("vip") Integer vip){
OrderActivityInfo one = orderActivityInfoService.getOne(new LambdaQueryWrapper<OrderActivityInfo>().eq(OrderActivityInfo::getDelFlag, 0)
+ .eq(OrderActivityInfo::getIsShelf, 1).eq(OrderActivityInfo::getStatus, 1)
.last(" and now() between start_time and end_time and FIND_IN_SET(" + vip + ", vip_ids) limit 0, 1"));
return R.ok(one);
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShareController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShareController.java
index 7fa27cd..ab82e73 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShareController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShareController.java
@@ -183,7 +183,7 @@
@ApiOperation(value = "广告管理-分享管理-审核列表", tags = {"管理后台"})
@GetMapping("/manage/auth/list")
public R<Page<Share>> authmanagelist(String name, Integer addType, @RequestParam Integer pageNum, Integer pageSize) {
- Page<Share> page = shareService.lambdaQuery().ne(Share::getAuditStatus, 1).like(name != null, Share::getName, name).eq(addType != null, Share::getAddType, addType).page(Page.of(pageNum, pageSize));
+ Page<Share> page = shareService.lambdaQuery().ne(Share::getAuditStatus, 1).like(name != null, Share::getName, name).eq(addType != null, Share::getAddType, addType).orderByAsc(Share::getAuditStatus).page(Page.of(pageNum, pageSize));
for (Share record : page.getRecords()) {
if (record.getAddType() == 2) {
AppUser appUserById = appUserClient.getAppUserById(Long.valueOf(record.getObjectId()));
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
index d1bac18..ff0db3a 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
@@ -283,6 +283,22 @@
return R.ok();
}
+
+ @PutMapping("/freezingOrThawing")
+ @ApiOperation(value = "门店管理-冻结/解冻门店", tags = {"管理后台-门店管理"})
+ public R freezingOrThawing(@RequestParam("id") Integer id, @RequestParam("status") Integer status){
+ Shop shop = shopService.getById(id);
+ if(shop.getStatus().equals(status)){
+ return R.fail("不能重复操作");
+ }
+ shop.setStatus(status);
+ shopService.updateById(shop);
+ return R.ok();
+ }
+
+
+
+
@GetMapping("/list")
@ApiOperation(value = "门店列表", tags = {"管理后台-门店管理"})
public R<IPage<Shop>> list(@ApiParam("页码") @RequestParam Integer pageNum,@ApiParam("每一页数据大小") Integer pageSize,Shop shop){
@@ -418,7 +434,7 @@
@ResponseBody
@PostMapping("/getShopByUserId")
public R<List<Shop>> getShopByUserId(@RequestParam("id") Long id){
- List<Shop> list = shopService.lambdaQuery().eq(Shop::getAppUserId, id).list();
+ List<Shop> list = shopService.lambdaQuery().eq(Shop::getAppUserId, id).eq(Shop::getDelFlag,0).list();
return R.ok(list);
}
@@ -476,12 +492,16 @@
@ApiOperation(value = "获取可核销门店列表", tags = {"购物车-小程序"})
public R<List<VerifiableShopVo>> getVerifiableShop(String longitude, String latitude, Integer goodsId){
String city = TencentMapUtil.inverseGeographicalAnalysis(longitude, latitude, false);
+ if(null == city){
+ city = "510100";
+ }
city = city.substring(0, 4) + "00";
LambdaQueryWrapper<Shop> wrapper = new LambdaQueryWrapper<Shop>().eq(Shop::getDelFlag, 0).eq(Shop::getCityCode, city);
if(null != goodsId){
Goods goods = goodsService.getById(goodsId);
if(1 == goods.getType() && 1 == goods.getAppointStore()){
- List<Integer> collect = goodsShopService.list(new LambdaQueryWrapper<GoodsShop>().eq(GoodsShop::getGoodsId, goods)).stream().map(GoodsShop::getShopId).collect(Collectors.toList());
+ List<Integer> collect = goodsShopService.list(new LambdaQueryWrapper<GoodsShop>().eq(GoodsShop::getGoodsId, goods.getId()))
+ .stream().map(GoodsShop::getShopId).collect(Collectors.toList());
if(collect.size() > 0){
wrapper.in(Shop::getId, collect);
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java
index bd8b676..c62ef1b 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java
@@ -123,6 +123,9 @@
@ApiOperation(value = "添加编辑", tags = {"门店-技师列表"})
public R<Page<Technician>> add(@RequestBody Technician technician) {
Integer objectId = tokenService.getLoginUser().getSysUser().getObjectId();
+ if (technician.getId()==null){
+ technician.setSubscribeStatus(2);
+ }
technician.setShopId(objectId);
technicianService.saveOrUpdate(technician);
return R.ok();
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/GoodsMapper.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/GoodsMapper.java
index 2a308cd..f1017a1 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/GoodsMapper.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/GoodsMapper.java
@@ -18,6 +18,7 @@
* @since 2024-11-20
*/
public interface GoodsMapper extends BaseMapper<Goods> {
+
List<Goods> selectListByShopId(PageInfo<Goods> pageInfo, @Param("shopId") Integer shopId,@Param("vip") Integer vip);
IPage<Goods> selectManageGoodsList(@Param("page") IPage<Goods> page, @Param("goods") Goods goods);
@@ -30,5 +31,5 @@
* @param name
* @return
*/
- List<GoodsVO> goodsList(PageInfo<GoodsVO> pageInfo, @Param("goodsCategoryId") Integer goodsCategoryId, @Param("name") String name);
+ List<GoodsVO> goodsList(PageInfo<GoodsVO> pageInfo, @Param("goodsCategoryId") Integer goodsCategoryId, @Param("name") String name, @Param("vip") Integer vip);
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/VipSettingService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/VipSettingService.java
index 2302088..aef5579 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/VipSettingService.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/VipSettingService.java
@@ -15,5 +15,4 @@
VipSetting getVipSettingByUserId(Long userId);
- void downUsers();
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java
index d647b1d..387c300 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -18,6 +19,8 @@
import com.ruoyi.order.feignClient.RemoteOrderGoodsClient;
import com.ruoyi.order.vo.Price;
import com.ruoyi.other.api.domain.*;
+import com.ruoyi.other.api.vo.GetGoodsBargainPrice;
+import com.ruoyi.other.api.vo.GetSeckillActivityInfo;
import com.ruoyi.other.enums.GoodsStatus;
import com.ruoyi.other.mapper.GoodsAreaMapper;
import com.ruoyi.other.mapper.GoodsMapper;
@@ -71,25 +74,39 @@
private GoodsAreaService goodsAreaService;
@Resource
private RemoteOrderGoodsClient remoteOrderGoodsClient;
+ @Resource
+ private SeckillActivityInfoService seckillActivityInfoService;
+ @Resource
+ private GoodsSeckillService goodsSeckillService;
+ @Resource
+ private GoodsBargainPriceService goodsBargainPriceService;
+ @Resource
+ private GoodsBargainPriceDetailService goodsBargainPriceDetailService;
+
+
@Override
public PageInfo<GoodsVO> goodsList(Goods search) {
PageInfo<GoodsVO> pageInfo = new PageInfo(search.getPageCurr(), search.getPageSize());
- List<GoodsVO> list = this.baseMapper.goodsList(pageInfo, search.getGoodsCategoryId(), search.getName());
- Long userId = null;
+ Integer vipId = 0;
+ String provinceCode = null;
+ String cityCode = null;
+ String districtCode = null;
String token = SecurityUtils.getToken(ServletUtils.getRequest());
if(StringUtils.isNotEmpty(token)){
- userId = tokenService.getLoginUserApplet().getUserid();
+ Long userid = tokenService.getLoginUserApplet().getUserid();
+ AppUser appUser = appUserClient.getAppUserById(userid);
+ vipId = appUser.getVipId();
+ provinceCode = appUser.getProvinceCode();
+ cityCode = appUser.getCityCode();
+ districtCode = appUser.getDistrictCode();
}
+ List<GoodsVO> list = this.baseMapper.goodsList(pageInfo, search.getGoodsCategoryId(), search.getName(), vipId);
for (GoodsVO goods : list) {
- //游客展示基础售价
- if(null != userId){
- R<Price> r = remoteOrderGoodsClient.getGoodsPrice(userId, goods.getGoodsId(), null);
- if (null != r.getData()){
- Price price = r.getData();
- goods.setSellingPrice(price.getCash());
- goods.setIntegral(price.getPoint());
- }
+ Price price = getPrice(vipId, goods.getGoodsId(), 1, null, provinceCode, cityCode, districtCode);
+ if(null != price){
+ goods.setSellingPrice(price.getCash());
+ goods.setIntegral(price.getPoint());
}
}
return pageInfo.setRecords(list);
@@ -101,30 +118,18 @@
throw new NullPointerException("商品ID不能为空");
}
- LoginUser loginUserApplet = tokenService.getLoginUserApplet();
- AppUser appUser = appUserClient.getAppUserById(loginUserApplet.getUserid());
- BigDecimal sellingPrice = BigDecimal.ZERO;
- Integer integral = 0;
-
- GoodsArea goodsArea = goodsAreaMapper.selectOne(new LambdaQueryWrapper<GoodsArea>()
- .eq(GoodsArea::getGoodsId, goodsId)
- .eq(GoodsArea::getVip, appUser.getVipId())
- .eq(GoodsArea::getProvinceCode, appUser.getProvinceCode())
- .eq(StringUtils.isNotEmpty(appUser.getCityCode()), GoodsArea::getCityCode, appUser.getCityCode())
- .eq(StringUtils.isNotEmpty(appUser.getDistrictCode()), GoodsArea::getDistrictsCode, appUser.getDistrictCode()));
-
- if (Objects.nonNull(goodsArea)){
- sellingPrice = goodsArea.getSellingPrice();
- integral = goodsArea.getIntegral();
- }else {
- VipSetting vipSetting = vipSettingService.getVipSettingByUserId(loginUserApplet.getUserid());
- GoodsVip goodsVip = goodsVipService.getOne(new LambdaQueryWrapper<GoodsVip>()
- .eq(GoodsVip::getVip, vipSetting.getId())
- .eq(GoodsVip::getGoodsId, goodsId));
- if(null != goodsVip){
- sellingPrice = goodsVip.getSellingPrice();
- integral = goodsVip.getIntegral();
- }
+ Integer vipId = 0;
+ String provinceCode = null;
+ String cityCode = null;
+ String districtCode = null;
+ String token = SecurityUtils.getToken(ServletUtils.getRequest());
+ if(StringUtils.isNotEmpty(token)){
+ Long userid = tokenService.getLoginUserApplet().getUserid();
+ AppUser appUser = appUserClient.getAppUserById(userid);
+ vipId = appUser.getVipId();
+ provinceCode = appUser.getProvinceCode();
+ cityCode = appUser.getCityCode();
+ districtCode = appUser.getDistrictCode();
}
Goods goods = this.getById(goodsId);
@@ -132,8 +137,11 @@
BeanUtils.copyBeanProp(goodsVO, goods);
goodsVO.setGoodsId(goods.getId());
goodsVO.setGoodsName(goods.getName());
- goodsVO.setSellingPrice(sellingPrice);
- goodsVO.setIntegral(integral);
+ Price price = getPrice(vipId, goods.getId(), 1, null, provinceCode, cityCode, districtCode);
+ if(null != price){
+ goodsVO.setSellingPrice(price.getCash());
+ goodsVO.setIntegral(price.getPoint());
+ }
if(goods.getType() == 1){
if(goods.getAppointStore() == 2){
@@ -161,9 +169,28 @@
@Override
public List<Goods> getGoodsListByShopId(PageInfo<Goods> pageInfo, Integer shopId) {
- LoginUser loginUserApplet = tokenService.getLoginUserApplet();
- VipSetting vipSetting = vipSettingService.getVipSettingByUserId(loginUserApplet.getUserid());
- return goodsMapper.selectListByShopId(pageInfo, shopId, vipSetting.getId());
+ Integer vipId = 0;
+ String provinceCode = null;
+ String cityCode = null;
+ String districtCode = null;
+ String token = SecurityUtils.getToken(ServletUtils.getRequest());
+ if(StringUtils.isNotEmpty(token)){
+ Long userid = tokenService.getLoginUserApplet().getUserid();
+ AppUser appUser = appUserClient.getAppUserById(userid);
+ vipId = appUser.getVipId();
+ provinceCode = appUser.getProvinceCode();
+ cityCode = appUser.getCityCode();
+ districtCode = appUser.getDistrictCode();
+ }
+ List<Goods> goods = goodsMapper.selectListByShopId(pageInfo, shopId, vipId);
+ for (Goods good : goods) {
+ Price price = getPrice(vipId, good.getId(), 1, shopId, provinceCode, cityCode, districtCode);
+ if(null != price){
+ good.setSellingPrice(price.getCash());
+ good.setIntegral(price.getPoint());
+ }
+ }
+ return goods;
}
@Override
@@ -376,4 +403,112 @@
goodsArea1.setGoodsAreaList(goodsAreas);
return goodsArea1;
}
+
+
+ /**
+ * 根据商品的价格配置体系获取商品当前的价格
+ * @param vip
+ * @param goodsId
+ * @param type 1普通商品,2秒杀商品
+ * @param shopId
+ * @param provinceCode
+ * @param cityCode
+ * @param districtCode
+ * @return
+ */
+ public Price getPrice(Integer vip, Integer goodsId, Integer shopId, Integer type, String provinceCode, String cityCode, String districtCode){
+ //获取支付价格
+ //秒杀活动>门店特价>地区价格>会员价格
+ //判断是否有秒杀活动
+ Price price = new Price();
+ SeckillActivityInfo one = seckillActivityInfoService.getOne(new LambdaQueryWrapper<SeckillActivityInfo>().eq(SeckillActivityInfo::getGoodId, goodsId)
+ .eq(SeckillActivityInfo::getIsShelves, 1).eq(SeckillActivityInfo::getDelFlag, 0)
+ .last(" and now() between start_time and end_time and FIND_IN_SET(" + vip + ", vip_ids) order by create_time desc limit 0, 1"));
+ GoodsSeckill goodsSeckill = null;
+ if(null != one){
+ goodsSeckill = goodsSeckillService.getOne(new LambdaQueryWrapper<GoodsSeckill>().eq(GoodsSeckill::getSeckillActivityInfoId, one.getId()).eq(GoodsSeckill::getVip, vip));
+ }
+ //没有秒杀活动或者添加的普通商品则不使用秒杀活动价格
+ if(null == goodsSeckill || type == 1){
+ //没有秒杀价,则判断门店特价
+ GoodsBargainPriceDetail bargainPriceDetail = null;
+ if (shopId != null){
+ GoodsBargainPrice priceServiceOne = goodsBargainPriceService.getOne(new LambdaQueryWrapper<GoodsBargainPrice>().eq(GoodsBargainPrice::getGoodsId, goodsId).eq(GoodsBargainPrice::getShopId, shopId)
+ .eq(GoodsBargainPrice::getDelFlag, 0).eq(GoodsBargainPrice::getAuditStatus, 1).last(" order by create_time desc limit 0, 1"));
+ if(null != priceServiceOne){
+ bargainPriceDetail = goodsBargainPriceDetailService.getOne(new LambdaQueryWrapper<GoodsBargainPriceDetail>().eq(GoodsBargainPriceDetail::getGoodsBargainPriceId, priceServiceOne.getId()).eq(GoodsBargainPriceDetail::getVip, vip));
+ }
+ }
+ if(null == bargainPriceDetail){
+ //没有门店特价,判断地区价格配置
+ LambdaQueryWrapper<GoodsArea> queryWrapper = new LambdaQueryWrapper<GoodsArea>().eq(GoodsArea::getGoodsId, goodsId).eq(GoodsArea::getVip, vip);
+ if(StringUtils.isNotEmpty(districtCode)){
+ queryWrapper.eq(GoodsArea::getDistrictsCode, districtCode);
+ }
+ if(StringUtils.isNotEmpty(cityCode)){
+ queryWrapper.eq(GoodsArea::getCityCode, cityCode);
+ }
+ if(StringUtils.isNotEmpty(provinceCode)){
+ queryWrapper.eq(GoodsArea::getProvinceCode, provinceCode);
+ }
+ GoodsArea goodsArea = goodsAreaService.getOne(queryWrapper);
+ if(null == goodsArea){
+ //没有地区价格,则使用会员价格
+ GoodsVip goodsVip = goodsVipService.getOne(new LambdaQueryWrapper<GoodsVip>().eq(GoodsVip::getGoodsId, goodsId).eq(GoodsVip::getVip, vip));
+ if(null == goodsVip){
+ //没有配置价格,直接使用原始基础价格
+ return null;
+ }else{
+ //构建价格数据
+ if(goodsVip.getCashPayment() == 1 && goodsVip.getPointPayment() == 1){
+ price.setCash(goodsVip.getSellingPrice());
+ price.setPoint(goodsVip.getIntegral());
+ }
+ if(goodsVip.getCashPayment() == 1 && goodsVip.getPointPayment() == 0){
+ price.setCash(goodsVip.getSellingPrice());
+ }
+ if(goodsVip.getCashPayment() == 0 && goodsVip.getPointPayment() == 1){
+ price.setPoint(goodsVip.getIntegral());
+ }
+ price.setCashPayment(goodsVip.getCashPayment() == 1);
+ price.setPointPayment(goodsVip.getPointPayment() == 1);
+ }
+ }else{
+ //构建价格数据
+ if(goodsArea.getCashPayment() == 1 && goodsArea.getPointPayment() == 1){
+ price.setCash(goodsArea.getSellingPrice());
+ price.setPoint(goodsArea.getIntegral());
+ }
+ if(goodsArea.getCashPayment() == 1 && goodsArea.getPointPayment() == 0){
+ price.setCash(goodsArea.getSellingPrice());
+ }
+ if(goodsArea.getCashPayment() == 0 && goodsArea.getPointPayment() == 1){
+ price.setPoint(goodsArea.getIntegral());
+ }
+ price.setCashPayment(goodsArea.getCashPayment() == 1);
+ price.setPointPayment(goodsArea.getPointPayment() == 1);
+ }
+ }else{
+ price.setCash(bargainPriceDetail.getSellingPrice());
+ price.setPoint(bargainPriceDetail.getIntegral());
+ price.setCashPayment(bargainPriceDetail.getSellingPrice() != null);
+ price.setPointPayment(bargainPriceDetail.getIntegral() != null);
+ }
+ }else{
+ //构建价格数据
+ if(goodsSeckill.getCashPayment() == 1 && goodsSeckill.getPointPayment() == 1){
+ price.setCash(goodsSeckill.getSellingPrice());
+ price.setPoint(goodsSeckill.getIntegral());
+ }
+ if(goodsSeckill.getCashPayment() == 1 && goodsSeckill.getPointPayment() == 0){
+ price.setCash(goodsSeckill.getSellingPrice());
+ }
+ if(goodsSeckill.getCashPayment() == 0 && goodsSeckill.getPointPayment() == 1){
+ price.setPoint(goodsSeckill.getIntegral());
+ }
+ price.setCashPayment(goodsSeckill.getCashPayment() == 1);
+ price.setPointPayment(goodsSeckill.getPointPayment() == 1);
+ }
+ return price;
+ }
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/SeckillActivityInfoServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/SeckillActivityInfoServiceImpl.java
index 7e23225..ce3e341 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/SeckillActivityInfoServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/SeckillActivityInfoServiceImpl.java
@@ -5,7 +5,10 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.model.AppUser;
+import com.ruoyi.common.core.utils.ServletUtils;
+import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.other.api.domain.*;
import com.ruoyi.other.mapper.GoodsShopMapper;
import com.ruoyi.other.mapper.SeckillActivityInfoMapper;
@@ -54,14 +57,20 @@
LoginUser loginUserApplet = tokenService.getLoginUserApplet();
AppUser appUser = appUserClient.getAppUserById(loginUserApplet.getUserid());
goods.setVipId(appUser.getVipId());
- return seckillActivityInfoMapper.listSeckillActivity(goods);
+ List<SeckillActivityVO> seckillActivityVOS = seckillActivityInfoMapper.listSeckillActivity(goods);
+ return seckillActivityVOS;
}
@Override
public SeckillActivityDetailVO detail(Integer seckillActivityId) {
- Long userid = tokenService.getLoginUserApplet().getUserid();
- AppUser appUser = appUserClient.getAppUserById(userid);
- SeckillActivityDetailVO seckillActivityDetailVO = seckillActivityInfoMapper.selectDetail(seckillActivityId, appUser.getVipId());
+ Integer vipId = 0;
+ String token = SecurityUtils.getToken(ServletUtils.getRequest());
+ if(StringUtils.isNotEmpty(token)){
+ Long userid = tokenService.getLoginUserApplet().getUserid();
+ AppUser appUser = appUserClient.getAppUserById(userid);
+ vipId = appUser.getVipId();
+ }
+ SeckillActivityDetailVO seckillActivityDetailVO = seckillActivityInfoMapper.selectDetail(seckillActivityId, vipId);
Integer goodsId = seckillActivityDetailVO.getGoodsId();
Goods goods = goodsService.getById(goodsId);
@@ -85,7 +94,11 @@
public void saveSeckillActivityInfo(SeckillActivityInfo seckillActivityInfo) {
this.baseMapper.insert(seckillActivityInfo);
List<GoodsSeckill> goodsSeckills = seckillActivityInfo.getGoodsSeckills();
- goodsSeckills.forEach(goodsSeckill -> goodsSeckill.setSeckillActivityInfoId(seckillActivityInfo.getId()));
+ for (GoodsSeckill goodsSeckill : goodsSeckills) {
+ goodsSeckill.setCashPayment(null == goodsSeckill.getSellingPrice() ? 0 : 1);
+ goodsSeckill.setPointPayment(null == goodsSeckill.getIntegral() ? 0 : 1);
+ goodsSeckill.setSeckillActivityInfoId(seckillActivityInfo.getId());
+ }
goodsSeckillService.saveBatch(goodsSeckills);
}
@@ -95,7 +108,11 @@
this.baseMapper.updateById(seckillActivityInfo);
goodsSeckillService.remove(new LambdaQueryWrapper<GoodsSeckill>().eq(GoodsSeckill::getSeckillActivityInfoId, seckillActivityInfo.getId()));
List<GoodsSeckill> goodsSeckills = seckillActivityInfo.getGoodsSeckills();
- goodsSeckills.forEach(goodsSeckill -> goodsSeckill.setSeckillActivityInfoId(seckillActivityInfo.getId()));
+ for (GoodsSeckill goodsSeckill : goodsSeckills) {
+ goodsSeckill.setCashPayment(null == goodsSeckill.getSellingPrice() ? 0 : 1);
+ goodsSeckill.setPointPayment(null == goodsSeckill.getIntegral() ? 0 : 1);
+ goodsSeckill.setSeckillActivityInfoId(seckillActivityInfo.getId());
+ }
goodsSeckillService.saveBatch(goodsSeckills);
}
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/VipSettingServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/VipSettingServiceImpl.java
index 99b5c83..b803d76 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/VipSettingServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/VipSettingServiceImpl.java
@@ -35,26 +35,4 @@
return this.getById(appUser.getVipId());
}
- @Override
- public void downUsers() {
-// //查出可能需要降级的人员
-// R<List<AppUser>> topUsers = appUserClient.getTopUsers();
-// //循环判断是否要展示
-// if (topUsers.getData()!=null && topUsers.getData().size()>0){
-// for (AppUser appUser : topUsers.getData()){
-// if (appUser.getVipId()==5){
-// VipSetting vipSetting = this.baseMapper.selectById(5);
-// if (vipSetting.getKeepBuyPoint()!=null){
-// //如果消费不为空,查找对应天数的消费积分
-//
-// //如果消费积分小于保级积分,设置用户降级标志并将降级信息
-// }
-//
-// }
-// }
-// }
-
- //然后设置降级提示
-
- }
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/task/TaskUtil.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/task/TaskUtil.java
index 6a67a19..5ab7f5a 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/task/TaskUtil.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/task/TaskUtil.java
@@ -1,16 +1,10 @@
package com.ruoyi.other.task;
-import com.ruoyi.other.service.VipSettingService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
-import javax.annotation.Resource;
-import java.util.Date;
-import java.util.List;
/**
@@ -19,9 +13,6 @@
@Component
public class TaskUtil {
- @Resource
- private VipSettingService vipSettingService;
-
/**
* 每天的凌晨执行的任务
@@ -29,9 +20,6 @@
@Scheduled(cron = "0 0 0 * * *")
public void taskDay(){
try {
-
-
- vipSettingService.downUsers();
}catch (Exception e){
e.printStackTrace();
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/payment/PaymentUtil.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/payment/PaymentUtil.java
index b7d8486..c78db82 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/payment/PaymentUtil.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/payment/PaymentUtil.java
@@ -6,6 +6,7 @@
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
+import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.other.util.payment.model.*;
import lombok.extern.slf4j.Slf4j;
@@ -77,7 +78,7 @@
//APPID
body.put("q7_AppId", appId);
//报备商户号
- body.put("qa_TradeMerchantNo", tradeMerchantNo);
+ body.put("qa_TradeMerchantNo", StringUtils.isNotEmpty(tradeMerchantNo) ? tradeMerchantNo : "777168500885852");
String sign = null;
try {
sign = sign(body);
@@ -252,13 +253,13 @@
- public static String sign(JSONObject body) throws Exception{
+ public static String sign(JSONObject body) {
Set<Map.Entry<String, Object>> entries = body.entrySet();
List<Map.Entry<String, Object>> infoIds = new ArrayList<Map.Entry<String, Object>>(entries);
// 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序)
Collections.sort(infoIds, new Comparator<Map.Entry<String, Object>>() {
public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) {
- return (o1.getKey()).toString().compareTo(o2.getKey());
+ return (o1.getKey()).compareTo(o2.getKey());
}
});
// 构造签名键值对的格式
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/SeckillActivityVO.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/SeckillActivityVO.java
index 5ff9b25..072d806 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/SeckillActivityVO.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/SeckillActivityVO.java
@@ -50,6 +50,9 @@
@ApiModelProperty(value = "基础售价")
private BigDecimal sellingPrice;
+ @ApiModelProperty(value = "基础积分")
+ private Integer integral;
+
@ApiModelProperty(value = "开始时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsMapper.xml
index 5ca5a61..6bd8276 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsMapper.xml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsMapper.xml
@@ -4,38 +4,26 @@
<select id="selectListByShopId" resultType="com.ruoyi.other.api.domain.Goods">
SELECT
- tg.id,
- tg.`name`,
- tg.type,
- tg.introduction,
- tg.selling_price,
- tg.original_price,
- tg.sale_num,
- tg.home_page_picture
- FROM
- t_shop ts
- LEFT JOIN t_goods_shop tgs ON ts.id = tgs.shop_id
- LEFT JOIN t_goods tg ON tg.id = tgs.goods_id
- where ts.id = #{shopId} and ts.del_flag = 0
+ tg.id,
+ tg.`name`,
+ tg.type,
+ tg.introduction,
+ tg.selling_price as sellingPrice,
+ tg.original_price as originalPrice,
+ tg.integral as integral,
+ tg.sale_num as saleNum,
+ tg.home_page_picture as homePagePicture
+ FROM t_goods tg
+ left join t_goods_shop tgs ON tg.id = tgs.goods_id
+ where tg.del_flag = 0 and (tg.appoint_store = 2 or (tg.appoint_store = 1 and tg.id in (select goods_id from t_goods_shop where shop_id = #{shopId})))
<if test="vip != null">
- and FIND_IN_SET(#{vip}, tg.commodity_authority) > 0
+ and (tg.commodity_authority like '%-1%' or tg.commodity_authority like CONCAT('%', #{vip}, '%'))
</if>
ORDER BY tg.sale_num DESC
</select>
<select id="selectManageGoodsList" resultType="com.ruoyi.other.api.domain.Goods">
SELECT
- tg.id,
- tg.`name`,
- tg.type,
- tg.goods_category_id,
- tgc.`name`,
- tg.operating_cost,
- tg.shop_cost,
- tg.`status`,
- tg.purchase_limit,
- tg.sale_num,
- tg.cash_payment,
- tg.point_payment
+ tg.*
FROM
t_goods tg
LEFT JOIN t_goods_category tgc ON tg.goods_category_id = tgc.id
@@ -56,6 +44,17 @@
<if test="goods.status != null">
and tg.`status` = #{goods.status}
</if>
+
+ <if test="goods.payMethod != null and goods.payMethod == 1 ">
+ and tg.`cashPayment` = 1
+ </if>
+ <if test="goods.payMethod != null and goods.payMethod == 2 ">
+ and tg.`point_payment` = 1
+ </if>
+ <if test="goods.payMethod != null and goods.payMethod == 3 ">
+ and (tg.`point_payment` = 1 or tg.`cashPayment` = 1 )
+ </if>
+
</where>
order by tg.sort desc
</select>
@@ -69,5 +68,8 @@
<if test="null != name and '' != name">
and name like CONCAT('%', #{name}, '%')
</if>
+ <if test="null != vip">
+ and id in (select goods_id from t_goods_vip where vip = #{vip})
+ </if>
</select>
</mapper>
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml
index cbbd719..2cabc67 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml
@@ -6,20 +6,21 @@
SELECT
tsai.id,
tg.id as goodsId,
- tg.`name`,
+ tg.`name` as goodsName,
tg.introduction,
- tg.home_page_picture,
- tg.original_price,
- tgs.selling_price,
- tg.sale_num,
- tsai.start_time
+ tg.home_page_picture as homePagePicture,
+ tg.original_price as originalPrice,
+ tgs.selling_price as sellingPrice,
+ tg.sale_num as saleNum,
+ tsai.start_time as startTime,
+ tsai.end_time as endTime
FROM
t_seckill_activity_info tsai
LEFT JOIN t_goods tg ON tsai.good_id = tg.id
LEFT JOIN t_goods_seckill tgs ON tgs.seckill_activity_info_id = tsai.id and tgs.vip = #{vipId}
- WHERE tsai.is_shelves = 1 AND tsai.del_flag = 0
+ WHERE tsai.is_shelves = 1 AND tsai.del_flag = 0 and now() between tsai.start_time and tsai.end_time
<if test="name != null and name != ''">
- AND tg.`name` LIKE concat('%',#{goodsName},'%')
+ AND tg.`name` LIKE concat('%',#{name},'%')
</if>
<if test="goodsCategoryId != null">
AND tg.goods_category_id = #{goodsCategoryId}
@@ -37,13 +38,14 @@
tsai.good_id as goodsId,
tg.`name`,
tg.introduction,
- tg.home_page_picture,
- tg.original_price,
- tgs.selling_price,
- tg.sale_num,
- tsai.start_time,
- tg.detail_picture,
- tsai.end_time,
+ tg.home_page_picture as homePagePicture,
+ tg.original_price as originalPrice,
+ tgs.selling_price as sellingPrice,
+ tgs.integral,
+ tg.sale_num as saleNum,
+ tsai.start_time as startTime,
+ tg.detail_picture as detailPicture,
+ tsai.end_time as endTime,
tg.detail
FROM
t_seckill_activity_info tsai
--
Gitblit v1.7.1