Browse Source

发放余额功能

fushengqian 1 year ago
parent
commit
d7157d5da5

+ 12 - 0
fuint-application/src/main/java/com/fuint/common/service/BalanceService.java

@@ -32,6 +32,18 @@ public interface BalanceService extends IService<MtBalance> {
      */
     Boolean addBalance(MtBalance reqDto) throws BusinessCheckException;
 
+    /**
+     * 发放余额
+     *
+     * @param merchantId
+     * @param object
+     * @param userIds
+     * @param amount
+     * @param remark
+     * @return
+     */
+    void distribute(Integer merchantId, String object, String userIds, String amount, String remark) throws BusinessCheckException;
+
     /**
      * 获取订单余额记录
      *

+ 3 - 2
fuint-application/src/main/java/com/fuint/common/service/MemberService.java

@@ -173,13 +173,14 @@ public interface MemberService extends IService<MtUser> {
     List<MemberTopDto> getMemberConsumeTopList(Integer merchantId, Integer storeId, Date startTime, Date endTime);
 
     /**
-     * 获取分组会员列表
+     * 查找会员列表
      *
      * @param merchantId
+     * @param keyword
      * @param groupIds
      * @param page
      * @param pageSize
      * @return
      * */
-    List<GroupMemberDto> getGroupMembers(Integer merchantId, String groupIds, Integer page, Integer pageSize);
+    List<GroupMemberDto> searchMembers(Integer merchantId, String keyword, String groupIds, Integer page, Integer pageSize);
 }

+ 36 - 0
fuint-application/src/main/java/com/fuint/common/service/impl/BalanceServiceImpl.java

@@ -9,6 +9,7 @@ import com.fuint.common.enums.WxMessageEnum;
 import com.fuint.common.service.BalanceService;
 import com.fuint.common.service.MemberService;
 import com.fuint.common.service.WeixinService;
+import com.fuint.common.util.CommonUtil;
 import com.fuint.common.util.DateUtil;
 import com.fuint.common.util.PhoneFormatCheckUtils;
 import com.fuint.framework.annoation.OperationServiceLog;
@@ -20,6 +21,7 @@ import com.fuint.repository.mapper.MtUserMapper;
 import com.fuint.repository.model.MtBalance;
 import com.fuint.repository.model.MtBanner;
 import com.fuint.repository.model.MtUser;
+import com.fuint.utils.StringUtil;
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
 import org.apache.commons.lang.StringUtils;
@@ -170,6 +172,40 @@ public class BalanceServiceImpl extends ServiceImpl<MtBalanceMapper, MtBalance>
         return true;
     }
 
+    /**
+     * 发放余额
+     *
+     * @param merchantId
+     * @param userIds
+     * @param amount
+     * @param remark
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    @OperationServiceLog(description = "发放余额")
+    public void distribute(Integer merchantId,String object, String userIds, String amount, String remark) throws BusinessCheckException {
+        if (!CommonUtil.isNumeric(amount)) {
+            throw new BusinessCheckException("充值金额必须是数字");
+        }
+        if (StringUtil.isEmpty(userIds)) {
+            throw new BusinessCheckException("请先选择会员");
+        }
+        BigDecimal balanceAmount = new BigDecimal(amount);
+
+        List<Integer> userIdArr = new ArrayList<>();
+        List<String> userIdList = Arrays.asList(userIds.split(","));
+        if (userIdList != null && userIdList.size() > 0) {
+            for (String userId : userIdList) {
+                if (!userIdArr.contains(Integer.parseInt(userId))) {
+                    userIdArr.add(Integer.parseInt(userId));
+                }
+            }
+        }
+
+        mtUserMapper.updateUserBalance(merchantId, userIdArr, balanceAmount);
+    }
+
     /**
      * 获取订单余额记录
      *

+ 19 - 7
fuint-application/src/main/java/com/fuint/common/service/impl/MemberServiceImpl.java

@@ -277,10 +277,10 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
         lambdaQueryWrapper.orderByDesc(MtUser::getUpdateTime);
         List<MtUser> userList = mtUserMapper.selectList(lambdaQueryWrapper);
         List<UserDto> dataList = new ArrayList<>();
-        for (MtUser user : userList) {
-            String phone = user.getMobile();
+        for (MtUser mtUser : userList) {
+            String phone = mtUser.getMobile();
             UserDto userDto = new UserDto();
-            BeanUtils.copyProperties(user, userDto);
+            BeanUtils.copyProperties(mtUser, userDto);
             // 隐藏手机号中间四位
             if (phone != null && StringUtil.isNotEmpty(phone) && phone.length() == 11) {
                 userDto.setMobile(phone.substring(0, 3) + "****" + phone.substring(7));
@@ -293,12 +293,16 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
             }
             if (userDto.getGradeId() != null) {
                 Integer mchId = StringUtil.isNotEmpty(merchantId) ? Integer.parseInt(merchantId) : 0;
-                MtUserGrade mtGrade = userGradeService.queryUserGradeById(mchId, Integer.parseInt(userDto.getGradeId()), user.getId());
+                MtUserGrade mtGrade = userGradeService.queryUserGradeById(mchId, Integer.parseInt(userDto.getGradeId()), mtUser.getId());
                 if (mtGrade != null) {
                     userDto.setGradeName(mtGrade.getName());
                 }
             }
-            userDto.setLastLoginTime(TimeUtil.showTime(new Date(), user.getUpdateTime()));
+            if (mtUser.getUserNo() == null || StringUtil.isEmpty(mtUser.getUserNo())) {
+                mtUser.setUserNo(CommonUtil.createUserNo());
+                updateById(mtUser);
+            }
+            userDto.setLastLoginTime(TimeUtil.showTime(new Date(), mtUser.getUpdateTime()));
             dataList.add(userDto);
         }
 
@@ -831,16 +835,17 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
     }
 
     /**
-     * 获取分组会员列表
+     * 查找会员列表
      *
      * @param merchantId
+     * @param keyword
      * @param groupIds
      * @param page
      * @param pageSize
      * @return
      * */
     @Override
-    public List<GroupMemberDto> getGroupMembers(Integer merchantId, String groupIds, Integer page, Integer pageSize) {
+    public List<GroupMemberDto> searchMembers(Integer merchantId, String keyword, String groupIds, Integer page, Integer pageSize) {
         PageHelper.startPage(page, pageSize);
         LambdaQueryWrapper<MtUser> lambdaQueryWrapper = Wrappers.lambdaQuery();
         lambdaQueryWrapper.ne(MtUser::getStatus, StatusEnum.DISABLE.getKey());
@@ -853,6 +858,13 @@ public class MemberServiceImpl extends ServiceImpl<MtUserMapper, MtUser> impleme
                 lambdaQueryWrapper.in(MtUser::getGroupId, idList);
             }
         }
+        if (StringUtil.isNotEmpty(keyword)) {
+            List<String> itemList = Arrays.asList(keyword.split(","));
+            lambdaQueryWrapper.and(wq -> wq
+                    .in(MtUser::getUserNo, itemList)
+                    .or()
+                    .in(MtUser::getMobile, itemList));
+        }
         lambdaQueryWrapper.orderByDesc(MtUser::getUpdateTime);
         List<MtUser> userList = mtUserMapper.selectList(lambdaQueryWrapper);
         List<GroupMemberDto> dataList = new ArrayList<>();

+ 25 - 0
fuint-application/src/main/java/com/fuint/module/backendApi/controller/BackendBalanceController.java

@@ -165,6 +165,31 @@ public class BackendBalanceController extends BaseController {
         return getSuccessResult(true);
     }
 
+    /**
+     * 发放余额
+     *
+     * @param request HttpServletRequest对象
+     * @return
+     */
+    @ApiOperation(value = "发放余额")
+    @RequestMapping(value = "/distribute", method = RequestMethod.POST)
+    @CrossOrigin
+    public ResponseObject distribute(HttpServletRequest request, @RequestBody Map<String, Object> param) throws BusinessCheckException {
+        String token = request.getHeader("Access-Token");
+        String amount = param.get("amount") == null ? "0" : param.get("amount").toString();
+        String remark = param.get("remark") == null ? "后台充值" : param.get("remark").toString();
+        String userIds = param.get("userIds") == null ? "" : param.get("userIds").toString();
+        String object = param.get("object") == null ? "" : param.get("object").toString();
+
+        AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
+        if (accountInfo == null) {
+            return getFailureResult(1001, "请先登录");
+        }
+
+        balanceService.distribute(accountInfo.getMerchantId(), object, userIds, amount, remark);
+        return getSuccessResult(true);
+    }
+
     /**
      * 充值设置详情
      *

+ 6 - 5
fuint-application/src/main/java/com/fuint/module/backendApi/controller/BackendMemberController.java

@@ -474,22 +474,23 @@ public class BackendMemberController extends BaseController {
     }
 
     /**
-     * 获取分组下的会员
+     * 查找会员列表
      *
      * @param request
      * @return
      */
-    @ApiOperation(value = "获取分组下的会员")
-    @RequestMapping(value = "/groupMembers", method = RequestMethod.GET)
+    @ApiOperation(value = "查找会员列表")
+    @RequestMapping(value = "/searchMembers", method = RequestMethod.GET)
     @CrossOrigin
-    public ResponseObject groupMembers(HttpServletRequest request) {
+    public ResponseObject searchMembers(HttpServletRequest request) {
         String token = request.getHeader("Access-Token");
         String groupIds = request.getParameter("groupIds") != null ? request.getParameter("groupIds") : "";
+        String keyword = request.getParameter("keyword") != null ? request.getParameter("keyword") : "";
         AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
         if (accountInfo == null) {
             return getFailureResult(1001, "请先登录");
         }
-        List<GroupMemberDto> memberList = memberService.getGroupMembers(accountInfo.getMerchantId(), groupIds,1, Constants.MAX_ROWS);
+        List<GroupMemberDto> memberList = memberService.searchMembers(accountInfo.getMerchantId(), keyword, groupIds,1, Constants.MAX_ROWS);
         return getSuccessResult(memberList);
     }
 }

+ 4 - 0
fuint-repository/src/main/java/com/fuint/repository/mapper/MtUserMapper.java

@@ -4,6 +4,8 @@ import com.fuint.repository.bean.MemberTopBean;
 import com.fuint.repository.model.MtUser;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -25,6 +27,8 @@ public interface MtUserMapper extends BaseMapper<MtUser> {
 
     void updateActiveTime(@Param("userId") Integer userId, @Param("updateTime") Date updateTime);
 
+    void updateUserBalance(@Param("merchantId") Integer merchantId, @Param("userIds") List<Integer> userIds, @Param("amount") BigDecimal amount);
+
     void resetMobile(@Param("mobile") String mobile, @Param("userId") Integer userId);
 
     Long getUserCount(@Param("merchantId") Integer merchantId);

+ 13 - 0
fuint-repository/src/main/resources/mapper/MtUserMapper.xml

@@ -35,6 +35,19 @@
         update mt_user t set t.UPDATE_TIME = #{updateTime} where t.ID = #{userId}
     </update>
 
+    <update id="updateUserBalance">
+        update mt_user t set t.BALANCE = (t.BALANCE + #{amount}) where t.STATUS = 'A'
+        <if test="userIds != null and userIds.size > 0">
+            AND t.ID IN
+            <foreach collection="userIds" item="userId" index="index" open="(" separator="," close=")">
+                #{userId}
+            </foreach>
+        </if>
+        <if test="merchantId != null and merchantId > 0">
+            AND t.MERCHANT_ID = #{merchantId}
+        </if>
+    </update>
+
     <update id="resetMobile">
         update mt_user t set t.MOBILE = '' where t.MOBILE = #{mobile} and t.ID != #{userId}
     </update>