Browse Source

feat(store): 新增地址ID返回及积分校验逻辑

- 在地址新增接口中返回addressId
- 积分订单创建前增加积分余额校验
- 防止因积分不足导致的负数积分问题
- 优化地址实体类字段映射配置
- 完善积分商品查询时的空值处理
- 修复地址服务层自增ID同步问题
xw 3 days ago
parent
commit
d562a04891

+ 8 - 2
fs-service/src/main/java/com/fs/his/service/impl/FsIntegralOrderServiceImpl.java

@@ -380,15 +380,21 @@ public class FsIntegralOrderServiceImpl implements IFsIntegralOrderService
 
         if(fsIntegralOrderMapper.insertFsIntegralOrder(order)>0){
             if (order.getPayType() != 2) {
+                // 验证积分是否足够,防止出现负数
+                long remainingIntegral = user.getIntegral() - totalIntegral;
+                if (remainingIntegral < 0) {
+                    throw new CustomException("积分不足,无法创建订单");
+                }
+                
                 //写入日志
                 FsUser userMap=new FsUser();
                 userMap.setUserId(user.getUserId());
-                userMap.setIntegral(user.getIntegral()-totalIntegral);
+                userMap.setIntegral(remainingIntegral);
                 fsUserMapper.updateFsUser(userMap);
                 FsUserIntegralLogs logs = new FsUserIntegralLogs();
                 logs.setIntegral(-totalIntegral);
                 logs.setUserId(order.getUserId());
-                logs.setBalance(userMap.getIntegral());
+                logs.setBalance(remainingIntegral);
                 logs.setLogType(5);
                 logs.setBusinessId(order.getOrderId().toString());
                 logs.setCreateTime(new Date());

+ 6 - 1
fs-service/src/main/java/com/fs/hisStore/service/impl/FsUserAddressScrmServiceImpl.java

@@ -68,7 +68,12 @@ public class FsUserAddressScrmServiceImpl implements IFsUserAddressScrmService
     {
         fsUserAddress.setDetail(fsUserAddress.getDetail().trim());
         fsUserAddress.setCreateTime(DateUtils.getNowDate());
-        return fsUserAddressMapper.insertFsUserAddress(fsUserAddress);
+        int result = fsUserAddressMapper.insertFsUserAddress(fsUserAddress);
+        // 将自增id赋值给addressId字段
+        if (result > 0 && fsUserAddress.getId() != null) {
+            fsUserAddress.setAddressId(fsUserAddress.getId());
+        }
+        return result;
     }
 
     /**

+ 1 - 0
fs-service/src/main/resources/mapper/hisStore/FsUserAddressScrmMapper.xml

@@ -6,6 +6,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <resultMap type="FsUserAddressScrm" id="FsUserAddressResult">
         <result property="id"    column="address_id"    />
+        <result property="addressId"    column="address_id"    />
         <result property="userId"    column="user_id"    />
         <result property="realName"    column="real_name"    />
         <result property="phone"    column="phone"    />

+ 15 - 0
fs-user-app/src/main/java/com/fs/app/controller/IntegralController.java

@@ -66,6 +66,21 @@ public class IntegralController extends  AppBaseController {
     @Cacheable(value = "getIntegralGoodsById", key = "#goodsId")
     public R getIntegralGoodsById(@RequestParam("goodsId")Long goodsId, HttpServletRequest request){
         FsIntegralGoods goods=goodsService.selectFsIntegralGoodsByGoodsId(goodsId);
+        // 填充默认值
+        if (goods != null) {
+            if (goods.getImages() == null) {
+                goods.setImages("");
+            }
+            if (goods.getNum() == null) {
+                goods.setNum(0);
+            }
+            if (goods.getRemark() == null) {
+                goods.setRemark("");
+            }
+            if (goods.getSearchValue() == null) {
+                goods.setSearchValue("");
+            }
+        }
         return R.ok().put("data",goods);
     }
 

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/controller/store/AddressScrmController.java

@@ -113,7 +113,7 @@ public class AddressScrmController extends AppBaseController {
         FsUserAddressScrm userAddress=new FsUserAddressScrm();
         BeanUtil.copyProperties(address, userAddress);
         addressService.insertFsUserAddress(userAddress);
-        return R.ok("操作成功");
+        return R.ok("操作成功").put("addressId", userAddress.getId());
     }
 
     @Login