This commit is contained in:
PQZ 2025-04-18 17:54:06 +08:00
parent 9a6b8574ac
commit 35a13a527b
11 changed files with 152 additions and 70 deletions

View File

@ -137,7 +137,11 @@ public class BusiNoticeController extends BaseController
public AjaxResult saveOrUpdate(@RequestBody BusiNotice busiNotice)
{
JSONObject res = new JSONObject();
try{
res.put("noticeId", busiNoticeService.saveOrUpdateVo(busiNotice));
} catch (Exception e){
return error(e.getMessage());
}
return success(res);
}

View File

@ -47,7 +47,7 @@ public interface IBusiNoticeService extends IService<BusiNotice>
* @param data 保存参数
*/
void updateByIdVo(BusiNotice data);
String saveOrUpdateVo(BusiNotice data);
String saveOrUpdateVo(BusiNotice data) throws Exception;
void removeByIdsVo(List<String> ids);
/**

View File

@ -35,6 +35,7 @@ import com.ruoyi.constant.DictConstants;
import com.ruoyi.member.domain.MemberApply;
import com.ruoyi.member.domain.MemberUser;
import com.ruoyi.member.service.IMemberApplyService;
import com.ruoyi.member.service.IMemberCardService;
import com.ruoyi.member.service.IMemberUserService;
import com.ruoyi.system.service.ISysDictDataService;
import com.ruoyi.system.service.ISysDictTypeService;
@ -46,6 +47,8 @@ import com.ruoyi.busi.mapper.BusiNoticeMapper;
import com.ruoyi.busi.service.IBusiNoticeService;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/**
* 通告Service业务层处理
*
@ -77,6 +80,8 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
private IBusiNoticeFormService busiNoticeFormService;
@Autowired
private IBaseCityService cityService;
@Resource
private IMemberCardService cardService;
@Override
@ -191,7 +196,9 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
@Override
@Transactional
public String saveOrUpdateVo(BusiNotice data) {
public String saveOrUpdateVo(BusiNotice data) throws Exception {
//获取当前登录用户id
Long userId = SecurityUtils.getUserId();
if(ObjectUtil.isNotEmpty(data.getCityId())){
//转换城市名称
LambdaQueryWrapper<BaseCity> queryWrapper =new LambdaQueryWrapper<>();
@ -209,6 +216,10 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
}else {
this.saveVo(data);
}
cardService.dealMemberRights(userId,null,"add_notice",1);
if (CollectionUtil.isNotEmpty(data.getCustomForm())) {
cardService.dealMemberRights(userId,null,"report_info_collect",1);
}
return data.getId();
}

View File

@ -12,6 +12,7 @@ import com.ruoyi.common.utils.DateUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.member.service.IMemberCardService;
import com.ruoyi.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -20,6 +21,8 @@ import com.ruoyi.busi.mapper.BusiNoticeSignMapper;
import com.ruoyi.busi.domain.BusiNoticeSign;
import com.ruoyi.busi.service.IBusiNoticeSignService;
import javax.annotation.Resource;
/**
* 通告报名Service业务层处理
*
@ -33,6 +36,8 @@ public class BusiNoticeSignServiceImpl extends ServiceImpl<BusiNoticeSignMapper,
private BusiNoticeSignMapper busiNoticeSignMapper;
@Autowired
private ISysUserService userService;
@Resource
private IMemberCardService cardService;
@Override
public IPage<BusiNoticeSign> queryListPage(BusiNoticeSign pageReqVO, Page<BusiNoticeSign> page) {
@ -51,8 +56,8 @@ public class BusiNoticeSignServiceImpl extends ServiceImpl<BusiNoticeSignMapper,
throw new Exception("请勿重复报名!");
}
SysUser sysUser = userService.selectUserById(loginUser.getUserId());
int i = 0;
for (JSONObject cardInfo : appNoticeSign.getCardList()) {
BusiNoticeSign busiNoticeSign =new BusiNoticeSign();
busiNoticeSign.setNoticeId(appNoticeSign.getNoticeId());
busiNoticeSign.setUserId(loginUser.getUserId());
@ -67,7 +72,9 @@ public class BusiNoticeSignServiceImpl extends ServiceImpl<BusiNoticeSignMapper,
busiNoticeSign.setIsSuper(appNoticeSign.getIsSuper());
busiNoticeSign.setAddrId(appNoticeSign.getAddressId());
busiNoticeSignMapper.insert(busiNoticeSign);
i++;
}
cardService.dealMemberRights(loginUser.getUserId(),null,"report",i);
}
/**

View File

@ -8,14 +8,7 @@ import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
@ -33,8 +26,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
*/
@RestController
@RequestMapping("/member/card")
public class MemberCardController extends BaseController
{
public class MemberCardController extends BaseController {
@Autowired
private IMemberCardService memberCardService;
@ -43,21 +35,43 @@ public class MemberCardController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('member:card:list')")
@GetMapping("/list")
public AjaxResult list(MemberCard memberCard)
{
public AjaxResult list(MemberCard memberCard) {
List<MemberCard> list = memberCardService.list();
return success(list);
}
/**
* 通用权益值扣除接口
*
* @param userId 用户id
* @param rightsCode 权益code
* @param deplete 消耗值
* @return com.ruoyi.common.core.domain.AjaxResult
* @author PQZ
* @date 15:10 2025/4/18
**/
@GetMapping("/dealMemberRights")
public AjaxResult list(@RequestParam("userId") Long userId,
@RequestParam("rightsCode") String rightsCode,
@RequestParam("deplete") Integer deplete,
@RequestParam(value = "noticeId", required = false) String noticeId) {
try {
memberCardService.dealMemberRights(userId, noticeId, rightsCode, deplete);
} catch (Exception e) {
e.printStackTrace();
return error(e.getMessage());
}
return success();
}
/**
* 导出会员开卡记录列表
*/
@PreAuthorize("@ss.hasPermi('member:card:export')")
@Log(title = "会员开卡记录", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, MemberCard memberCard)
{
public void export(HttpServletResponse response, MemberCard memberCard) {
List<MemberCard> list = memberCardService.list();
ExcelUtil<MemberCard> util = new ExcelUtil<MemberCard>(MemberCard.class);
util.exportExcel(response, list, "会员开卡记录数据");
@ -68,8 +82,7 @@ public class MemberCardController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('member:card:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") String id)
{
public AjaxResult getInfo(@PathVariable("id") String id) {
return success(memberCardService.getById(id));
}
@ -79,8 +92,7 @@ public class MemberCardController extends BaseController
@PreAuthorize("@ss.hasPermi('member:card:add')")
@Log(title = "会员开卡记录", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody MemberCard memberCard)
{
public AjaxResult add(@RequestBody MemberCard memberCard) {
return toAjax(memberCardService.save(memberCard));
}
@ -90,8 +102,7 @@ public class MemberCardController extends BaseController
@PreAuthorize("@ss.hasPermi('member:card:edit')")
@Log(title = "会员开卡记录", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody MemberCard memberCard)
{
public AjaxResult edit(@RequestBody MemberCard memberCard) {
return toAjax(memberCardService.updateById(memberCard));
}
@ -101,8 +112,7 @@ public class MemberCardController extends BaseController
@PreAuthorize("@ss.hasPermi('member:card:remove')")
@Log(title = "会员开卡记录", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable String[] ids)
{
public AjaxResult remove(@PathVariable String[] ids) {
List<String> list = new ArrayList<>(Arrays.asList(ids));
return toAjax(memberCardService.removeByIds(list));
}
@ -112,8 +122,7 @@ public class MemberCardController extends BaseController
*/
@GetMapping("/selectMemberRights")
public AjaxResult selectMemberRights()
{
public AjaxResult selectMemberRights() {
return success(memberCardService.selectMemberRights(SecurityUtils.getUserId(), null));
}

View File

@ -68,10 +68,10 @@ public interface IMemberCardService extends IService<MemberCard> {
* @author PQZ
* @date 14:23 2025/4/17
* @param userId 用户id
* @param noticeId 通告id
* @param rightsCode 权益编码
* @param deplete 扣的值
* @return void
**/
void dealMemberRights(Long userId,String rightsCode,Integer deplete) throws Exception;
void dealMemberRights(Long userId,String noticeId,String rightsCode,Integer deplete) throws Exception;
}

View File

@ -1,6 +1,5 @@
package com.ruoyi.member.service;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.member.domain.MemberFootprint;
@ -10,7 +9,17 @@ import com.ruoyi.member.domain.MemberFootprint;
* @author vinjor-m
* @date 2025-03-17
*/
public interface IMemberFootprintService extends IService<MemberFootprint>
{
public interface IMemberFootprintService extends IService<MemberFootprint> {
/**
* 校验用户是否解锁过当前通告
*
* @param noticeId 通告id
* @param userId 用户id
* @return java.lang.Boolean
* @author PQZ
* @date 15:21 2025/4/18
**/
Boolean checkFoot(String noticeId, Long userId);
}

View File

@ -38,11 +38,11 @@ public interface IMemberRightsService extends IService<MemberRights> {
* 根据用户id卡id权益编码更新剩余值
*
* @param userId 用户id
* @param cardId 卡id
* @param memberCards 卡集合
* @param rightsCode 权益编码
* @param deplete 消耗值
* @author PQZ
* @date 14:32 2025/4/17
**/
void dealMemberRights(Long userId, String cardId, String rightsCode, Integer deplete) throws Exception;
void dealMemberRights(Long userId, List<MemberCard> memberCards, String rightsCode, Integer deplete) throws Exception;
}

View File

@ -17,9 +17,11 @@ import com.ruoyi.member.domain.MemberRights;
import com.ruoyi.member.mapper.MemberCardMapper;
import com.ruoyi.member.mapper.MemberRightsMapper;
import com.ruoyi.member.service.IMemberCardService;
import com.ruoyi.member.service.IMemberFootprintService;
import com.ruoyi.member.service.IMemberRightsService;
import com.ruoyi.member.vo.MemberRightsVO;
import com.ruoyi.member.vo.ViewRightsVO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -48,6 +50,8 @@ public class MemberCardServiceImpl extends ServiceImpl<MemberCardMapper, MemberC
private IMemberRightsService rightsService;
@Autowired
private MemberRightsMapper memberRightsMapper;
@Resource
private IMemberFootprintService footprintService;
/**
@ -244,8 +248,10 @@ public class MemberCardServiceImpl extends ServiceImpl<MemberCardMapper, MemberC
//查询当前用户在当前时间有无正在服役的会员卡
Date time = new Date();
LambdaQueryWrapper<MemberCard> lambdaQueryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotEmpty(userType)) {
lambdaQueryWrapper.eq(MemberCard::getUserType, userType);
}
lambdaQueryWrapper
.eq(MemberCard::getUserType, userType)
.eq(MemberCard::getUserId, userId)
.eq(DlBaseEntity::getDelFlag, 0)
.lt(MemberCard::getStartDate, time)
@ -257,19 +263,31 @@ public class MemberCardServiceImpl extends ServiceImpl<MemberCardMapper, MemberC
/**
* @param userId 用户id
* @param rightsCode 权益编码
* @param noticeId 通告id
* @param deplete 扣的值
* @author PQZ
* @date 14:23 2025/4/17
**/
@Override
@Transactional(rollbackFor = Exception.class)
public void dealMemberRights(Long userId, String rightsCode, Integer deplete) throws Exception {
public void dealMemberRights(Long userId,String noticeId, String rightsCode, Integer deplete) throws Exception {
//查询当前用户有无正在服役的通告主卡
List<MemberCard> memberCards = getMemberCards(userId, "01");
List<MemberCard> memberCards = getMemberCards(userId,null);
if (memberCards.isEmpty()){
throw new Exception("无正在服役的会员卡");
}
rightsService.dealMemberRights(userId,memberCards.get(0).getCardId(),rightsCode,deplete);
if ("unlock_notice".equals(rightsCode)) {
if (noticeId == null){
throw new Exception("无法识别当前通告");
}
//true表示有浏览记录false表示没有浏览记录如果当前用户在足迹表中未发现该通告
if (footprintService.checkFoot(noticeId,userId)){
rightsService.dealMemberRights(userId,memberCards,rightsCode,deplete);
}
} else {
rightsService.dealMemberRights(userId,memberCards,rightsCode,deplete);
}
}
/**

View File

@ -1,13 +1,14 @@
package com.ruoyi.member.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.member.domain.MemberFootprint;
import com.ruoyi.member.mapper.MemberFootprintMapper;
import com.ruoyi.member.service.IMemberFootprintService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.member.mapper.MemberFootprintMapper;
import com.ruoyi.member.domain.MemberFootprint;
import com.ruoyi.member.service.IMemberFootprintService;
import java.util.List;
/**
* 浏览足迹Service业务层处理
@ -16,10 +17,26 @@ import com.ruoyi.member.service.IMemberFootprintService;
* @date 2025-03-17
*/
@Service
public class MemberFootprintServiceImpl extends ServiceImpl<MemberFootprintMapper,MemberFootprint> implements IMemberFootprintService
{
public class MemberFootprintServiceImpl extends ServiceImpl<MemberFootprintMapper, MemberFootprint> implements IMemberFootprintService {
@Autowired
private MemberFootprintMapper memberFootprintMapper;
/**
* 校验用户是否解锁过当前通告
*
* @param noticeId 通告id
* @param userId 用户id
* @return java.lang.Boolean
* @author PQZ
* @date 15:21 2025/4/18
**/
@Override
public Boolean checkFoot(String noticeId, Long userId) {
LambdaQueryWrapper<MemberFootprint> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(MemberFootprint::getNoticeId, noticeId)
.eq(MemberFootprint::getUserId, userId);
List<MemberFootprint> list = list(lambdaQueryWrapper);
return list.isEmpty();
}
}

View File

@ -86,24 +86,31 @@ public class MemberRightsServiceImpl extends ServiceImpl<MemberRightsMapper, Mem
* 根据用户id卡id权益编码更新剩余值
*
* @param userId 用户id
* @param cardId 卡id
* @param memberCards 卡集合
* @param rightsCode 权益编码
* @param deplete 消耗值
* @author PQZ
* @date 14:32 2025/4/17
**/
@Override
public void dealMemberRights(Long userId, String cardId, String rightsCode, Integer deplete) throws Exception {
public void dealMemberRights(Long userId, List<MemberCard> memberCards, String rightsCode, Integer deplete) throws Exception {
List<String> cardIds = memberCards.stream().map(MemberCard::getCardId).collect(Collectors.toList());
LambdaQueryWrapper<MemberRights> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(MemberRights::getUserId, userId)
.eq(MemberRights::getCardId,cardId)
.in(MemberRights::getCardId, cardIds)
.eq(MemberRights::getRightsCode, rightsCode);
try {
MemberRights rights = getOne(lambdaQueryWrapper);
rights.setRemaining(rights.getRemaining()-deplete);
if (!("02".equals(rights.getRightsType()) && rights.getRightsValue() == 0)) {
int result = rights.getRemaining() - deplete;
if (result == 0) {
throw new Exception("今日次数已达上限");
}
rights.setRemaining(result);
updateById(rights);
}
} catch (Exception e) {
throw new Exception("根据用户id卡id权益编码查询权益出现错误");
throw new Exception(e.getMessage());
}
}