This commit is contained in:
zt
2025-01-15 11:36:55 +08:00
parent 2091903f79
commit 74cbeb1068
9 changed files with 271 additions and 156 deletions

View File

@ -32,4 +32,6 @@ public class MemberGroupBaseVO {
@Schema(description = "食堂Id", example = "1")
private Long carteenId;
@Schema(description = "类型", example = "1")
private Integer type;
}

View File

@ -91,4 +91,9 @@ public class OrderDetailsRespVO {
private BigDecimal refundAmount;
private String faceData;
/**
* 补贴金额
*/
private BigDecimal subsidyAmount;
}

View File

@ -21,7 +21,6 @@ public class MemberTagBaseVO {
* 减免类型1-比例2-固定金额
*/
@Schema(description = "减免类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "减免类型不能为空")
private String type;
/**
* 比例
@ -52,5 +51,28 @@ public class MemberTagBaseVO {
* 晚
*/
private BigDecimal night;
/**
* 早餐比例
*/
private Integer morningProportion;
/**
* 午餐比例
*/
private Integer noonProportion;
/**
* 晚餐比例
*/
private Integer nightProportion;
/**
* 早上基础价钱
*/
private BigDecimal morningBase;
/**
* 中午基础价钱
*/
private BigDecimal noonBase;
/**
* 晚上基础价钱
*/
private BigDecimal nightBase;
}

View File

@ -80,4 +80,9 @@ public class AppOrderRespVO {
private BigDecimal refundAmount;
private String faceData;
/**
* 补贴金额
*/
private BigDecimal subsidyAmount;
}

View File

@ -50,4 +50,9 @@ public class MemberGroupDO extends BaseDO {
* 食堂Id
*/
private Long carteenId;
/**
* 1-行政服务中心2-区管单位3-盈创力和4-私人5-其他单位
*/
private Integer type;
}

View File

@ -109,4 +109,9 @@ public class DishOrderDO extends BaseDO {
private Boolean billingExist;
private String billingNum;
/**
* 补贴金额
*/
private BigDecimal subsidyAmount;
}

View File

@ -66,4 +66,29 @@ public class MemberTagDO extends BaseDO {
*/
private BigDecimal night;
/**
* 早餐比例
*/
private Integer morningProportion;
/**
* 午餐比例
*/
private Integer noonProportion;
/**
* 晚餐比例
*/
private Integer nightProportion;
/**
* 早上基础价钱
*/
private BigDecimal morningBase;
/**
* 中午基础价钱
*/
private BigDecimal noonBase;
/**
* 晚上基础价钱
*/
private BigDecimal nightBase;
}

View File

@ -79,9 +79,12 @@ public class DeductionServiceImpl implements DeductionService {
//BigDecimal money = user.getMoney();
//计算减免价格
BigDecimal reductionAmount = BigDecimal.ZERO;
//补贴
BigDecimal subsidyAmount = BigDecimal.ZERO;
if (total.compareTo(BigDecimal.ZERO) > 0) {
reductionAmount = userService.getReductionAmount(userId, total, dishOrderDO.getCreateTime());
subsidyAmount = userService.getReductionAmount(userId, total, dishOrderDO.getCreateTime());
}
dishOrderDO.setSubsidyAmount(subsidyAmount);
if (dishOrderDO.getReductionAmount().compareTo(BigDecimal.ZERO) > 0) {
reductionAmount = reductionAmount.add(dishOrderDO.getReductionAmount());
dishOrderDO.setReductionAmount(reductionAmount);
@ -90,6 +93,7 @@ public class DeductionServiceImpl implements DeductionService {
}
dishOrderDO.setReductionState(reductionAmount.compareTo(BigDecimal.ZERO) > 0 ? "1" : "0");
//计算减免后的总价
reductionAmount = reductionAmount.add(subsidyAmount);
if (total.compareTo(reductionAmount) < 0) {
total = BigDecimal.ZERO;
} else {

View File

@ -65,6 +65,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.annotations.VisibleForTesting;
import com.sun.org.apache.bcel.internal.generic.NEW;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -255,13 +256,13 @@ public class MemberUserServiceImpl implements MemberUserService {
validateMobileUnique(userId, reqVO.getMobile());
//修改人脸手机号
if (StrUtil.isNotBlank(reqVO.getMobile())){
memberUserMapper.updateFace(userId,reqVO.getMobile(),reqVO.getNickname());
if (StrUtil.isNotBlank(reqVO.getMobile())) {
memberUserMapper.updateFace(userId, reqVO.getMobile(), reqVO.getNickname());
}
MemberUserDO updateObj = BeanUtils.toBean(reqVO, MemberUserDO.class).setId(userId);
memberUserMapper.updateById(updateObj);
userExpandService.updateUserExpandByuserId(userId,reqVO);
userExpandService.updateUserExpandByuserId(userId, reqVO);
}
@Override
@ -358,23 +359,23 @@ public class MemberUserServiceImpl implements MemberUserService {
validateMobileUnique(updateReqVO.getId(), updateReqVO.getMobile());
//修改人脸手机号
if (StrUtil.isNotBlank(updateReqVO.getMobile())){
memberUserMapper.updateFace(updateReqVO.getId(),updateReqVO.getMobile(),updateReqVO.getNickname());
if (StrUtil.isNotBlank(updateReqVO.getMobile())) {
memberUserMapper.updateFace(updateReqVO.getId(), updateReqVO.getMobile(), updateReqVO.getNickname());
}
// 校验卡号
if(StringUtils.isNotBlank(updateReqVO.getCardId())){
if (StringUtils.isNotBlank(updateReqVO.getCardId())) {
adminCardService.checkCard(updateReqVO.getCardId());
List<MemberUserDO> memberUserDOS = memberUserMapper.selectList(Wrappers.<MemberUserDO>lambdaQuery()
.eq(MemberUserDO::getCardId, updateReqVO.getCardId())
.ne(MemberUserDO::getId,updateReqVO.getId()));
if(memberUserDOS.size()>0){
.ne(MemberUserDO::getId, updateReqVO.getId()));
if (memberUserDOS.size() > 0) {
throw exception(CARD_ALREADY_BIND);
}
}
// 更新
MemberUserDO updateObj = MemberUserConvert.INSTANCE.convert(updateReqVO);
updateObj.setCardId(StringUtils.isBlank(updateReqVO.getCardId())?"":updateReqVO.getCardId());
updateObj.setCardId(StringUtils.isBlank(updateReqVO.getCardId()) ? "" : updateReqVO.getCardId());
memberUserMapper.updateById(updateObj);
}
@ -410,7 +411,7 @@ public class MemberUserServiceImpl implements MemberUserService {
@Override
public PageResult<MemberUserDO> getUserPage(MemberUserPageReqVO pageReqVO) {
if(pageReqVO.getGroupId()!=null){
if (pageReqVO.getGroupId() != null) {
pageReqVO.setUserIds(memberGroupMapper.getMemberList(pageReqVO.getGroupId()));
}
return memberUserMapper.selectPage(pageReqVO);
@ -455,7 +456,7 @@ public class MemberUserServiceImpl implements MemberUserService {
public Boolean bindCard(String cardId) {
adminCardService.checkCard(cardId);
List<MemberUserDO> memberUserDOS = memberUserMapper.selectList(Wrappers.<MemberUserDO>lambdaQuery().eq(MemberUserDO::getCardId, cardId));
if(memberUserDOS.size()>0){
if (memberUserDOS.size() > 0) {
throw exception(CARD_ALREADY_BIND);
}
MemberUserDO memberUserDO = memberUserMapper.selectById(SecurityFrameworkUtils.getLoginUserId());
@ -481,23 +482,23 @@ public class MemberUserServiceImpl implements MemberUserService {
List<Long> moIds = new ArrayList<>();
List<Long> miIds = new ArrayList<>();
List<Long> niIds = new ArrayList<>();
for (DishOrderDO orderDO : dishOrderDOS){
for (DishOrderDO orderDO : dishOrderDOS) {
int hour = orderDO.getCreateTime().getHour();
//早
if(TimePeriodEnum.MORNING.getStartInt()<=hour && hour<=TimePeriodEnum.MORNING.getEndInt()){
if (TimePeriodEnum.MORNING.getStartInt() <= hour && hour <= TimePeriodEnum.MORNING.getEndInt()) {
moIds.add(orderDO.getId());
} else if (TimePeriodEnum.MIDDAY.getStartInt()<=hour && hour<=TimePeriodEnum.MIDDAY.getEndInt()){
} else if (TimePeriodEnum.MIDDAY.getStartInt() <= hour && hour <= TimePeriodEnum.MIDDAY.getEndInt()) {
miIds.add(orderDO.getId());
}else{
} else {
niIds.add(orderDO.getId());
}
}
if(CollectionUtil.isNotEmpty(moIds)){
if (CollectionUtil.isNotEmpty(moIds)) {
List<OrderDetailDO> orderDetailDOS = orderDetailService.selectListByOrderIds(moIds);
AppNutritionDayVo appNutritionDayVo = new AppNutritionDayVo();
BigDecimal reduce = orderDetailDOS.stream()
.filter(f-> ObjectUtil.isNotEmpty(f.getHeat()))
.map(m->BigDecimal.valueOf(m.getHeat()))
.filter(f -> ObjectUtil.isNotEmpty(f.getHeat()))
.map(m -> BigDecimal.valueOf(m.getHeat()))
.reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
appNutritionDayVo.setIntake(reduce);
appNutritionDayVo.setProposeIntake(MemberConstants.PROPOSE_MORNING);
@ -505,12 +506,12 @@ public class MemberUserServiceImpl implements MemberUserService {
appNutritionDayVo.setDetailList(orderDetailDOS);
result.add(appNutritionDayVo);
}
if(CollectionUtil.isNotEmpty(miIds)){
if (CollectionUtil.isNotEmpty(miIds)) {
List<OrderDetailDO> orderDetailDOS = orderDetailService.selectListByOrderIds(miIds);
AppNutritionDayVo appNutritionDayVo = new AppNutritionDayVo();
BigDecimal reduce = orderDetailDOS.stream()
.filter(f-> ObjectUtil.isNotEmpty(f.getHeat()))
.map(m->BigDecimal.valueOf(m.getHeat()))
.filter(f -> ObjectUtil.isNotEmpty(f.getHeat()))
.map(m -> BigDecimal.valueOf(m.getHeat()))
.reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
appNutritionDayVo.setIntake(reduce);
appNutritionDayVo.setProposeIntake(MemberConstants.PROPOSE_NOON);
@ -518,12 +519,12 @@ public class MemberUserServiceImpl implements MemberUserService {
appNutritionDayVo.setDetailList(orderDetailDOS);
result.add(appNutritionDayVo);
}
if(CollectionUtil.isNotEmpty(niIds)){
if (CollectionUtil.isNotEmpty(niIds)) {
List<OrderDetailDO> orderDetailDOS = orderDetailService.selectListByOrderIds(niIds);
AppNutritionDayVo appNutritionDayVo = new AppNutritionDayVo();
BigDecimal reduce = orderDetailDOS.stream()
.filter(f-> ObjectUtil.isNotEmpty(f.getHeat()))
.map(m->BigDecimal.valueOf(m.getHeat()))
.filter(f -> ObjectUtil.isNotEmpty(f.getHeat()))
.map(m -> BigDecimal.valueOf(m.getHeat()))
.reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
appNutritionDayVo.setIntake(reduce);
appNutritionDayVo.setProposeIntake(MemberConstants.PROPOSE_NIGHT);
@ -558,7 +559,7 @@ public class MemberUserServiceImpl implements MemberUserService {
if (CollectionUtil.isNotEmpty(ids)) {
List<OrderDetailDO> orderDetailDOS = orderDetailService.selectListByOrderIds(ids);
mondayVO.setDetailList(orderDetailDOS);
mondayVO.setIntake(orderDetailDOS.stream().filter(vo->vo!=null && vo.getHeat()!=null).map(OrderDetailDO::getHeat).reduce(0d, Double::sum));
mondayVO.setIntake(orderDetailDOS.stream().filter(vo -> vo != null && vo.getHeat() != null).map(OrderDetailDO::getHeat).reduce(0d, Double::sum));
}
result.add(mondayVO);
}
@ -575,20 +576,21 @@ public class MemberUserServiceImpl implements MemberUserService {
}
@Override
public List<Map> getUserHeat(Long userId, LocalDateTime startDate,LocalDateTime endDate,Long orderId) {
if(ObjectUtil.isNotEmpty(orderId)){
return suggestion(userId,null,null,Boolean.FALSE,orderId);
}else{
return suggestion(userId,startDate,endDate,Boolean.TRUE,null);
public List<Map> getUserHeat(Long userId, LocalDateTime startDate, LocalDateTime endDate, Long orderId) {
if (ObjectUtil.isNotEmpty(orderId)) {
return suggestion(userId, null, null, Boolean.FALSE, orderId);
} else {
return suggestion(userId, startDate, endDate, Boolean.TRUE, null);
}
}
public List<Map> suggestion(Long userId,LocalDateTime startDate,LocalDateTime endDate,Boolean bol,Long orderId) {
public List<Map> suggestion(Long userId, LocalDateTime startDate, LocalDateTime endDate, Boolean bol, Long orderId) {
//查询今天的订单
List<Long> collect= new ArrayList<>();
if(ObjectUtil.isNotEmpty(orderId)){
collect= Collections.singletonList(orderId);
List<Long> collect = new ArrayList<>();
if (ObjectUtil.isNotEmpty(orderId)) {
collect = Collections.singletonList(orderId);
}
if(ObjectUtil.isNotEmpty(userId)){
if (ObjectUtil.isNotEmpty(userId)) {
collect = dishOrderMapper.selectList(new LambdaQueryWrapperX<DishOrderDO>()
.eqIfPresent(DishOrderDO::getUserId, userId)
.eq(DishOrderDO::getOrderStatus, DishOrderDO.COMPLETE)
@ -597,25 +599,25 @@ public class MemberUserServiceImpl implements MemberUserService {
.map(DishOrderDO::getId)
.collect(Collectors.toList());
}
if(ObjectUtil.isEmpty(collect)){
if (ObjectUtil.isEmpty(collect)) {
return Collections.emptyList();
}
//获取今天购买的菜品id
List<OrderDetailDO> orderDetailDOS = orderDetailMapper.selectList(new LambdaQueryWrapperX<OrderDetailDO>()
.inIfPresent(OrderDetailDO::getOrderId, collect));
if(ObjectUtil.isEmpty(orderDetailDOS)){
if (ObjectUtil.isEmpty(orderDetailDOS)) {
return Collections.emptyList();
}
List<OrderDetailDO> collect3 = orderDetailDOS.stream().filter(a -> a.getDishesId() != null).collect(Collectors.toList());
if(ObjectUtil.isEmpty(collect3)){
if (ObjectUtil.isEmpty(collect3)) {
return Collections.emptyList();
}
Map<Long, List<OrderDetailDO>> collect2 = collect3.stream().collect(Collectors.groupingBy(OrderDetailDO::getDishesId));
//热量求和统计方便 科学膳食小建议
double sum = orderDetailDOS
.stream().filter(vo->vo!=null && vo.getHeat()!=null)
.stream().filter(vo -> vo != null && vo.getHeat() != null)
.mapToDouble(OrderDetailDO::getHeat).sum();
List<DishesNutritionRespDTO> list=new ArrayList<>();
List<DishesNutritionRespDTO> list = new ArrayList<>();
for (Map.Entry<Long, List<OrderDetailDO>> entry1 : collect2.entrySet()) {
List<OrderDetailDO> value1 = entry1.getValue();
//获取菜品id
@ -623,15 +625,15 @@ public class MemberUserServiceImpl implements MemberUserService {
.map(OrderDetailDO::getDishesId)
.collect(Collectors.toList());
//获取菜品营养信息
List<DishesNutritionRespDTO> dishesList=new ArrayList<>();
collect1.forEach(x-> {
List<DishesNutritionRespDTO> dishesList = new ArrayList<>();
collect1.forEach(x -> {
List<DishesNutritionRespDTO> dishesList1 = dishesNutritionApil.getDishesList(x);
if ( CollectionUtil.isNotEmpty(dishesList1)){
if (CollectionUtil.isNotEmpty(dishesList1)) {
dishesList.addAll(dishesList1);
}
});
//根据营养名称进行分组
if(ObjUtil.isNotEmpty(dishesList)){
if (ObjUtil.isNotEmpty(dishesList)) {
BigDecimal reduce = value1.stream()
.map(OrderDetailDO::getWeight)
.filter(ObjectUtil::isNotEmpty)
@ -649,14 +651,14 @@ public class MemberUserServiceImpl implements MemberUserService {
//转map
List<Map> maps = BeanUtil.copyToList(list, Map.class);
//判断是否需要 科学膳食小建议
if(Boolean.TRUE.equals(bol)){
if (Boolean.TRUE.equals(bol)) {
Map<String, String> build = MapUtil.builder(new HashMap<String, String>()).build();
if(sum<=MemberConstants.STANDARDS){
build.put("prompt",MemberConstants.INSUFFICIENT_PROPOSAL);
}else if(sum<MemberConstants.EXCEED_STANDARDS){
build.put("prompt",MemberConstants.STANDARDS_PROPOSAL);
}else{
build.put("prompt",MemberConstants.EXCEED_PROPOSAL);
if (sum <= MemberConstants.STANDARDS) {
build.put("prompt", MemberConstants.INSUFFICIENT_PROPOSAL);
} else if (sum < MemberConstants.EXCEED_STANDARDS) {
build.put("prompt", MemberConstants.STANDARDS_PROPOSAL);
} else {
build.put("prompt", MemberConstants.EXCEED_PROPOSAL);
}
maps.add(build);
}
@ -678,17 +680,17 @@ public class MemberUserServiceImpl implements MemberUserService {
}
/**
* @return
* @Description: 根据营养名称进行分组计算值
* @Author: qjq
* @Date: 2024/4/12 下午2:44
* @return
*/
public List<DishesNutritionRespDTO> groupingBy(List<DishesNutritionRespDTO> list){
List<DishesNutritionRespDTO> list1=new ArrayList<>();
public List<DishesNutritionRespDTO> groupingBy(List<DishesNutritionRespDTO> list) {
List<DishesNutritionRespDTO> list1 = new ArrayList<>();
Map<String, List<DishesNutritionRespDTO>> collect = list.stream()
.collect(Collectors.groupingBy(DishesNutritionRespDTO::getNutritionName));
for (Map.Entry<String, List<DishesNutritionRespDTO>> entry : collect.entrySet()) {
DishesNutritionRespDTO dto=new DishesNutritionRespDTO();
DishesNutritionRespDTO dto = new DishesNutritionRespDTO();
BigDecimal reduce = entry.getValue()
.stream()
.filter(f -> ObjectUtil.isNotEmpty(f.getNutritionNumber()))
@ -701,39 +703,40 @@ public class MemberUserServiceImpl implements MemberUserService {
}
return list1;
}
public void computePercentage(List<DishesNutritionRespDTO> list){
public void computePercentage(List<DishesNutritionRespDTO> list) {
//获取所有营养数量
BigDecimal sum = list.stream()
.filter(f-> ObjectUtil.isNotEmpty(f.getNutritionNumber()))
.map(m-> new BigDecimal(m.getNutritionNumber()))
.reduce(BigDecimal.ZERO,BigDecimal::add);
.filter(f -> ObjectUtil.isNotEmpty(f.getNutritionNumber()))
.map(m -> new BigDecimal(m.getNutritionNumber()))
.reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal bigDecimal = new BigDecimal(0);
for (int i = 0; i < list.size(); i++) {
if(i < (list.size()-1)){
if (i < (list.size() - 1)) {
DishesNutritionRespDTO dto = list.get(i);
BigDecimal bigDecimal1 = new BigDecimal(dto.getNutritionNumber());
BigDecimal div = NumberUtil.div(bigDecimal1, sum, 4);
BigDecimal mul = NumberUtil.mul(div, 100);
bigDecimal=bigDecimal.add(mul);
list.get(i).setNutritionPer(mul.floatValue()+"%");
}else{
list.get(i).setNutritionPer(NumberUtil.sub(100,bigDecimal).doubleValue()+"%");
bigDecimal = bigDecimal.add(mul);
list.get(i).setNutritionPer(mul.floatValue() + "%");
} else {
list.get(i).setNutritionPer(NumberUtil.sub(100, bigDecimal).doubleValue() + "%");
}
}
}
@Override
public Boolean bindFace(Long userId,Long faceId) {
public Boolean bindFace(Long userId, Long faceId) {
MemberUserDO memberUserDO = memberUserMapper.selectById(userId);
if(memberUserDO == null){
if (memberUserDO == null) {
throw exception(USER_NOT_EXISTS);
}
// if(memberUserDO.getFaceId()!=null){
// memberUserMapper.deleteFace(memberUserDO.getFaceId());
// }
memberUserDO.setFaceId(faceId);
return memberUserMapper.updateById(memberUserDO)>0;
return memberUserMapper.updateById(memberUserDO) > 0;
}
@ -745,23 +748,23 @@ public class MemberUserServiceImpl implements MemberUserService {
* @Date: 2024/4/10 下午2:30
*/
@Override
public Map<String,String> getDishesList(String platesNum) {
public Map<String, String> getDishesList(String platesNum) {
DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(new LambdaQueryWrapperX<DiningPlatesDO>()
.eq(DiningPlatesDO::getDiningPlatesNum,platesNum));
.eq(DiningPlatesDO::getDiningPlatesNum, platesNum));
//获取用户id
Long userId = diningPlatesDO.getUserId();
//获取用户名称
MemberUserDO memberUserDO = memberUserMapper.selectById(userId);
BigDecimal moneyByUserId = cardService.getMoneyByUserId(userId,diningPlatesDO.getStoreId());
BigDecimal moneyByUserId = cardService.getMoneyByUserId(userId, diningPlatesDO.getStoreId());
Map<String, String> map = new HashMap<>();
map.put("name",memberUserDO.getName());
map.put("name", memberUserDO.getName());
map.put("money", String.valueOf(moneyByUserId));
return map;
}
@Override
public MemberUserDO create(MemberUserAddVO addVO) {
if(StringUtils.isNotBlank(addVO.getCardId())){
if (StringUtils.isNotBlank(addVO.getCardId())) {
adminCardService.checkCard(addVO.getCardId());
}
// 用户已经存在
@ -774,7 +777,7 @@ public class MemberUserServiceImpl implements MemberUserService {
String password = IdUtil.fastSimpleUUID();
// 插入用户
MemberUserDO user = new MemberUserDO();
BeanUtil.copyProperties(addVO,user);
BeanUtil.copyProperties(addVO, user);
user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启
user.setPassword(encodePassword(password)); // 加密密码
memberUserMapper.insert(user);
@ -788,7 +791,7 @@ public class MemberUserServiceImpl implements MemberUserService {
@Override
public String getCardId(Long userId) {
if(userId == null){
if (userId == null) {
userId = getLoginUserId();
}
MemberUserDO memberUserDO = memberUserMapper.selectById(userId);
@ -796,24 +799,24 @@ public class MemberUserServiceImpl implements MemberUserService {
}
@Override
public BigDecimal getReductionAmount(Long userId, BigDecimal money,LocalDateTime time) {
public BigDecimal getReductionAmount(Long userId, BigDecimal money, LocalDateTime time) {
String timePeriod = TimePeriodEnum.getTimePeriod(time);
MemberUserDO memberUserDO = memberUserMapper.selectById(userId);
List<Long> tagIds = memberUserDO.getTagIds();
if (CollectionUtil.isEmpty(tagIds)){
if (CollectionUtil.isEmpty(tagIds)) {
return BigDecimal.ZERO;
}
List<MemberTagDO> tagList = memberTagService.getTagList(tagIds);
if(tagList.size()>1){
if (tagList.size() > 1) {
//排序
List<MemberTagDO> collect = tagList.stream().sorted(Comparator.comparing(MemberTagDO::getState))
.collect(Collectors.toList());
return countAmount(collect.get(0),money,timePeriod);
}else {
return countAmount(tagList.get(0),money,timePeriod);
return countAmount(collect.get(0), money, timePeriod);
} else {
return countAmount(tagList.get(0), money, timePeriod);
}
}
@ -829,98 +832,136 @@ public class MemberUserServiceImpl implements MemberUserService {
@Override
public MemberUserDO getByFaceId(Long faceId) {
return memberUserMapper.selectOne(new LambdaQueryWrapper<MemberUserDO>().eq(MemberUserDO::getFaceId,faceId).last("limit 1"));
return memberUserMapper.selectOne(new LambdaQueryWrapper<MemberUserDO>().eq(MemberUserDO::getFaceId, faceId).last("limit 1"));
}
@Override
public MemberUserDO getByMobile(Long mobile) {
return memberUserMapper.selectOne(new LambdaQueryWrapper<MemberUserDO>().eq(MemberUserDO::getMobile,mobile).last("limit 1"));
return memberUserMapper.selectOne(new LambdaQueryWrapper<MemberUserDO>().eq(MemberUserDO::getMobile, mobile).last("limit 1"));
}
@Override
public MemberUserDO getByCardId(String cardId) {
return memberUserMapper.selectOne(new LambdaQueryWrapper<MemberUserDO>().eq(MemberUserDO::getCardId,cardId).last("limit 1"));
return memberUserMapper.selectOne(new LambdaQueryWrapper<MemberUserDO>().eq(MemberUserDO::getCardId, cardId).last("limit 1"));
}
@Override
public Map<String, Object> getInfoByCard(String cardId,Long mobile,Long storeId) {
public Map<String, Object> getInfoByCard(String cardId, Long mobile, Long storeId) {
HashMap<String, Object> map = new HashMap<>();
if(ObjectUtil.isNotEmpty(cardId)){
if (ObjectUtil.isNotEmpty(cardId)) {
MemberUserDO byCardId = getByCardId(cardId);
if(ObjectUtil.isEmpty(byCardId)){
if (ObjectUtil.isEmpty(byCardId)) {
throw exception(CARD_USER_NOT_EXISTS);
}
BigDecimal money = cardService.getMoneyByUserId(byCardId.getId(),storeId);
map.put("money",money);
map.put("userName",byCardId.getNickname());
BigDecimal money = cardService.getMoneyByUserId(byCardId.getId(), storeId);
map.put("money", money);
map.put("userName", byCardId.getNickname());
}
if(ObjectUtil.isNotEmpty(mobile)){
if (ObjectUtil.isNotEmpty(mobile)) {
MemberUserDO byFaceId = getByMobile(mobile);
if(ObjectUtil.isEmpty(byFaceId)){
if (ObjectUtil.isEmpty(byFaceId)) {
throw exception(FACE_USER_NOT_EXISTS);
}
BigDecimal money = cardService.getMoneyByUserId(byFaceId.getId(),storeId);
map.put("money",money);
map.put("userName",byFaceId.getNickname());
BigDecimal money = cardService.getMoneyByUserId(byFaceId.getId(), storeId);
map.put("money", money);
map.put("userName", byFaceId.getNickname());
}
return map;
}
public BigDecimal countAmount(MemberTagDO memberTagDO, BigDecimal money, String timePeriod ){
if(memberTagDO.getType().equals("1")){
if (memberTagDO.getTimeFlag().equals("0")){
return money.multiply(memberTagDO.getProportion()).setScale(2, RoundingMode.HALF_UP);
}else {
BigDecimal bigDecimal;
switch (timePeriod){
// public BigDecimal countAmount(MemberTagDO memberTagDO, BigDecimal money, String timePeriod ){
// if(memberTagDO.getType().equals("1")){
// if (memberTagDO.getTimeFlag().equals("0")){
// return money.multiply(memberTagDO.getProportion()).setScale(2, RoundingMode.HALF_UP);
// }else {
// BigDecimal bigDecimal;
// switch (timePeriod){
// case "2":
// bigDecimal = money.multiply(memberTagDO.getMorning()).setScale(2, RoundingMode.HALF_UP);
// break;
// case "3":
// bigDecimal = money.multiply(memberTagDO.getNoon()).setScale(2, RoundingMode.HALF_UP);
// break;
// case "4":
// bigDecimal = money.multiply(memberTagDO.getNight()).setScale(2, RoundingMode.HALF_UP);
// break;
// default:
// bigDecimal = BigDecimal.ZERO;
// break;
// }
// return bigDecimal;
// }
//
// }
// if(memberTagDO.getType().equals("2")){
// if (memberTagDO.getTimeFlag().equals("0")){
// return memberTagDO.getAmount();
// }else {
// BigDecimal bigDecimal;
// switch (timePeriod){
// case "2":
// bigDecimal = memberTagDO.getMorning();
// break;
// case "3":
// bigDecimal = memberTagDO.getNoon();
// break;
// case "4":
// bigDecimal = memberTagDO.getNight();
// break;
// default:
// bigDecimal = BigDecimal.ZERO;
// break;
// }
// return bigDecimal;
// }
//
// }
// return BigDecimal.ZERO;
// }
public BigDecimal countAmount(MemberTagDO memberTagDO, BigDecimal money, String timePeriod) {
BigDecimal bigDecimal= BigDecimal.ZERO;
BigDecimal oneHundred = new BigDecimal("100");
switch (timePeriod) {
case "2":
bigDecimal = money.multiply(memberTagDO.getMorning()).setScale(2, RoundingMode.HALF_UP);
if(money.compareTo(memberTagDO.getMorningBase())>0){
BigDecimal subsidy = money.multiply(new BigDecimal(memberTagDO.getMorningProportion())).divide(oneHundred, 2, RoundingMode.HALF_UP);
if(subsidy.compareTo(memberTagDO.getMorning())>0){
subsidy = memberTagDO.getMorning();
}
bigDecimal = subsidy;
}
break;
case "3":
bigDecimal = money.multiply(memberTagDO.getNoon()).setScale(2, RoundingMode.HALF_UP);
if(money.compareTo(memberTagDO.getNoonBase())>0){
BigDecimal subsidy = money.multiply(new BigDecimal(memberTagDO.getNoonProportion())).divide(oneHundred, 2, RoundingMode.HALF_UP);
if(subsidy.compareTo(memberTagDO.getNoon())>0){
subsidy = memberTagDO.getNoon();
}
bigDecimal = subsidy;
}
break;
case "4":
bigDecimal = money.multiply(memberTagDO.getNight()).setScale(2, RoundingMode.HALF_UP);
if(money.compareTo(memberTagDO.getNightBase())>0){
BigDecimal subsidy = money.multiply(new BigDecimal(memberTagDO.getNightProportion())).divide(oneHundred, 2, RoundingMode.HALF_UP);
if(subsidy.compareTo(memberTagDO.getNight())>0){
subsidy = memberTagDO.getNight();
}
bigDecimal = subsidy;
}
break;
default:
bigDecimal = BigDecimal.ZERO;
break;
}
return bigDecimal;
}
}
if(memberTagDO.getType().equals("2")){
if (memberTagDO.getTimeFlag().equals("0")){
return memberTagDO.getAmount();
}else {
BigDecimal bigDecimal;
switch (timePeriod){
case "2":
bigDecimal = memberTagDO.getMorning();
break;
case "3":
bigDecimal = memberTagDO.getNoon();
break;
case "4":
bigDecimal = memberTagDO.getNight();
break;
default:
bigDecimal = BigDecimal.ZERO;
break;
}
return bigDecimal;
}
}
return BigDecimal.ZERO;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean delete(Long userId) {
int i = memberUserMapper.deleteById(userId);
memberUserMapper.deleteFace(userId);
return i>0;
return i > 0;
}
@Override
@ -931,13 +972,13 @@ public class MemberUserServiceImpl implements MemberUserService {
// if(StrUtil.isNotEmpty(url)){
// return url;
// }
String encode = DigestUtil.md5Hex(userId.toString()+System.currentTimeMillis());
encode = QRCodeWithJWTUtil.QR_PREFIX_ZF+encode;
String encode = DigestUtil.md5Hex(userId.toString() + System.currentTimeMillis());
encode = QRCodeWithJWTUtil.QR_PREFIX_ZF + encode;
String fileName = "QRCode_" + userId + ".png";
String path = QRCodeWithJWTUtil.BASE_PATH+fileName;
String path = QRCodeWithJWTUtil.BASE_PATH + fileName;
String s = QRCodeWithJWTUtil.generateQRCode(encode, 350, 350, path);// 生
// memberUserRedisTemplate.opsForValue().set(redisKey,path,180, TimeUnit.SECONDS);
memberUserRedisTemplate.opsForValue().set(encode,userId.toString(),180, TimeUnit.SECONDS);
memberUserRedisTemplate.opsForValue().set(encode, userId.toString(), 180, TimeUnit.SECONDS);
return s;
}
@ -955,14 +996,15 @@ public class MemberUserServiceImpl implements MemberUserService {
}
@Override
public void jsonCreate(String filePath,Long storeId) {
public void jsonCreate(String filePath, Long storeId) {
ObjectMapper objectMapper = new ObjectMapper();
try {
// 读取 JSON 文件并转换为 List<Person>
List<UserJson> people = objectMapper.readValue(new File(filePath), new TypeReference<List<UserJson>>() {});
List<UserJson> people = objectMapper.readValue(new File(filePath), new TypeReference<List<UserJson>>() {
});
ArrayList<MemberUserDO> updateList = new ArrayList<>();
for(UserJson userJson : people) {
for (UserJson userJson : people) {
// 用户已经存在
MemberUserDO userSelect = memberUserMapper.selectByMobile(userJson.getPhone_number());
@ -984,7 +1026,7 @@ public class MemberUserServiceImpl implements MemberUserService {
Long id = user.getId();
if(StringUtils.isNotBlank(userJson.getOrigin_data_url())){
if (StringUtils.isNotBlank(userJson.getOrigin_data_url())) {
String s = downloadImage(userJson);
UserJsonDto userJsonDto = new UserJsonDto();
userJsonDto.setUserNickname(userJson.getUser_nickname());
@ -997,7 +1039,7 @@ public class MemberUserServiceImpl implements MemberUserService {
updateList.add(user);
}
}
if(CollectionUtil.isNotEmpty(updateList)){
if (CollectionUtil.isNotEmpty(updateList)) {
memberUserMapper.updateBatch(updateList);
}
} catch (Exception e) {