package com.qxgmat.service.inline; import com.github.pagehelper.Page; import com.nuliji.tools.AbstractService; import com.nuliji.tools.Tools; import com.nuliji.tools.Transform; import com.nuliji.tools.exception.ParameterException; import com.nuliji.tools.exception.SystemException; import com.nuliji.tools.mybatis.Example; import com.qxgmat.data.constants.enums.module.ProductType; import com.qxgmat.data.constants.enums.status.DirectionStatus; import com.qxgmat.data.dao.UserOrderMapper; import com.qxgmat.data.dao.entity.UserOrder; import com.qxgmat.data.relation.UserOrderRelationMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @Service public class UserOrderService extends AbstractService { private static final Logger logger = LoggerFactory.getLogger(UserOrderService.class); @Resource private UserOrderMapper userOrderMapper; @Resource private UserOrderRelationMapper userOrderRelationMapper; private Map<String, String> adminMap = new HashMap<String, String>(){{ put("", "uo"); }}; public Page<UserOrder> list(int page, int size, Integer userId, String order, DirectionStatus direction){ Example example = new Example(UserOrder.class); if(userId != null){ example.and( example.createCriteria() .andEqualTo("userId", userId) ); } if(order == null || order.isEmpty()) order = "id"; switch(direction){ case ASC: example.orderBy(order).asc(); break; case DESC: default: example.orderBy(order).desc(); } return select(userOrderMapper, example, page, size); } public Page<UserOrder> listAdmin(int page, int size, Integer userId, String productType, String payMethod, Integer orderId, String order, DirectionStatus direction){ if(order == null || order.isEmpty()){ order = "id"; } if(adminMap.containsKey(order)){ order = adminMap.get(order)+".`"+Tools.underscoreName(order)+"`"; }else{ order = adminMap.get("")+".`"+Tools.underscoreName(order)+"`"; } if (direction == null){ direction = DirectionStatus.DESC; } String finalOrder = order; DirectionStatus finalDirection = direction; Page<UserOrder> p = page(()->{ userOrderRelationMapper.listAdmin(userId, productType, payMethod, orderId, finalOrder, finalDirection.key); }, page, size); Collection ids = Transform.getIds(p, UserOrder.class, "id"); // 获取详细数据 List<UserOrder> list = select(ids); Transform.replace(p, list, UserOrder.class, "id"); return p; } /** * 合并用户信息,将old转移至new * @param oldUserId * @param newUserId */ public void mergeUser(Number oldUserId, Integer newUserId){ Example example = new Example(UserOrder.class); example.and( example.createCriteria().andEqualTo("userId", oldUserId) ); update(userOrderMapper, example, UserOrder.builder().userId(newUserId).build()); } public UserOrder add(UserOrder pay){ int result = insert(userOrderMapper, pay); pay = one(userOrderMapper, pay.getId()); if(pay == null){ throw new SystemException("支付添加失败"); } return pay; } public UserOrder edit(UserOrder pay){ UserOrder in = one(userOrderMapper, pay.getId()); if(in == null){ throw new ParameterException("支付记录不存在"); } int result = update(userOrderMapper, pay); return pay; } public boolean delete(Number id){ UserOrder in = one(userOrderMapper, id); if(in == null){ throw new ParameterException("支付记录不存在"); } int result = delete(userOrderMapper, id); return result > 0; } public UserOrder get(Number id){ UserOrder in = one(userOrderMapper, id); if(in == null){ throw new ParameterException("支付记录不存在"); } return in; } public Page<UserOrder> select(int page, int pageSize){ return select(userOrderMapper, page, pageSize); } public Page<UserOrder> select(Integer[] ids){ return page(()->select(userOrderMapper, ids), 1, ids.length); } public List<UserOrder> select(Collection ids){ return select(userOrderMapper, ids); } }