优化
This commit is contained in:
@ -234,4 +234,14 @@ public class CustomizeExcelController {
|
|||||||
ExcelUtils.write(response, "现金充值.xlsx", "数据", ActivityReserveVO.class,
|
ExcelUtils.write(response, "现金充值.xlsx", "数据", ActivityReserveVO.class,
|
||||||
orderExcelVOS);
|
orderExcelVOS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/overspending")
|
||||||
|
@Operation(summary = "组内每天超过37元的数据")
|
||||||
|
@OperateLog(type = EXPORT)
|
||||||
|
public void exportOverspending(String startTime,String endTime,Long groupId,HttpServletResponse response) throws IOException {
|
||||||
|
List<OverspendingVO> overspendingVOS = excelService.exportOverspending(startTime, endTime, groupId);
|
||||||
|
// 导出 Excel
|
||||||
|
ExcelUtils.write(response, "现金充值.xlsx", "数据", OverspendingVO.class,
|
||||||
|
overspendingVOS);
|
||||||
|
}
|
||||||
}
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo;
|
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
|
import com.alibaba.excel.annotation.format.NumberFormat;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class OverspendingVO {
|
||||||
|
@ExcelProperty("昵称")
|
||||||
|
private String nickName;
|
||||||
|
|
||||||
|
@ExcelProperty("手机")
|
||||||
|
private String mobile;
|
||||||
|
|
||||||
|
@ExcelProperty("消费金额(元)")
|
||||||
|
@NumberFormat("#0.00")
|
||||||
|
private BigDecimal totalMoney;
|
||||||
|
|
||||||
|
@ExcelProperty("超出金额(元)")
|
||||||
|
@NumberFormat("#0.00")
|
||||||
|
private BigDecimal overMoney;
|
||||||
|
|
||||||
|
@ExcelProperty("日期")
|
||||||
|
private String createTime;
|
||||||
|
}
|
@ -34,4 +34,6 @@ public class MemberGroupBaseVO {
|
|||||||
|
|
||||||
@Schema(description = "类型", example = "1")
|
@Schema(description = "类型", example = "1")
|
||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
||||||
|
private String bindStore;
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
|||||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||||
|
import cn.iocoder.yudao.framework.idempotent.core.annotation.Idempotent;
|
||||||
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsReqVO;
|
import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsReqVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsRespVO;
|
import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsRespVO;
|
||||||
@ -129,6 +130,7 @@ public class OrderController {
|
|||||||
|
|
||||||
@GetMapping("/reduction")
|
@GetMapping("/reduction")
|
||||||
@Operation(summary = "减免")
|
@Operation(summary = "减免")
|
||||||
|
@Idempotent(timeout = 3, message = "正在减免,请勿重复提交")
|
||||||
public CommonResult<Boolean> reduction(Long orderId, BigDecimal money){
|
public CommonResult<Boolean> reduction(Long orderId, BigDecimal money){
|
||||||
orderService.reduction(orderId,money);
|
orderService.reduction(orderId,money);
|
||||||
return CommonResult.success(true);
|
return CommonResult.success(true);
|
||||||
|
@ -133,4 +133,10 @@ public class AppMemberGroupController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping("/judgeStoreUse")
|
||||||
|
@Operation(summary = "判断是否被限制超市使用")
|
||||||
|
public CommonResult<Boolean> judgeStoreUse(Long userId) {
|
||||||
|
return success(groupService.judgeStoreUse(userId));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -55,4 +55,7 @@ public class MemberGroupDO extends BaseDO {
|
|||||||
* 1-行政服务中心,2-区管单位,3-盈创力和,4-私人,5-其他单位
|
* 1-行政服务中心,2-区管单位,3-盈创力和,4-私人,5-其他单位
|
||||||
*/
|
*/
|
||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
||||||
|
|
||||||
|
private String bindStore;
|
||||||
}
|
}
|
||||||
|
@ -29,5 +29,6 @@ public interface CustomizeExcelMapper {
|
|||||||
|
|
||||||
List<ActivityReserveVO> exportActivityReserve();
|
List<ActivityReserveVO> exportActivityReserve();
|
||||||
|
|
||||||
|
List<OverspendingVO> exportOverspending(@Param("startTime")String startTime, @Param("endTime")String endTime, @Param("groupId")Long groupId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -8,10 +8,7 @@ import cn.iocoder.yudao.module.member.controller.admin.group.vo.MemberGroupPageV
|
|||||||
import cn.iocoder.yudao.module.member.controller.admin.group.vo.MemberGroupUserVo;
|
import cn.iocoder.yudao.module.member.controller.admin.group.vo.MemberGroupUserVo;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.group.MemberGroupDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.group.MemberGroupDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
||||||
import org.apache.ibatis.annotations.Delete;
|
import org.apache.ibatis.annotations.*;
|
||||||
import org.apache.ibatis.annotations.MapKey;
|
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -66,4 +63,7 @@ public interface MemberGroupMapper extends BaseMapperX<MemberGroupDO> {
|
|||||||
List<Long> getCarteenId(Long userId);
|
List<Long> getCarteenId(Long userId);
|
||||||
|
|
||||||
List<MemberGroupDO> getGroupByUserId(Long userId);
|
List<MemberGroupDO> getGroupByUserId(Long userId);
|
||||||
|
|
||||||
|
@Select("select group_id from member_group_member where member_id = #{userId}")
|
||||||
|
List<Long> getGroupIdByUserId(Long userId);
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ public enum GroupTypeEnum {
|
|||||||
YCLH(3, "盈创力和"),
|
YCLH(3, "盈创力和"),
|
||||||
PERSON(4, "私人"),
|
PERSON(4, "私人"),
|
||||||
OTHER(5, "其他单位"),
|
OTHER(5, "其他单位"),
|
||||||
|
SUPERMARKET_LIMIT(6, "限制超市消费"),
|
||||||
;
|
;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -703,7 +703,7 @@ public class DeductionServiceImpl implements DeductionService {
|
|||||||
user.setCashAmount(user.getCashAmount().add(newAmount));
|
user.setCashAmount(user.getCashAmount().add(newAmount));
|
||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
user.setCashAmount(user.getCashAmount().add(cashAmount));
|
user.setCashAmount(user.getCashAmount().add(money));
|
||||||
}
|
}
|
||||||
|
|
||||||
userService.updateById(user);
|
userService.updateById(user);
|
||||||
|
@ -25,4 +25,6 @@ public interface CustomizeExcelService {
|
|||||||
List<ActivityMxVO> exportActivityMx();
|
List<ActivityMxVO> exportActivityMx();
|
||||||
|
|
||||||
List<ActivityReserveVO> exportActivityReserve();
|
List<ActivityReserveVO> exportActivityReserve();
|
||||||
|
|
||||||
|
List<OverspendingVO> exportOverspending(String startTime, String endTime, Long groupId);
|
||||||
}
|
}
|
||||||
|
@ -57,4 +57,9 @@ public class CustomizeExcelServiceImpl implements CustomizeExcelService {
|
|||||||
public List<ActivityReserveVO> exportActivityReserve() {
|
public List<ActivityReserveVO> exportActivityReserve() {
|
||||||
return customizeExcelMapper.exportActivityReserve();
|
return customizeExcelMapper.exportActivityReserve();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<OverspendingVO> exportOverspending(String startTime, String endTime, Long groupId) {
|
||||||
|
return customizeExcelMapper.exportOverspending(startTime,endTime,groupId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -223,6 +223,9 @@ public class DiningPlatesServiceImpl implements DiningPlatesService {
|
|||||||
//余额验证
|
//余额验证
|
||||||
BigDecimal money = checkMoney(memberUserDO, storeId,true);
|
BigDecimal money = checkMoney(memberUserDO, storeId,true);
|
||||||
|
|
||||||
|
//group验证
|
||||||
|
checkGroup(memberUserDO.getId(),storeId);
|
||||||
|
|
||||||
diningPlatesDO.setUserId(memberUserDO.getId());
|
diningPlatesDO.setUserId(memberUserDO.getId());
|
||||||
|
|
||||||
//创建初始订单
|
//创建初始订单
|
||||||
@ -276,6 +279,8 @@ public class DiningPlatesServiceImpl implements DiningPlatesService {
|
|||||||
checkOrder(memberUserDO.getId(),diningPlatesDO.getStoreId());
|
checkOrder(memberUserDO.getId(),diningPlatesDO.getStoreId());
|
||||||
//余额验证
|
//余额验证
|
||||||
BigDecimal money = checkMoney(memberUserDO,storeId,false);
|
BigDecimal money = checkMoney(memberUserDO,storeId,false);
|
||||||
|
//group验证
|
||||||
|
checkGroup(memberUserDO.getId(),storeId);
|
||||||
|
|
||||||
diningPlatesDO.setUserId(memberUserDO.getId());
|
diningPlatesDO.setUserId(memberUserDO.getId());
|
||||||
//创建初始订单
|
//创建初始订单
|
||||||
@ -443,6 +448,15 @@ public class DiningPlatesServiceImpl implements DiningPlatesService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void checkGroup(Long userId,Long canteenId){
|
||||||
|
|
||||||
|
Boolean b = memberGroupService.judgeGroup(userId, canteenId);
|
||||||
|
if(b){
|
||||||
|
throw exception(new ErrorCode(1_004_099_008, "不能在当前店消费"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public Integer getDiningPlatesByUserId(Long userId,Long storeId){
|
public Integer getDiningPlatesByUserId(Long userId,Long storeId){
|
||||||
return diningPlatesMapper.selectCount(Wrappers.<DiningPlatesDO>lambdaQuery()
|
return diningPlatesMapper.selectCount(Wrappers.<DiningPlatesDO>lambdaQuery()
|
||||||
.eq(DiningPlatesDO::getUserId, userId).eq(DiningPlatesDO::getStoreId,storeId)).intValue();
|
.eq(DiningPlatesDO::getUserId, userId).eq(DiningPlatesDO::getStoreId,storeId)).intValue();
|
||||||
|
@ -6,7 +6,6 @@ import cn.iocoder.yudao.module.member.controller.admin.group.vo.*;
|
|||||||
import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserListVO;
|
import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserListVO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.group.MemberGroupDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.group.MemberGroupDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@ -140,4 +139,8 @@ public interface MemberGroupService {
|
|||||||
Integer getGroupTypeByUserId(Long userId);
|
Integer getGroupTypeByUserId(Long userId);
|
||||||
|
|
||||||
List<Integer> getGroupTypeListByUserId(Long userId);
|
List<Integer> getGroupTypeListByUserId(Long userId);
|
||||||
|
|
||||||
|
Boolean judgeStoreUse(Long userId);
|
||||||
|
|
||||||
|
Boolean judgeGroup(Long userId,Long canteenId);
|
||||||
}
|
}
|
||||||
|
@ -222,4 +222,52 @@ public class MemberGroupServiceImpl implements MemberGroupService {
|
|||||||
}
|
}
|
||||||
return groupByUserId.stream().map(MemberGroupDO::getType).collect(Collectors.toList());
|
return groupByUserId.stream().map(MemberGroupDO::getType).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean judgeStoreUse(Long userId) {
|
||||||
|
List<MemberGroupDO> memberGroupDOS = memberGroupMapper.selectList(Wrappers.<MemberGroupDO>lambdaQuery()
|
||||||
|
.eq(MemberGroupDO::getType, GroupTypeEnum.SUPERMARKET_LIMIT.getCode()));
|
||||||
|
if (CollectionUtil.isEmpty(memberGroupDOS)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Long> groupIdByUserId = memberGroupMapper.getGroupIdByUserId(userId);
|
||||||
|
if (CollectionUtil.isEmpty(groupIdByUserId)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
List<Long> ids = memberGroupDOS.stream().map(MemberGroupDO::getId).collect(Collectors.toList());
|
||||||
|
|
||||||
|
for (Long id : groupIdByUserId) {
|
||||||
|
if (ids.contains(id)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean judgeGroup(Long userId, Long canteenId) {
|
||||||
|
|
||||||
|
List<Long> groupIdByUserId = memberGroupMapper.getGroupIdByUserId(userId);
|
||||||
|
if (CollectionUtil.isEmpty(groupIdByUserId)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<MemberGroupDO> memberGroupDOS = memberGroupMapper.selectList(Wrappers.<MemberGroupDO>lambdaQuery()
|
||||||
|
.eq(MemberGroupDO::getBindStore, "1"));
|
||||||
|
if (CollectionUtil.isEmpty(memberGroupDOS)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<Long, Long> collect = memberGroupDOS.stream().collect(Collectors.toMap(MemberGroupDO::getId, MemberGroupDO::getCarteenId));
|
||||||
|
|
||||||
|
for (Long id : groupIdByUserId) {
|
||||||
|
if(collect.get(id)!=null){
|
||||||
|
if(!collect.get(id).equals(canteenId)){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -78,6 +78,7 @@
|
|||||||
o.total_money,
|
o.total_money,
|
||||||
o.cash_amount,
|
o.cash_amount,
|
||||||
o.wx_amount,
|
o.wx_amount,
|
||||||
|
c.stores_name as storeName,
|
||||||
DATE_FORMAT(o.create_time, '%Y-%m-%d %H:%i:%s') as createTime,
|
DATE_FORMAT(o.create_time, '%Y-%m-%d %H:%i:%s') as createTime,
|
||||||
CASE
|
CASE
|
||||||
WHEN HOUR(o.create_time) BETWEEN 0 AND 9 THEN '早上'
|
WHEN HOUR(o.create_time) BETWEEN 0 AND 9 THEN '早上'
|
||||||
@ -91,8 +92,8 @@
|
|||||||
ELSE '未知' END AS orderStatus
|
ELSE '未知' END AS orderStatus
|
||||||
from member_dish_order o
|
from member_dish_order o
|
||||||
left join member_user u on o.user_id = u.id
|
left join member_user u on o.user_id = u.id
|
||||||
where o.store_id = #{carteenId}
|
left join t_carteen c on o.store_id = c.id
|
||||||
and o.deleted = false
|
where o.deleted = false
|
||||||
and o.user_id in (select member_id from member_group_member where group_id = #{groupId})
|
and o.user_id in (select member_id from member_group_member where group_id = #{groupId})
|
||||||
and DATE_FORMAT(o.create_time, '%Y-%m-%d') BETWEEN #{startTime} AND #{endTime}
|
and DATE_FORMAT(o.create_time, '%Y-%m-%d') BETWEEN #{startTime} AND #{endTime}
|
||||||
</select>
|
</select>
|
||||||
@ -202,4 +203,25 @@
|
|||||||
GROUP BY m.name
|
GROUP BY m.name
|
||||||
ORDER BY m.name
|
ORDER BY m.name
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="exportOverspending" resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.OverspendingVO">
|
||||||
|
SELECT
|
||||||
|
u.nickname,
|
||||||
|
u.mobile,
|
||||||
|
DATE_FORMAT(o.create_time, '%Y-%m-%d') as createTime ,
|
||||||
|
SUM(total_money) AS totalMoney,
|
||||||
|
SUM(total_money)-37 AS overMoney
|
||||||
|
FROM
|
||||||
|
member_dish_order o left join member_user u on o.user_id = u.id and u.deleted = 0
|
||||||
|
WHERE
|
||||||
|
o.deleted = 0
|
||||||
|
and DATE_FORMAT(o.create_time, '%Y-%m-%d') between #{startTime} and #{endTime}
|
||||||
|
and o.user_id in (select member_id from member_group_member m where m.group_id = #{groupId})
|
||||||
|
GROUP BY
|
||||||
|
o.user_id, DATE_FORMAT(o.create_time, '%Y-%m-%d')
|
||||||
|
HAVING
|
||||||
|
SUM(total_money) > 37
|
||||||
|
ORDER BY
|
||||||
|
createTime , totalMoney DESC
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
Reference in New Issue
Block a user