分组
This commit is contained in:
@ -104,8 +104,8 @@ public class CardController {
|
||||
@PutMapping("/recharge")
|
||||
@Operation(summary = "充值")
|
||||
//@PreAuthorize("@ss.hasPermission('member:card:update')")
|
||||
public CommonResult<Boolean> recharge(BigDecimal money,BigDecimal giftMoney) {
|
||||
cardService.recharge(money, CardDO.ADD,giftMoney, SecurityFrameworkUtils.getLoginUserId());
|
||||
public CommonResult<Boolean> recharge(BigDecimal money,BigDecimal giftMoney,Long userId) {
|
||||
cardService.recharge(money, CardDO.ADD,giftMoney, userId);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
|
@ -5,11 +5,9 @@ import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.CustomerTrafficRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.screen.vo.CarTeenInfoVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.screen.vo.DeviceInfo;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.screen.vo.DishVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.screen.vo.StoreEvaluateVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.screen.vo.*;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.userpreference.vo.UserPreferencePercentVO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.business.BusinessDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDO;
|
||||
@ -26,10 +24,7 @@ import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Parameters;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.annotation.security.PermitAll;
|
||||
@ -192,4 +187,19 @@ public class ScreenController {
|
||||
return success(deviceInfo);
|
||||
}
|
||||
|
||||
@GetMapping("/turnover")
|
||||
@Operation(summary = "获取食堂营业额")
|
||||
@PermitAll
|
||||
public CommonResult<BusinessRespVO> getCanteenTurnover(TurnoverVO turnoverVO) {
|
||||
return success(businessService.getTurnover(turnoverVO));
|
||||
}
|
||||
|
||||
@GetMapping("/turnoverHistogram")
|
||||
@Operation(summary = "获取食堂营业额柱状图")
|
||||
@PermitAll
|
||||
public CommonResult<List<BusinessRespVO>> getCanteenTurnoverHistogram(TurnoverVO turnoverVO) {
|
||||
return success(businessService.getTurnoverList(turnoverVO));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,24 @@
|
||||
package cn.iocoder.yudao.module.member.controller.admin.screen.vo;
|
||||
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.sun.xml.internal.ws.developer.Serialization;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
public class TurnoverVO {
|
||||
|
||||
@Schema(description = "开始时间 yyyy-MM-dd HH:mm:ss")
|
||||
private String startTime;
|
||||
|
||||
@Schema(description = "结束时间 yyyy-MM-dd HH:mm:ss")
|
||||
private String endTime;
|
||||
|
||||
@Schema(description = "门店")
|
||||
private Long carteenId;
|
||||
}
|
@ -126,7 +126,7 @@ public class MemberUserController {
|
||||
memberUserRespVO.setTagNames(tagNames);
|
||||
}
|
||||
memberUserRespVO.setFaceUrl(memberUserService.getFaceUrl(memberUserRespVO.getId()));
|
||||
memberUserRespVO.setGroupName(MemberGroupService.getGroupNameByUserId(id));
|
||||
// memberUserRespVO.setGroupName(MemberGroupService.getGroupNameByUserId(id));
|
||||
return success(memberUserRespVO);
|
||||
}
|
||||
|
||||
@ -153,9 +153,9 @@ public class MemberUserController {
|
||||
convertSet(pageResult.getList(), MemberUserDO::getGroupId));
|
||||
PageResult<MemberUserRespVO> memberUserRespVOPageResult = MemberUserConvert.INSTANCE.convertPage(pageResult, tags, levels, groups);
|
||||
//处理用户分组返显
|
||||
Map<Long, String> groupNames = MemberGroupService.getGroupNameByUserIds(pageResult.getList().stream().map(MemberUserDO::getId).collect(Collectors.toList()));
|
||||
// Map<Long, String> groupNames = MemberGroupService.getGroupNameByUserIds(pageResult.getList().stream().map(MemberUserDO::getId).collect(Collectors.toList()));
|
||||
memberUserRespVOPageResult.getList().forEach(respVo->{
|
||||
respVo.setGroupName(groupNames.get(respVo.getId()));
|
||||
// respVo.setGroupName(groupNames.get(respVo.getId()));
|
||||
respVo.setFaceUrl(memberUserService.getFaceUrl(respVo.getId()));
|
||||
});
|
||||
return success(memberUserRespVOPageResult);
|
||||
|
@ -84,4 +84,14 @@ public class CardDO extends BaseDO {
|
||||
* 门店
|
||||
*/
|
||||
private Long carteenId;
|
||||
|
||||
/**
|
||||
* 分组
|
||||
*/
|
||||
private Long groupId;
|
||||
|
||||
/**
|
||||
* 组名
|
||||
*/
|
||||
private String groupName;
|
||||
}
|
@ -62,5 +62,5 @@ public interface MemberGroupMapper extends BaseMapperX<MemberGroupDO> {
|
||||
@Delete("delete from member_group_member where group_id = #{groupId}")
|
||||
void deleteAssociation(Long groupId);
|
||||
|
||||
Long getCarteenId(Long userId);
|
||||
List<Long> getCarteenId(Long userId);
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessPageR
|
||||
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessSaveReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.screen.vo.TurnoverVO;
|
||||
import cn.iocoder.yudao.module.member.controller.app.business.vo.BusinessDataVO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.business.BusinessDO;
|
||||
|
||||
@ -66,4 +67,8 @@ public interface BusinessService {
|
||||
BusinessDataVO getMonth(String time,Long carteenId);
|
||||
|
||||
BusinessDO getToday(Long carteenId);
|
||||
|
||||
BusinessRespVO getTurnover(TurnoverVO turnoverVO);
|
||||
|
||||
List<BusinessRespVO> getTurnoverList(TurnoverVO turnoverVO);
|
||||
}
|
@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessPageR
|
||||
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessSaveReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.screen.vo.TurnoverVO;
|
||||
import cn.iocoder.yudao.module.member.controller.app.business.vo.BusinessDataVO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.business.BusinessDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.orderdetail.OrderDetailDO;
|
||||
@ -37,6 +38,7 @@ import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.YearMonth;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.temporal.TemporalAdjusters;
|
||||
import java.time.temporal.WeekFields;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
@ -398,4 +400,75 @@ public class BusinessServiceImpl implements BusinessService {
|
||||
.eq(BusinessDO::getCarteenId, carteenId));
|
||||
return CollectionUtil.isNotEmpty(businessDOS)?businessDOS.get(0):new BusinessDO();
|
||||
}
|
||||
|
||||
@Override
|
||||
public BusinessRespVO getTurnover(TurnoverVO turnoverVO) {
|
||||
|
||||
List<BusinessDO> businessDOS = businessMapper.selectList(Wrappers.<BusinessDO>lambdaQuery()
|
||||
.between(BusinessDO::getCreateTime,MemberTimeUtils.string2Time(turnoverVO.getStartTime()), MemberTimeUtils.string2Time(turnoverVO.getEndTime()))
|
||||
.eq(BusinessDO::getCarteenId, turnoverVO.getCarteenId()));
|
||||
BusinessRespVO businessDO = getInitBusinessRespVO();
|
||||
if(CollectionUtil.isNotEmpty(businessDOS)){
|
||||
businessDO.setTurnover(businessDOS.stream().map(BusinessDO::getTurnover).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
businessDO.setOrderSum(businessDOS.stream().map(BusinessDO::getOrderSum).reduce(0, Integer::sum));
|
||||
businessDO.setCustomerSum(businessDOS.stream().map(BusinessDO::getCustomerSum).reduce(0, Integer::sum));
|
||||
businessDO.setPriceAvg(businessDOS.stream().map(BusinessDO::getPriceAvg).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
businessDO.setBreakfast(businessDOS.stream().map(BusinessDO::getBreakfast).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
businessDO.setLunch(businessDOS.stream().map(BusinessDO::getLunch).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
businessDO.setDinner(businessDOS.stream().map(BusinessDO::getDinner).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
businessDO.setBreakfastNum(businessDOS.stream().map(BusinessDO::getBreakfastNum).reduce(0, Integer::sum));
|
||||
businessDO.setLunchNum(businessDOS.stream().map(BusinessDO::getLunchNum).reduce(0, Integer::sum));
|
||||
businessDO.setDinnerNum(businessDOS.stream().map(BusinessDO::getDinnerNum).reduce(0, Integer::sum));
|
||||
}
|
||||
return businessDO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BusinessRespVO> getTurnoverList(TurnoverVO turnoverVO) {
|
||||
LocalDateTime startTime = MemberTimeUtils.string2Time(turnoverVO.getStartTime());
|
||||
LocalDateTime endTime = MemberTimeUtils.string2Time(turnoverVO.getEndTime());
|
||||
|
||||
LocalDate startDate = startTime.toLocalDate();
|
||||
LocalDate endDate = endTime.toLocalDate();
|
||||
if(startDate.equals(endDate)){
|
||||
// 获取本月开始时间:本月的第一天00:00:00
|
||||
startDate= startTime.with(TemporalAdjusters.firstDayOfMonth()).toLocalDate();
|
||||
startTime = startDate.atStartOfDay();
|
||||
|
||||
// 获取本月结束时间:本月的最后一天23:59:59.999999999
|
||||
endDate = endTime.with(TemporalAdjusters.lastDayOfMonth()).toLocalDate();
|
||||
endTime = endDate.atTime(LocalTime.MAX);
|
||||
}
|
||||
List<BusinessDO> businessDOS = businessMapper.selectList(Wrappers.<BusinessDO>lambdaQuery()
|
||||
.between(BusinessDO::getCreateTime,startTime, endTime)
|
||||
.eq(BusinessDO::getCarteenId, turnoverVO.getCarteenId()));
|
||||
|
||||
Map<Integer, BusinessDO> map = businessDOS.stream()
|
||||
.filter(Objects::nonNull) // 过滤掉null值
|
||||
.collect(Collectors.toMap(
|
||||
vo -> vo.getCreateTime().toLocalDate().getDayOfMonth(),
|
||||
vo -> vo,
|
||||
(existing, replacement) -> existing
|
||||
));
|
||||
// 创建一个Map来存储每天的数据
|
||||
Map<Integer, BusinessRespVO> monthData = new LinkedHashMap<>();
|
||||
|
||||
int start = startDate.getDayOfMonth();
|
||||
|
||||
int end = endDate.getDayOfMonth();
|
||||
|
||||
for (int day = start; day <= end; day++) {
|
||||
new BusinessRespVO();
|
||||
BusinessRespVO bean;
|
||||
if(map.get(day) == null){
|
||||
bean = getInitBusinessRespVO().setTime(String.valueOf(day));
|
||||
}else {
|
||||
bean = BeanUtils.toBean(map.get(day), BusinessRespVO.class);
|
||||
bean.setTime(String.valueOf(day));
|
||||
}
|
||||
monthData.put(day,bean);
|
||||
|
||||
}
|
||||
return new ArrayList<>(monthData.values());
|
||||
}
|
||||
}
|
@ -132,5 +132,5 @@ public interface MemberGroupService {
|
||||
|
||||
void setAdmin(GroupAdminReqVO vo);
|
||||
|
||||
Long getCarteenId(Long userId);
|
||||
List<Long> getCarteenId(Long userId);
|
||||
}
|
||||
|
@ -148,10 +148,9 @@ public class MemberGroupServiceImpl implements MemberGroupService {
|
||||
@Override
|
||||
public PageResult<MemberUserDO> getUserList(MemberUserListVO listVO) {
|
||||
//List<Long> memberList = memberGroupMapper.getMemberList(listVO.getGroupId());
|
||||
List<Long> memberList = memberGroupMapper.getAllMember();
|
||||
listVO.setIds(memberList);
|
||||
PageResult<MemberUserDO> groupUserList = memberUserService.getGroupUserList(listVO);
|
||||
return groupUserList;
|
||||
// List<Long> memberList = memberGroupMapper.getAllMember();
|
||||
// listVO.setIds(memberList);
|
||||
return memberUserService.getGroupUserList(listVO);
|
||||
|
||||
}
|
||||
|
||||
@ -199,7 +198,7 @@ public class MemberGroupServiceImpl implements MemberGroupService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getCarteenId(Long userId) {
|
||||
public List<Long> getCarteenId(Long userId) {
|
||||
return memberGroupMapper.getCarteenId(userId);
|
||||
}
|
||||
}
|
||||
|
@ -23,6 +23,7 @@ import cn.iocoder.yudao.module.member.controller.app.store.vo.UserInfoVo;
|
||||
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.AppStoreGoodsDetail;
|
||||
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.AppStoreOrderVO;
|
||||
import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.CardDto;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.money.MoneyDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.storeorderdetail.StoreOrderDetailDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
||||
@ -32,6 +33,7 @@ import cn.iocoder.yudao.module.member.service.amount.AmountService;
|
||||
import cn.iocoder.yudao.module.member.service.amount.DeductionService;
|
||||
import cn.iocoder.yudao.module.member.service.amount.LockManager;
|
||||
import cn.iocoder.yudao.module.member.service.card.CardService;
|
||||
import cn.iocoder.yudao.module.member.service.money.MoneyService;
|
||||
import cn.iocoder.yudao.module.member.service.storebusiness.StoreBusinessService;
|
||||
import cn.iocoder.yudao.module.member.service.storegoodsinventory.StoreGoodsInventoryService;
|
||||
import cn.iocoder.yudao.module.member.service.storeorderdetail.StoreOrderDetailService;
|
||||
@ -77,7 +79,7 @@ public class StoreOrderServiceImpl implements StoreOrderService {
|
||||
private StoreOrderDetailService orderDetailService;
|
||||
|
||||
@Resource
|
||||
private CardService cardService;
|
||||
private MoneyService moneyService;
|
||||
|
||||
@Resource
|
||||
private MemberUserService userService;
|
||||
@ -232,8 +234,13 @@ public class StoreOrderServiceImpl implements StoreOrderService {
|
||||
BigDecimal totalMoney = BigDecimal.valueOf(sum);
|
||||
|
||||
MemberUserDO user = userService.getUser(Long.valueOf(s));
|
||||
MoneyDO moneyDO = moneyService.getMoney(user.getId(), storeId);
|
||||
BigDecimal cashAmount = BigDecimal.ZERO;
|
||||
if(ObjectUtil.isNotEmpty(moneyDO)){
|
||||
cashAmount = moneyDO.getCashAmount();
|
||||
}
|
||||
dto.setUserId(user.getId());
|
||||
if(user.getMoney().compareTo(totalMoney) < 0){
|
||||
if(user.getWxAmount().add(cashAmount).compareTo(totalMoney) < 0){
|
||||
throw exception(AMOUNT_NOT_ENOUGH);
|
||||
}
|
||||
|
||||
|
@ -99,4 +99,12 @@ public class MemberTimeUtils {
|
||||
return DateUtil.month(date) + 1;
|
||||
}
|
||||
|
||||
public static LocalDateTime string2Time(String time) {
|
||||
// 定义日期字符串格式
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
// 将字符串解析为LocalDate对象
|
||||
return LocalDateTime.parse(time, formatter);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -88,7 +88,7 @@
|
||||
|
||||
<select id="getCarteenId" resultType="long">
|
||||
SELECT carteen_id FROM member_group WHERE
|
||||
id = (select group_id from member_group_member where member_id = #{userId})
|
||||
id in (select group_id from member_group_member where member_id = #{userId})
|
||||
</select>
|
||||
|
||||
</mapper>
|
Reference in New Issue
Block a user