Browse Source

Merge branch 'master' of http://115.29.66.169:10080/yiyao_shop/api

lubo 3 months ago
parent
commit
f398b41212

+ 5 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/shop/agent/AgentAccountCodeController.java

@@ -3,6 +3,7 @@ package com.ruoyi.web.controller.shop.agent;
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.ruoyi.agent.domain.bo.AgentAccountCodeBo;
 import com.ruoyi.agent.domain.vo.AgentAccountCodeVo;
+import com.ruoyi.agent.enums.AccountCodeStatus;
 import com.ruoyi.agent.service.IAgentAccountCodeService;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.PageQuery;
@@ -16,6 +17,8 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Arrays;
+
 /**
  * 代理账户码Controller
  *
@@ -38,6 +41,7 @@ public class AgentAccountCodeController extends BaseController {
     @SaCheckPermission("agent:agentAccountCode:list")
     @GetMapping("/agentPage")
     public TableDataInfo<AgentAccountCodeVo> agentPage(@Validated(QueryGroup.class) AgentAccountCodeBo bo, PageQuery pageQuery) {
+        bo.setStatusList(Arrays.asList(AccountCodeStatus.WAIT_USE.getCode(), AccountCodeStatus.USED.getCode(), AccountCodeStatus.UNUSED.getCode()).toString());
         return iAgentAccountCodeService.agentPageList(bo, pageQuery);
     }
 
@@ -48,6 +52,7 @@ public class AgentAccountCodeController extends BaseController {
     @SaCheckPermission("agent:agentAccountCode:list")
     @GetMapping("/page")
     public TableDataInfo<AgentAccountCodeVo> page(@Validated(QueryGroup.class) AgentAccountCodeBo bo, PageQuery pageQuery) {
+        bo.setStatusList(Arrays.asList(AccountCodeStatus.WAIT_USE.getCode(), AccountCodeStatus.USED.getCode(), AccountCodeStatus.UNUSED.getCode()).toString());
         return iAgentAccountCodeService.queryPageList(bo, pageQuery);
     }
 

+ 8 - 0
ruoyi-api/src/main/java/com/ruoyi/api/controller/business/ApiBusinessIntegralVerifierController.java

@@ -13,6 +13,7 @@ import com.ruoyi.shop.business.domain.bo.UserBusinessVerifierIntegralBo;
 import com.ruoyi.shop.business.domain.vo.UserBusinessVerifierIntegralStatisticsVo;
 import com.ruoyi.shop.business.domain.vo.UserBusinessVerifierIntegralVo;
 import com.ruoyi.shop.business.service.IUserBusinessRoleService;
+import com.ruoyi.user.domain.bo.BalanceToIntegralBo;
 import com.ruoyi.user.domain.vo.UserVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -98,4 +99,11 @@ public class ApiBusinessIntegralVerifierController extends AbstractApiController
         return userBusinessRoleService.pageVerifyRecord(bo, pageQuery);
     }
 
+    @ApiOperation("余额转积分")
+    @PostMapping("/balanceToIntegral")
+    public R<Void> balanceToIntegral(@Validated @RequestBody BalanceToIntegralBo bo) {
+        userBusinessRoleService.balanceToIntegral(bo, getUserId(true));
+        return R.ok();
+    }
+
 }

+ 4 - 0
ruoyi-business/src/main/java/com/ruoyi/agent/domain/bo/AgentAccountCodeBo.java

@@ -53,6 +53,10 @@ public class AgentAccountCodeBo extends BaseEntity {
      */
     @ApiModelProperty(value = "用途时间", required = true)
     private Date purposeTime;
+    @ApiModelProperty(value = "查询-用途时间开始")
+    private Date purposeTimeStart;
+    @ApiModelProperty(value = "查询-用途时间结束")
+    private Date purposeTimeEnd;
 
     /**
      * 用途类型 1-商家 2-地代

+ 12 - 4
ruoyi-business/src/main/java/com/ruoyi/agent/service/impl/AgentAccountCodeServiceImpl.java

@@ -59,6 +59,14 @@ public class AgentAccountCodeServiceImpl implements IAgentAccountCodeService {
      */
     @Override
     public TableDataInfo<AgentAccountCodeVo> queryPageList(AgentAccountCodeBo bo, PageQuery pageQuery) {
+        if(ObjectUtil.isNotNull(bo.getPurposeTimeStart()))
+        {
+            bo.setPurposeTimeStart(DateUtil.beginOfDay(bo.getPurposeTimeStart()));
+        }
+        if(ObjectUtil.isNotNull(bo.getPurposeTimeEnd()))
+        {
+            bo.setPurposeTimeEnd(DateUtil.endOfDay(bo.getPurposeTimeEnd()));
+        }
         Page<AgentAccountCodeVo> result = baseMapper.selectAgentPage(pageQuery.build(), bo);
         result.setRecords(convertList(result.getRecords()));
         return TableDataInfo.build(result);
@@ -100,11 +108,11 @@ public class AgentAccountCodeServiceImpl implements IAgentAccountCodeService {
         lqw.eq(bo.getPurposeTime() != null, AgentAccountCode::getPurposeTime, bo.getPurposeTime());
         lqw.eq(bo.getPurposeType() != null, AgentAccountCode::getPurposeType, bo.getPurposeType());
         lqw.eq(bo.getPurposeId() != null, AgentAccountCode::getPurposeId, bo.getPurposeId());
-        if (bo.getStartTime() != null) {
-            lqw.ge(AgentAccountCode::getPurposeTime, DateUtil.beginOfDay(bo.getStartTime()));
+        if (bo.getPurposeTimeStart() != null) {
+            lqw.ge(AgentAccountCode::getPurposeTime, DateUtil.beginOfDay(bo.getPurposeTimeStart()));
         }
-        if (bo.getEndTime() != null) {
-            lqw.le(AgentAccountCode::getPurposeTime, DateUtil.endOfDay(bo.getEndTime()));
+        if (bo.getPurposeTimeEnd() != null) {
+            lqw.le(AgentAccountCode::getPurposeTime, DateUtil.endOfDay(bo.getPurposeTimeEnd()));
         }
         lqw.orderByDesc(AgentAccountCode::getCreateTime);
         return lqw;

+ 12 - 0
ruoyi-business/src/main/resources/mapper/agent/AgentAccountCodeMapper.xml

@@ -39,6 +39,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="bo.areaCode != null and bo.areaCode != ''">
                 and a.area_code = #{bo.areaCode}
             </if>
+            <if test="bo.purposeTimeStart != null">
+                and ac.purpose_time >= #{bo.purposeTimeStart}
+            </if>
+            <if test="bo.purposeTimeEnd != null">
+                and ac.purpose_time &lt;= #{bo.purposeTimeEnd}
+            </if>
+            <if test="bo.statusList != null and bo.statusList != ''">
+                and ac.status in
+                <foreach item="item" collection="bo.statusList.split(',')" separator="," open="(" close=")" index="">
+                    #{item}
+                </foreach>
+            </if>
         </where>
         order by ac.create_time desc
     </select>

+ 3 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/business/service/IUserBusinessRoleService.java

@@ -13,6 +13,7 @@ import com.ruoyi.shop.business.domain.vo.UserBusinessVerifierIntegralVo;
 import com.ruoyi.shop.order.domain.bo.BusinessCountBo;
 import com.ruoyi.common.enums.order.OrderType;
 import com.ruoyi.user.domain.User;
+import com.ruoyi.user.domain.bo.BalanceToIntegralBo;
 import com.ruoyi.user.domain.vo.UserVo;
 
 import java.math.BigDecimal;
@@ -153,4 +154,6 @@ public interface IUserBusinessRoleService {
     User initUserAndBindBusiness(String mobile, String nickname, Long businessId);
 
     List<BusinessIntegralVo> businessList(UserBusinessRoleBo bo);
+
+    void balanceToIntegral(BalanceToIntegralBo bo, Long userId);
 }

+ 53 - 2
ruoyi-shop/src/main/java/com/ruoyi/shop/business/service/impl/UserBusinessRoleServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ruoyi.shop.business.service.impl;
 
+import cn.dev33.satoken.secure.BCrypt;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateTime;
@@ -18,6 +19,7 @@ import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.ExceptionEnum;
+import com.ruoyi.common.enums.order.OrderType;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.BeanCopyUtils;
 import com.ruoyi.common.utils.StringUtils;
@@ -36,11 +38,13 @@ import com.ruoyi.shop.business.mapper.UserBusinessRoleMapper;
 import com.ruoyi.shop.business.service.IUserBusinessIntegralRecordService;
 import com.ruoyi.shop.business.service.IUserBusinessRoleService;
 import com.ruoyi.shop.order.domain.bo.BusinessCountBo;
-import com.ruoyi.common.enums.order.OrderType;
 import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.user.domain.User;
+import com.ruoyi.user.domain.bo.BalanceToIntegralBo;
 import com.ruoyi.user.domain.bo.UserBo;
+import com.ruoyi.user.domain.bo.UserChangeBalanceBo;
 import com.ruoyi.user.domain.vo.UserVo;
+import com.ruoyi.user.enums.BalanceSourceType;
 import com.ruoyi.user.enums.IntegralBillType;
 import com.ruoyi.user.enums.IntegralSourceType;
 import com.ruoyi.user.service.IUserService;
@@ -51,7 +55,10 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.*;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -432,6 +439,7 @@ public class UserBusinessRoleServiceImpl implements IUserBusinessRoleService {
 
     @Override
     public TableDataInfo<BusinessIntegralVo> businessPage(UserBusinessRoleBo bo, PageQuery pageQuery) {
+        buildTime(bo);
         Page<BusinessIntegralVo> businessIntegralVoPage = baseMapper.businessPage(bo, pageQuery.build());
         businessIntegralVoPage.setRecords(businessIntegralVoPage.getRecords().stream().map(vo -> {
             vo.setWaitUseIntegral(vo.getTotalGrantIntegral().subtract(vo.getUsedIntegral()));
@@ -440,6 +448,15 @@ public class UserBusinessRoleServiceImpl implements IUserBusinessRoleService {
         return TableDataInfo.build(businessIntegralVoPage);
     }
 
+    private void buildTime(UserBusinessRoleBo bo) {
+        if (ObjectUtil.isNotNull(bo.getStartTime())) {
+            bo.setStartTime(DateUtil.beginOfDay(bo.getStartTime()));
+        }
+        if (ObjectUtil.isNotNull(bo.getEndTime())) {
+            bo.setEndTime(DateUtil.endOfDay(bo.getEndTime()));
+        }
+    }
+
     @Override
     public BigDecimal businessTotalIntegral(Long businessId) {
         return baseMapper.businessTotalIntegral(businessId);
@@ -482,6 +499,7 @@ public class UserBusinessRoleServiceImpl implements IUserBusinessRoleService {
 
     @Override
     public List<BusinessIntegralVo> businessList(UserBusinessRoleBo bo) {
+        buildTime(bo);
         List<BusinessIntegralVo> businessIntegralVos = baseMapper.businessList(bo);
         return businessIntegralVos.stream().map(vo -> {
             vo.setWaitUseIntegral(vo.getTotalGrantIntegral().subtract(vo.getUsedIntegral()));
@@ -489,6 +507,39 @@ public class UserBusinessRoleServiceImpl implements IUserBusinessRoleService {
         }).collect(Collectors.toList());
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void balanceToIntegral(BalanceToIntegralBo bo, Long userId) {
+        User user = userService.getById(userId, true);
+        if(!BCrypt.checkpw(bo.getPayPassword(), user.getPayPassword()))
+        {
+            throw new ServiceException("支付密码错误");
+        }
+        Business business = businessService.loadById(bo.getBusinessId(), true);
+        // 检查商家状态
+        business.isValid(true);
+        //先扣余额
+        userService.changeUserBalance(UserChangeBalanceBo.builder()
+            .userId(userId)
+            .entryValue(bo.getIntegral())
+            .isAdd(false)
+            .sourceType(BalanceSourceType.BALANCE_TO_INTEGRAL)
+            .remark("用户余额转存积分")
+            .businessId(business.getBusinessId())
+            .businessName(business.getBusinessName())
+            .build());
+        //在加积分
+        changeUserIntegral(UserBusinessChangeIntegralBo.builder()
+            .userId(userId)
+            .businessId(bo.getBusinessId())
+            .integral(bo.getIntegral())
+            .isAdd(true)
+            .canExpire(false)
+            .sourceType(IntegralSourceType.BALANCE_TO_INTEGRAL)
+            .remark("用户余额转存积分")
+            .build());
+    }
+
 
     private List<UserBusinessVerifierIntegralVo> convertVerifyList(List<UserBusinessVerifierIntegralVo> voList) {
         return voList.stream().map(vo -> {

+ 26 - 0
ruoyi-user/src/main/java/com/ruoyi/user/domain/bo/BalanceToIntegralBo.java

@@ -0,0 +1,26 @@
+package com.ruoyi.user.domain.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class BalanceToIntegralBo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("店铺id")
+    @NotNull(message = "店铺id不能为空")
+    private Long businessId;
+
+    @ApiModelProperty("转积分数")
+    @NotNull(message = "转积分数不能为空")
+    private BigDecimal integral;
+
+    @ApiModelProperty("支付密码")
+    @NotBlank(message = "支付密码不能为空")
+    private String payPassword;
+}

+ 1 - 0
ruoyi-user/src/main/java/com/ruoyi/user/enums/BalanceSourceType.java

@@ -21,6 +21,7 @@ public enum BalanceSourceType implements IIntegerEnum {
     ONLINE_ORDER_REFUND_DEDUCT(6, "在线订单退款扣除补贴"),
     SUBSIDY_OVERFLOW_RETURN(7, "消费排队均摊补贴溢出退回"),
     WITHDRAWAL(8, "提现"),
+    BALANCE_TO_INTEGRAL(9, "余额转积分"),
     ;
 
     @EnumValue

+ 1 - 0
ruoyi-user/src/main/java/com/ruoyi/user/enums/IntegralSourceType.java

@@ -33,6 +33,7 @@ public enum IntegralSourceType implements IIntegerEnum {
     EXPIRE(99, "过期"),
 
     INTEGRAL_VERIFY(100, "积分核销"),
+    BALANCE_TO_INTEGRAL(101, "余额转积分"),
     ;
 
     @EnumValue

+ 29 - 20
ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserServiceImpl.java

@@ -100,7 +100,7 @@ public class UserServiceImpl implements IUserService {
         if(ObjectUtil.isNull(userVo)) {
             return null;
         }
-        return userVo;
+        return convertVo(userVo, false);
     }
 
     /**
@@ -127,25 +127,27 @@ public class UserServiceImpl implements IUserService {
         if(ObjectUtil.isEmpty(list)) {
             return new ArrayList<>();
         }
-        return list.stream().map(item -> {
-            UserBo userBo = new UserBo();
-            userBo.setId(item.getId());
-            item.setSurplusQueueMoney(baseMapper.querySurplusQueueMoney(userBo));
-            UserStatisticsVo userStatisticsVo = baseMapper.querySubsidyMoney(userBo);
-            if (ObjectUtil.isNotNull(userStatisticsVo)) {
-                item.setShouldSubsidyMoney(userStatisticsVo.getShouldSubsidyMoney());
-                item.setAlreadySubsidyMoney(userStatisticsVo.getAlreadySubsidyMoney());
-            }
-            if (!isBusiness) {
-                UserStatisticsVo statistics = baseMapper.statistics(userBo);
-                if (ObjectUtil.isNotNull(statistics)) {
-                    item.setAvailablePoint(statistics.getAvailablePoint());
-                    item.setShopConsume(statistics.getShopConsume());
-                    item.setLineConsume(statistics.getLineConsume());
-                }
+        return list.stream().map(item -> convertVo(item, isBusiness)).collect(Collectors.toList());
+    }
+
+    private UserVo convertVo(UserVo userVo, boolean isBusiness) {
+        UserBo userBo = new UserBo();
+        userBo.setId(userVo.getId());
+        userVo.setSurplusQueueMoney(baseMapper.querySurplusQueueMoney(userBo));
+        UserStatisticsVo userStatisticsVo = baseMapper.querySubsidyMoney(userBo);
+        if (ObjectUtil.isNotNull(userStatisticsVo)) {
+            userVo.setShouldSubsidyMoney(userStatisticsVo.getShouldSubsidyMoney());
+            userVo.setAlreadySubsidyMoney(userStatisticsVo.getAlreadySubsidyMoney());
+        }
+        if (!isBusiness) {
+            UserStatisticsVo statistics = baseMapper.statistics(userBo);
+            if (ObjectUtil.isNotNull(statistics)) {
+                userVo.setAvailablePoint(statistics.getAvailablePoint());
+                userVo.setShopConsume(statistics.getShopConsume());
+                userVo.setLineConsume(statistics.getLineConsume());
             }
-            return item;
-        }).collect(Collectors.toList());
+        }
+        return userVo;
     }
 
     /**
@@ -426,6 +428,10 @@ public class UserServiceImpl implements IUserService {
         }
 
         User user = this.getById(userThirdIdentity.getUserId(), true);
+        //如果用户被禁用,则不能登录
+        if (!user.getStatus()) {
+            throw new ServiceException(ExceptionEnum.USER_DISABLED);
+        }
         user.setLastLoginTime(new Date());
         this.baseMapper.updateById(user);
         return user;
@@ -497,7 +503,10 @@ public class UserServiceImpl implements IUserService {
         wxUserDto.setMobile(bo.getMobile());
         wxUserDto.setNickname(bo.getNickname());
         User user = registerOrLogin(wxUserDto, null, null);
-
+        //如果用户被禁用,则不能登录
+        if (!user.getStatus()) {
+            throw new ServiceException(ExceptionEnum.USER_DISABLED);
+        }
         UserLoginVo userLoginVo = new UserLoginVo();
         userLoginVo.setUser(user);
         userLoginVo.setIsReg(wxUserDto.getIsReg());