diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/config/ShiroConfig.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/config/ShiroConfig.java index 8fd508d..c574158 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/config/ShiroConfig.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/config/ShiroConfig.java @@ -31,6 +31,7 @@ public class ShiroConfig { shiroFilterFactoryBean.setSecurityManager(securityManager); Map filterChainDefinitionMap = new LinkedHashMap(); filterChainDefinitionMap.put("/admin/auth/login", "anon"); + filterChainDefinitionMap.put("/admin/auth/captchaImage", "anon"); filterChainDefinitionMap.put("/admin/auth/401", "anon"); filterChainDefinitionMap.put("/admin/auth/index", "anon"); filterChainDefinitionMap.put("/admin/auth/403", "anon"); diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/dao/CategorySellVo.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/dao/CategorySellVo.java new file mode 100644 index 0000000..a854a04 --- /dev/null +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/dao/CategorySellVo.java @@ -0,0 +1,33 @@ +package com.qiguliuxing.dts.admin.dao; + +import java.io.Serializable; +import java.util.List; + +import com.qiguliuxing.dts.db.bean.CategorySellAmts; + +public class CategorySellVo implements Serializable{ + + private static final long serialVersionUID = 96458407347975166L; + + private String[] categoryNames;//一级大类目录名称 + + private List categorySellData;//大类销售金额集合 + + public String[] getCategoryNames() { + return categoryNames; + } + + public void setCategoryNames(String[] categoryNames) { + this.categoryNames = categoryNames; + } + + public List getCategorySellData() { + return categorySellData; + } + + public void setCategorySellData(List categorySellData) { + this.categorySellData = categorySellData; + } + + +} diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/dao/OrderAmtsVo.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/dao/OrderAmtsVo.java new file mode 100644 index 0000000..fc7d657 --- /dev/null +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/dao/OrderAmtsVo.java @@ -0,0 +1,40 @@ +package com.qiguliuxing.dts.admin.dao; + +import java.io.Serializable; +import java.math.BigDecimal; + +public class OrderAmtsVo implements Serializable { + + private static final long serialVersionUID = 3840196229938738818L; + + private String[] dayData;//日期数据 + + private BigDecimal[] orderAmtData;//日订单金额 + + private int[] orderCntData;//日订单量 + + public String[] getDayData() { + return dayData; + } + + public void setDayData(String[] dayData) { + this.dayData = dayData; + } + + public BigDecimal[] getOrderAmtData() { + return orderAmtData; + } + + public void setOrderAmtData(BigDecimal[] orderAmtData) { + this.orderAmtData = orderAmtData; + } + + public int[] getOrderCntData() { + return orderCntData; + } + + public void setOrderCntData(int[] orderCntData) { + this.orderCntData = orderCntData; + } + +} diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/dao/UserOrderCntVo.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/dao/UserOrderCntVo.java new file mode 100644 index 0000000..ab46a5c --- /dev/null +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/dao/UserOrderCntVo.java @@ -0,0 +1,40 @@ +package com.qiguliuxing.dts.admin.dao; + +import java.io.Serializable; + +public class UserOrderCntVo implements Serializable { + + private static final long serialVersionUID = -5460904409450124808L; + + private String[] dayData;//日期数据 + + private int[] userCnt;//每日用户新增量 + + private int[] orderCnt;//每日订单量 + + public String[] getDayData() { + return dayData; + } + + public void setDayData(String[] dayData) { + this.dayData = dayData; + } + + public int[] getUserCnt() { + return userCnt; + } + + public void setUserCnt(int[] userCnt) { + this.userCnt = userCnt; + } + + public int[] getOrderCnt() { + return orderCnt; + } + + public void setOrderCnt(int[] orderCnt) { + this.orderCnt = orderCnt; + } + + +} diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/job/SettlementJob.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/job/SettlementJob.java index b1eeb25..9f904fe 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/job/SettlementJob.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/job/SettlementJob.java @@ -8,6 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import com.qiguliuxing.dts.core.type.BrokerageTypeEnum; import com.qiguliuxing.dts.core.util.DateTimeUtil; import com.qiguliuxing.dts.db.service.DtsAccountService; @@ -25,18 +26,18 @@ public class SettlementJob { /** * 自动结算代理佣金 *

- * 每月10号 凌晨1点半执行,自动计算代理用户的佣金到对应账户,作为系统结算。 + * 每月8-20号 凌晨1点半执行,自动计算代理用户的佣金到对应账户,作为系统结算。 *

* 注意,仅统计上个月订单状态为已经完成,即订单状态为 401 402 的订单。 */ - @Scheduled(cron = "0 30 1 10 * ?") + @Scheduled(cron = "0 30 1 8-20 * ?") public void checkOrderUnconfirm() { List sharedUserIds = accountService.findAllSharedUserId(); logger.info("自动结算代理佣金定时任务,共找到 " + sharedUserIds.size() + " 位代理用户,开始统计佣金..."); for (Integer sharedUserId : sharedUserIds) { try { - accountService.setSettleMentAccount(sharedUserId, DateTimeUtil.getPrevMonthEndDay()); + accountService.setSettleMentAccount(sharedUserId, DateTimeUtil.getPrevMonthEndDay(),BrokerageTypeEnum.SYS_APPLY.getType().intValue()); } catch (Exception e) { logger.error("自动结算出错:" + e.getMessage()); e.printStackTrace(); diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/service/AdminDataAuthService.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/service/AdminDataAuthService.java new file mode 100644 index 0000000..6f5cdd9 --- /dev/null +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/service/AdminDataAuthService.java @@ -0,0 +1,59 @@ +package com.qiguliuxing.dts.admin.service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.qiguliuxing.dts.admin.util.AuthSupport; +import com.qiguliuxing.dts.db.domain.DtsAdmin; +import com.qiguliuxing.dts.db.domain.DtsBrand; +import com.qiguliuxing.dts.db.service.DtsBrandService; +import com.qiguliuxing.dts.db.service.DtsRoleService; + +@Service +public class AdminDataAuthService { + + @Autowired + private DtsRoleService roleService; + + @Autowired + private DtsBrandService brandService; + + /** + * 是否属于运营商管理员,超级管理员除外 + * @return + */ + public boolean isBrandManager() { + Integer[] roleIds = null; + DtsAdmin currentUser = AuthSupport.currentUser(); + if (currentUser != null) { + roleIds = currentUser.getRoleIds(); + Set roles = roleService.queryByIds(roleIds); + //仅仅只是品牌管理员且不属于超级管理员 + if (roles.contains(AuthSupport.BRAND_ROLE_NAME) && !roles.contains(AuthSupport.SUPER_ROLE_NAME)) { + return true; + } + } + return false; + } + + /** + * 获取当前用户的管理的品牌商铺 + * @return + */ + public List getBrandIds() { + List brandIds = null; + DtsAdmin currentUser = AuthSupport.currentUser(); + List brands = brandService.getAdminBrands(currentUser.getId()); + if (brands != null && brands.size() > 0) { + brandIds = new ArrayList(); + for (DtsBrand brand:brands) { + brandIds.add(brand.getId()); + } + } + return brandIds; + } +} diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/service/AdminGoodsService.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/service/AdminGoodsService.java index cda6dc5..f307871 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/service/AdminGoodsService.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/service/AdminGoodsService.java @@ -20,6 +20,7 @@ import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.dao.GoodsAllinone; import com.qiguliuxing.dts.admin.util.AdminResponseUtil; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.admin.util.CatVo; import com.qiguliuxing.dts.core.qcode.QCodeService; import com.qiguliuxing.dts.core.util.ResponseUtil; @@ -61,9 +62,12 @@ public class AdminGoodsService { @Autowired private QCodeService qCodeService; + + @Autowired + private AdminDataAuthService adminDataAuthService; - public Object list(String goodsSn, String name, Integer page, Integer limit, String sort, String order) { - List goodsList = goodsService.querySelective(goodsSn, name, page, limit, sort, order); + public Object list(String goodsSn, String name, Integer page, Integer limit, String sort, String order, List brandIds) { + List goodsList = goodsService.querySelective(goodsSn, name, page, limit, sort, order, brandIds); long total = PageInfo.of(goodsList).getTotal(); Map data = new HashMap<>(); data.put("total", total); @@ -174,7 +178,7 @@ public class AdminGoodsService { } // 将生成的分享图片地址写入数据库 - String url = qCodeService.createGoodShareImage(goods.getId().toString(), goods.getPicUrl(), goods.getName(),goods.getCounterPrice(),goods.getRetailPrice()); + String url = qCodeService.createGoodShareImage(null,goods.getId().toString(), goods.getPicUrl(), goods.getName(),goods.getCounterPrice(),goods.getRetailPrice()); goods.setShareUrl(url); // 商品基本信息表Dts_goods @@ -250,7 +254,7 @@ public class AdminGoodsService { goodsService.add(goods); // 将生成的分享图片地址写入数据库 - String url = qCodeService.createGoodShareImage(goods.getId().toString(), goods.getPicUrl(), goods.getName(),goods.getCounterPrice(),goods.getRetailPrice()); + String url = qCodeService.createGoodShareImage(null,goods.getId().toString(), goods.getPicUrl(), goods.getName(),goods.getCounterPrice(),goods.getRetailPrice()); if (!StringUtils.isEmpty(url)) { goods.setShareUrl(url); if (goodsService.updateById(goods) == 0) { @@ -304,8 +308,19 @@ public class AdminGoodsService { categoryList.add(l1CatVo); } - List list = brandService.all(); - List> brandList = new ArrayList<>(list.size()); + + //品牌商获取需要控制数据权限,如果是店铺管理员下拉的品牌商只能选择当前用户可管理的品牌商 + List list = new ArrayList<>(); + List> brandList = new ArrayList<>(); + List brandIds = null; + if (adminDataAuthService.isBrandManager()) { + list = brandService.getAdminBrands(AuthSupport.adminId()); + logger.info("运营商管理角色操作,需控制数据权限,brandIds:{}", JSONObject.toJSONString(brandIds)); + } else { + list = brandService.all(); + brandList = new ArrayList<>(list.size()); + } + for (DtsBrand brand : list) { Map b = new HashMap<>(2); b.put("value", brand.getId()); diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/service/AdminOrderService.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/service/AdminOrderService.java index 39b1b93..e9ce231 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/service/AdminOrderService.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/service/AdminOrderService.java @@ -59,13 +59,38 @@ public class AdminOrderService { */ @Autowired private NotifyService notifyService; + + @Autowired + private AdminDataAuthService adminDataAuthService; public Object list(Integer userId, String orderSn, List orderStatusArray, Integer page, Integer limit, String sort, String order) { - List orderList = orderService.querySelective(userId, orderSn, orderStatusArray, page, limit, sort, - order); - long total = PageInfo.of(orderList).getTotal(); + + // 需要区分数据权限,如果属于品牌商管理员,则需要获取当前用户管理品牌店铺 + List brandIds = null; + if (adminDataAuthService.isBrandManager()) { + brandIds = adminDataAuthService.getBrandIds(); + logger.info("运营商管理角色操作,需控制数据权限,brandIds:{}", JSONObject.toJSONString(brandIds)); + + if (brandIds == null || brandIds.size() == 0) {//如果尚未管理任何入驻店铺,则返回空数据 + Map data = new HashMap<>(); + data.put("total", 0L); + data.put("items", null); + logger.info("【请求结束】商场管理->订单管理->查询,响应结果:{}", JSONObject.toJSONString(data)); + return ResponseUtil.ok(data); + } + } + List orderList = null; + long total = 0L; + if (brandIds == null || brandIds.size() == 0) { + orderList = orderService.querySelective(userId, orderSn, orderStatusArray, page, limit, sort,order); + total = PageInfo.of(orderList).getTotal(); + } else { + orderList = orderService.queryBrandSelective(brandIds,userId, orderSn, orderStatusArray, page, limit, sort,order); + total = PageInfo.of(orderList).getTotal(); + } + Map data = new HashMap<>(); data.put("total", total); data.put("items", orderList); diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/util/AdminResponseCode.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/util/AdminResponseCode.java index 40f6478..29c5f39 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/util/AdminResponseCode.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/util/AdminResponseCode.java @@ -25,7 +25,9 @@ public enum AdminResponseCode { // USER_NAME_EXIST(633,""), // USER_MOBILE_EXIST(634,""), ROLE_NAME_EXIST(640, "角色已经存在"), ROLE_SUPER_SUPERMISSION(641, "当前角色的超级权限不能变更"), - ARTICLE_NAME_EXIST(642,"公告或通知文章已经存在"); + ARTICLE_NAME_EXIST(642,"公告或通知文章已经存在"), + AUTH_CAPTCHA_FREQUENCY(643,"验证码请求过于频繁"), + AUTH_CAPTCHA_ERROR(644,"验证码错误"), AUTH_CAPTCHA_EXPIRED(645,"验证码过期"); private final Integer code; private final String desc; diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/util/AuthSupport.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/util/AuthSupport.java new file mode 100644 index 0000000..978e194 --- /dev/null +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/util/AuthSupport.java @@ -0,0 +1,60 @@ +package com.qiguliuxing.dts.admin.util; + +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.subject.Subject; + +import com.qiguliuxing.dts.db.domain.DtsAdmin; + +/** + * 用于权限支持服务 + * @author QIGULIXING + * @since 1.0.0 + * @QQ 623659388 + * + */ +public class AuthSupport { + + public static final Object BRAND_ROLE_NAME = "品牌制造商"; + + public static final Object SUPER_ROLE_NAME = "超级管理员"; + + + /** + * 获取用户 + * @return + */ + public static DtsAdmin currentUser() { + DtsAdmin admin = null; + Subject currentUser = SecurityUtils.getSubject(); + if (currentUser != null) { + admin = (DtsAdmin) currentUser.getPrincipal(); + } + return admin; + } + + /** + * 获取用户名 + * @return + */ + public static String userName() { + String userName = null; + DtsAdmin currentUser = currentUser(); + if (currentUser != null) { + userName = currentUser.getUsername(); + } + return userName; + } + + /** + * 获取用户id + * @return + */ + public static Integer adminId() { + Integer adminId = null; + DtsAdmin currentUser = currentUser(); + if (currentUser != null) { + adminId = currentUser.getId(); + } + return adminId; + } +} diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/util/VerifyCodeUtils.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/util/VerifyCodeUtils.java new file mode 100644 index 0000000..0e863de --- /dev/null +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/util/VerifyCodeUtils.java @@ -0,0 +1,204 @@ +package com.qiguliuxing.dts.admin.util; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.geom.AffineTransform; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.io.OutputStream; +import java.security.SecureRandom; +import java.util.Arrays; +import java.util.Random; +import javax.imageio.ImageIO; + +/** + * 验证码图片生成工具类 + */ +public class VerifyCodeUtils { + // 使用到Algerian字体,系统里没有的话需要安装字体,字体只显示大写,去掉了1,0,i,o几个容易混淆的字符 + public static final String VERIFY_CODES = "23456789ABCDEFGHJKLMNPQRSTUVWXYZ"; + + private static Random random = new SecureRandom(); + + /** + * 使用系统默认字符源生成验证码 + * + * @param verifySize + * 验证码长度 + * @return + */ + public static String generateVerifyCode(int verifySize) { + return generateVerifyCode(verifySize, VERIFY_CODES); + } + + /** + * 使用指定源生成验证码 + * + * @param verifySize + * 验证码长度 + * @param sources + * 验证码字符源 + * @return + */ + public static String generateVerifyCode(int verifySize, String sources) { + if (sources == null || sources.length() == 0) { + sources = VERIFY_CODES; + } + int codesLen = sources.length(); + Random rand = new Random(System.currentTimeMillis()); + StringBuilder verifyCode = new StringBuilder(verifySize); + for (int i = 0; i < verifySize; i++) { + verifyCode.append(sources.charAt(rand.nextInt(codesLen - 1))); + } + return verifyCode.toString(); + } + + /** + * 输出指定验证码图片流 + * + * @param w + * @param h + * @param os + * @param code + * @throws IOException + */ + public static void outputImage(int w, int h, OutputStream os, String code) throws IOException { + int verifySize = code.length(); + BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); + Random rand = new Random(); + Graphics2D g2 = image.createGraphics(); + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + Color[] colors = new Color[5]; + Color[] colorSpaces = new Color[] { Color.WHITE, Color.CYAN, Color.GRAY, Color.LIGHT_GRAY, Color.MAGENTA, + Color.ORANGE, Color.PINK, Color.YELLOW }; + float[] fractions = new float[colors.length]; + for (int i = 0; i < colors.length; i++) { + colors[i] = colorSpaces[rand.nextInt(colorSpaces.length)]; + fractions[i] = rand.nextFloat(); + } + Arrays.sort(fractions); + + g2.setColor(Color.GRAY);// 设置边框色 + g2.fillRect(0, 0, w, h); + + Color c = getRandColor(200, 250); + g2.setColor(c);// 设置背景色 + g2.fillRect(0, 2, w, h - 4); + + // 绘制干扰线 + Random random = new Random(); + g2.setColor(getRandColor(160, 200));// 设置线条的颜色 + for (int i = 0; i < 20; i++) { + int x = random.nextInt(w - 1); + int y = random.nextInt(h - 1); + int xl = random.nextInt(6) + 1; + int yl = random.nextInt(12) + 1; + g2.drawLine(x, y, x + xl + 40, y + yl + 20); + } + + // 添加噪点 + float yawpRate = 0.05f;// 噪声率 + int area = (int) (yawpRate * w * h); + for (int i = 0; i < area; i++) { + int x = random.nextInt(w); + int y = random.nextInt(h); + int rgb = getRandomIntColor(); + image.setRGB(x, y, rgb); + } + + shear(g2, w, h, c);// 使图片扭曲 + + g2.setColor(getRandColor(100, 160)); + int fontSize = h - 4; + Font font = new Font("Algerian", Font.ITALIC, fontSize); + g2.setFont(font); + char[] chars = code.toCharArray(); + for (int i = 0; i < verifySize; i++) { + AffineTransform affine = new AffineTransform(); + affine.setToRotation(Math.PI / 4 * rand.nextDouble() * (rand.nextBoolean() ? 1 : -1), + (w / verifySize) * i + fontSize / 2, h / 2); + g2.setTransform(affine); + g2.drawChars(chars, i, 1, ((w - 10) / verifySize) * i + 5, h / 2 + fontSize / 2 - 10); + } + + g2.dispose(); + ImageIO.write(image, "jpg", os); + } + + private static Color getRandColor(int fc, int bc) { + if (fc > 255) + fc = 255; + if (bc > 255) + bc = 255; + int r = fc + random.nextInt(bc - fc); + int g = fc + random.nextInt(bc - fc); + int b = fc + random.nextInt(bc - fc); + return new Color(r, g, b); + } + + private static int getRandomIntColor() { + int[] rgb = getRandomRgb(); + int color = 0; + for (int c : rgb) { + color = color << 8; + color = color | c; + } + return color; + } + + private static int[] getRandomRgb() { + int[] rgb = new int[3]; + for (int i = 0; i < 3; i++) { + rgb[i] = random.nextInt(255); + } + return rgb; + } + + private static void shear(Graphics g, int w1, int h1, Color color) { + shearX(g, w1, h1, color); + shearY(g, w1, h1, color); + } + + private static void shearX(Graphics g, int w1, int h1, Color color) { + + int period = random.nextInt(2); + + boolean borderGap = true; + int frames = 1; + int phase = random.nextInt(2); + + for (int i = 0; i < h1; i++) { + double d = (double) (period >> 1) + * Math.sin((double) i / (double) period + (6.2831853071795862D * (double) phase) / (double) frames); + g.copyArea(0, i, w1, 1, (int) d, 0); + if (borderGap) { + g.setColor(color); + g.drawLine((int) d, i, 0, i); + g.drawLine((int) d + w1, i, w1, i); + } + } + } + + private static void shearY(Graphics g, int w1, int h1, Color color) { + + int period = random.nextInt(40) + 10; // 50; + + boolean borderGap = true; + int frames = 20; + int phase = 7; + for (int i = 0; i < w1; i++) { + double d = (double) (period >> 1) + * Math.sin((double) i / (double) period + (6.2831853071795862D * (double) phase) / (double) frames); + g.copyArea(i, 0, 1, h1, 0, (int) d); + if (borderGap) { + g.setColor(color); + g.drawLine(i, (int) d, i, 0); + g.drawLine(i, (int) d + h1, i, h1); + } + + } + } +} \ No newline at end of file diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminAdController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminAdController.java index 0a1fc36..846685b 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminAdController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminAdController.java @@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.core.validator.Order; import com.qiguliuxing.dts.core.validator.Sort; @@ -44,7 +45,7 @@ public class AdminAdController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】推广管理->广告管理->查询,请求参数:name:{},content:{},page:{}", name, content, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 操作人:[" + AuthSupport.userName()+ "] 推广管理->广告管理->查询,请求参数:name:{},content:{},page:{}", name, content, page); List adList = adService.querySelective(name, content, page, limit, sort, order); long total = PageInfo.of(adList).getTotal(); @@ -72,7 +73,7 @@ public class AdminAdController { @RequiresPermissionsDesc(menu = { "推广管理", "广告管理" }, button = "添加") @PostMapping("/create") public Object create(@RequestBody DtsAd ad) { - logger.info("【请求开始】推广管理->广告管理->添加,请求参数:ad:{}", JSONObject.toJSONString(ad)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->广告管理->添加,请求参数:ad:{}", JSONObject.toJSONString(ad)); Object error = validate(ad); if (error != null) { @@ -89,7 +90,7 @@ public class AdminAdController { @RequiresPermissionsDesc(menu = { "推广管理", "广告管理" }, button = "详情") @GetMapping("/read") public Object read(@NotNull Integer id) { - logger.info("【请求开始】推广管理->广告管理->详情,请求参数:id:{}", id); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->广告管理->详情,请求参数:id:{}", id); DtsAd brand = adService.findById(id); @@ -101,7 +102,7 @@ public class AdminAdController { @RequiresPermissionsDesc(menu = { "推广管理", "广告管理" }, button = "编辑") @PostMapping("/update") public Object update(@RequestBody DtsAd ad) { - logger.info("【请求开始】推广管理->广告管理->编辑,请求参数:ad:{}", JSONObject.toJSONString(ad)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->广告管理->编辑,请求参数:ad:{}", JSONObject.toJSONString(ad)); Object error = validate(ad); if (error != null) { @@ -120,7 +121,7 @@ public class AdminAdController { @RequiresPermissionsDesc(menu = { "推广管理", "广告管理" }, button = "删除") @PostMapping("/delete") public Object delete(@RequestBody DtsAd ad) { - logger.info("【请求开始】推广管理->广告管理->删除,请求参数:ad:{}", JSONObject.toJSONString(ad)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->广告管理->删除,请求参数:ad:{}", JSONObject.toJSONString(ad)); Integer id = ad.getId(); if (id == null) { diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminAddressController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminAddressController.java index d3332fa..a4d6140 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminAddressController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminAddressController.java @@ -18,6 +18,7 @@ import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.core.validator.Order; import com.qiguliuxing.dts.core.validator.Sort; @@ -64,7 +65,7 @@ public class AdminAddressController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】用户管理->收货地址->查询,请求参数:name:{},userId:{},page:{}", name, userId, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 用户管理->收货地址->查询,请求参数:name:{},userId:{},page:{}", name, userId, page); List addressList = addressService.querySelective(userId, name, page, limit, sort, order); long total = PageInfo.of(addressList).getTotal(); diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminAdminController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminAdminController.java index 4d4682b..4f8530a 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminAdminController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminAdminController.java @@ -27,6 +27,7 @@ import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; import com.qiguliuxing.dts.admin.util.AdminResponseUtil; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.util.RegexUtil; import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.core.util.bcrypt.BCryptPasswordEncoder; @@ -51,7 +52,7 @@ public class AdminAdminController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】系统管理->管理员管理->查询,请求参数:username:{},page:{}", username, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 系统管理->管理员管理->查询,请求参数:username:{},page:{}", username, page); List adminList = adminService.querySelective(username, page, limit, sort, order); long total = PageInfo.of(adminList).getTotal(); @@ -84,7 +85,7 @@ public class AdminAdminController { @RequiresPermissionsDesc(menu = { "系统管理", "管理员管理" }, button = "添加") @PostMapping("/create") public Object create(@RequestBody DtsAdmin admin) { - logger.info("【请求开始】系统管理->管理员管理->添加,请求参数:{}", JSONObject.toJSONString(admin)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 系统管理->管理员管理->添加,请求参数:{}", JSONObject.toJSONString(admin)); Object error = validate(admin); if (error != null) { @@ -112,7 +113,7 @@ public class AdminAdminController { @RequiresPermissionsDesc(menu = { "系统管理", "管理员管理" }, button = "详情") @GetMapping("/read") public Object read(@NotNull Integer id) { - logger.info("【请求开始】系统管理->管理员管理->详情,请求参数,id:{}", id); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 系统管理->管理员管理->详情,请求参数,id:{}", id); DtsAdmin admin = adminService.findById(id); @@ -124,7 +125,7 @@ public class AdminAdminController { @RequiresPermissionsDesc(menu = { "系统管理", "管理员管理" }, button = "编辑") @PostMapping("/update") public Object update(@RequestBody DtsAdmin admin) { - logger.info("【请求开始】系统管理->管理员管理->编辑,请求参数:{}", JSONObject.toJSONString(admin)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 系统管理->管理员管理->编辑,请求参数:{}", JSONObject.toJSONString(admin)); Object error = validate(admin); if (error != null) { @@ -154,7 +155,7 @@ public class AdminAdminController { @RequiresPermissionsDesc(menu = { "系统管理", "管理员管理" }, button = "删除") @PostMapping("/delete") public Object delete(@RequestBody DtsAdmin admin) { - logger.info("【请求开始】系统管理->管理员管理->删除,请求参数:{}", JSONObject.toJSONString(admin)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 系统管理->管理员管理->删除,请求参数:{}", JSONObject.toJSONString(admin)); Integer anotherAdminId = admin.getId(); if (anotherAdminId == null) { diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminArticleController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminArticleController.java index 064b255..ad63fcd 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminArticleController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminArticleController.java @@ -26,6 +26,7 @@ import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; import com.qiguliuxing.dts.admin.util.AdminResponseUtil; import com.qiguliuxing.dts.admin.util.ArticleType; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.core.validator.Order; import com.qiguliuxing.dts.core.validator.Sort; @@ -62,7 +63,7 @@ public class AdminArticleController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】推广管理->公告管理->查询,请求参数:title:{},page:{}", title, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->公告管理->查询,请求参数:title:{},page:{}", title, page); List articleList = articleService.querySelective(title, page, limit, sort, order); long total = PageInfo.of(articleList).getTotal(); @@ -85,7 +86,7 @@ public class AdminArticleController { @RequiresPermissionsDesc(menu = { "推广管理", "公告管理" }, button = "编辑") @PostMapping("/update") public Object update(@RequestBody DtsArticle article) { - logger.info("【请求开始】推广管理->公告管理->编辑,请求参数:{}", JSONObject.toJSONString(article)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->公告管理->编辑,请求参数:{}", JSONObject.toJSONString(article)); Object error = validate(article); if (error != null) { return error; @@ -111,7 +112,7 @@ public class AdminArticleController { @RequiresPermissionsDesc(menu = { "推广管理", "公告管理" }, button = "删除") @PostMapping("/delete") public Object delete(@RequestBody DtsArticle article) { - logger.info("【请求开始】推广管理->公告管理->删除,请求参数:{}", JSONObject.toJSONString(article)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->公告管理->删除,请求参数:{}", JSONObject.toJSONString(article)); Integer id = article.getId(); if (id == null) { return ResponseUtil.badArgument(); @@ -135,7 +136,7 @@ public class AdminArticleController { @RequiresPermissionsDesc(menu = { "推广管理", "公告管理" }, button = "详情") @GetMapping("/detail") public Object detail(@NotNull Integer id) { - logger.info("【请求开始】推广管理->公告管理->详情,请求参数,id:{}", id); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->公告管理->详情,请求参数,id:{}", id); DtsArticle article = null; try { article = articleService.findById(id); @@ -158,7 +159,7 @@ public class AdminArticleController { @RequiresPermissionsDesc(menu = { "推广管理", "公告管理" }, button = "发布") @PostMapping("/create") public Object create(@RequestBody DtsArticle article) { - logger.info("【请求开始】推广管理->公告管理->发布公告,请求参数:{}", JSONObject.toJSONString(article)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->公告管理->发布公告,请求参数:{}", JSONObject.toJSONString(article)); Object error = validate(article); if (error != null) { diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminAuthController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminAuthController.java index b0a48ed..8a9182d 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminAuthController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminAuthController.java @@ -1,5 +1,7 @@ package com.qiguliuxing.dts.admin.web; +import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; @@ -7,6 +9,8 @@ import java.util.List; import java.util.Map; import java.util.Set; +import javax.servlet.http.HttpServletResponse; + import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.LockedAccountException; @@ -31,8 +35,12 @@ import com.qiguliuxing.dts.admin.util.AdminResponseCode; import com.qiguliuxing.dts.admin.util.AdminResponseUtil; import com.qiguliuxing.dts.admin.util.Permission; import com.qiguliuxing.dts.admin.util.PermissionUtil; +import com.qiguliuxing.dts.admin.util.VerifyCodeUtils; +import com.qiguliuxing.dts.core.captcha.CaptchaCodeManager; +import com.qiguliuxing.dts.core.util.Base64; import com.qiguliuxing.dts.core.util.JacksonUtil; import com.qiguliuxing.dts.core.util.ResponseUtil; +import com.qiguliuxing.dts.core.util.UUID; import com.qiguliuxing.dts.db.domain.DtsAdmin; import com.qiguliuxing.dts.db.service.DtsPermissionService; import com.qiguliuxing.dts.db.service.DtsRoleService; @@ -57,11 +65,23 @@ public class AdminAuthController { String username = JacksonUtil.parseString(body, "username"); String password = JacksonUtil.parseString(body, "password"); + String code = JacksonUtil.parseString(body, "code"); + String uuid = JacksonUtil.parseString(body, "uuid"); - if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) { + if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password) || StringUtils.isEmpty(code) || StringUtils.isEmpty(uuid)) { return ResponseUtil.badArgument(); } + //验证码校验 + String cachedCaptcha = CaptchaCodeManager.getCachedCaptcha(uuid); + if (cachedCaptcha == null) { + logger.error("系统管理->用户登录 错误:{},", AdminResponseCode.AUTH_CAPTCHA_EXPIRED.desc()); + return AdminResponseUtil.fail(AdminResponseCode.AUTH_CAPTCHA_EXPIRED); + } + if (!code.equalsIgnoreCase(cachedCaptcha)) { + logger.error("系统管理->用户登录 错误:{},输入验证码:{},后台验证码:{}", AdminResponseCode.AUTH_CAPTCHA_ERROR.desc(),code,cachedCaptcha); + return AdminResponseUtil.fail(AdminResponseCode.AUTH_CAPTCHA_ERROR); + } Subject currentUser = SecurityUtils.getSubject(); try { currentUser.login(new UsernamePasswordToken(username, password)); @@ -82,7 +102,7 @@ public class AdminAuthController { } /* - * + * 用户注销 */ @RequiresAuthentication @PostMapping("/logout") @@ -142,11 +162,41 @@ public class AdminAuthController { apis.add("*"); return apis; // return systemPermissionsMap.values(); - } } return apis; } + + /** + * 生成验证码 + */ + @GetMapping("/captchaImage") + public Object getCode(HttpServletResponse response) throws IOException { + // 生成随机字串 + String verifyCode = VerifyCodeUtils.generateVerifyCode(4); + // 唯一标识 + String uuid = UUID.randomUUID().toString(true); + boolean successful = CaptchaCodeManager.addToCache(uuid, verifyCode,10);//存储内存 + if (!successful) { + logger.error("请求验证码出错:{}", AdminResponseCode.AUTH_CAPTCHA_FREQUENCY.desc()); + return AdminResponseUtil.fail(AdminResponseCode.AUTH_CAPTCHA_FREQUENCY); + } + // 生成图片 + int w = 111, h = 36; + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + VerifyCodeUtils.outputImage(w, h, stream, verifyCode); + try { + Map data = new HashMap<>(); + data.put("uuid", uuid); + data.put("img", Base64.encode(stream.toByteArray())); + return ResponseUtil.ok(data); + } catch (Exception e){ + e.printStackTrace(); + return ResponseUtil.serious(); + } finally { + stream.close(); + } + } @GetMapping("/401") public Object page401() { diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminBrandController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminBrandController.java index 9a3ccf8..04fc0cd 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminBrandController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminBrandController.java @@ -26,6 +26,7 @@ import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; import com.qiguliuxing.dts.admin.service.AdminBrandService; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.admin.util.DtsBrandVo; import com.qiguliuxing.dts.core.qcode.QCodeService; import com.qiguliuxing.dts.core.util.ResponseUtil; @@ -61,7 +62,7 @@ public class AdminBrandController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】商场管理->品牌管理->查询,请求参数:name:{},page:{}", name, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->品牌管理->查询,请求参数:name:{},page:{}", name, page); List brandList = brandService.querySelective(id, name, page, limit, sort, order); long total = PageInfo.of(brandList).getTotal(); @@ -112,7 +113,7 @@ public class AdminBrandController { @RequiresPermissionsDesc(menu = { "商场管理", "品牌管理" }, button = "添加") @PostMapping("/create") public Object create(@RequestBody DtsBrand brand) { - logger.info("【请求开始】商场管理->品牌管理->添加,请求参数:{}", JSONObject.toJSONString(brand)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->品牌管理->添加,请求参数:{}", JSONObject.toJSONString(brand)); Object error = validate(brand); if (error != null) { return error; @@ -121,7 +122,7 @@ public class AdminBrandController { try { //生成店铺的分享URL String defaultCategory = brandService.getBrandCategory(brand.getDefaultCategoryId()); - String shareUrl = qCodeService.createBrandImage(brand.getId(), brand.getPicUrl(), brand.getName(),defaultCategory); + String shareUrl = qCodeService.createBrandImage(null,brand.getId(), brand.getPicUrl(), brand.getName(),defaultCategory); brand.setShareUrl(shareUrl); } catch (Exception e) { logger.error("生成品牌商铺分享图URL出错:{}",e.getMessage()); @@ -137,7 +138,7 @@ public class AdminBrandController { @RequiresPermissionsDesc(menu = { "商场管理", "品牌管理" }, button = "详情") @GetMapping("/read") public Object read(@NotNull Integer id) { - logger.info("【请求开始】商场管理->品牌管理->详情,请求参数, id:{}", id); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->品牌管理->详情,请求参数, id:{}", id); DtsBrand brand = brandService.findById(id); @@ -149,7 +150,7 @@ public class AdminBrandController { @RequiresPermissionsDesc(menu = { "商场管理", "品牌管理" }, button = "编辑") @PostMapping("/update") public Object update(@RequestBody DtsBrand brand) { - logger.info("【请求开始】商场管理->品牌管理->编辑,请求参数, id:{}", JSONObject.toJSONString(brand)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->品牌管理->编辑,请求参数, id:{}", JSONObject.toJSONString(brand)); Object error = validate(brand); if (error != null) { @@ -158,7 +159,7 @@ public class AdminBrandController { try { //生成店铺的分享URL String defaultCategory = brandService.getBrandCategory(brand.getDefaultCategoryId()); - String shareUrl = qCodeService.createBrandImage(brand.getId(), brand.getPicUrl(), brand.getName(),defaultCategory); + String shareUrl = qCodeService.createBrandImage(null,brand.getId(), brand.getPicUrl(), brand.getName(),defaultCategory); brand.setShareUrl(shareUrl); } catch (Exception e) { logger.error("生成品牌商铺分享图URL出错:{}",e.getMessage()); @@ -177,7 +178,7 @@ public class AdminBrandController { @RequiresPermissionsDesc(menu = { "商场管理", "品牌管理" }, button = "删除") @PostMapping("/delete") public Object delete(@RequestBody DtsBrand brand) { - logger.info("【请求开始】商场管理->品牌管理->删除,请求参数:{}", JSONObject.toJSONString(brand)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->品牌管理->删除,请求参数:{}", JSONObject.toJSONString(brand)); Integer id = brand.getId(); if (id == null) { @@ -192,7 +193,7 @@ public class AdminBrandController { @GetMapping("/catAndAdmin") public Object catAndAdmin() { - logger.info("【请求开始】商场管理->品牌管理->获取目录与管理用户"); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->品牌管理->获取目录与管理用户"); return adminBrandService.catAndAdmin(); } diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminBrokerageController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminBrokerageController.java index 9a5d4e0..968396e 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminBrokerageController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminBrokerageController.java @@ -10,17 +10,24 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; +import com.qiguliuxing.dts.admin.util.AuthSupport; +import com.qiguliuxing.dts.core.util.JacksonUtil; import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.core.validator.Order; import com.qiguliuxing.dts.core.validator.Sort; import com.qiguliuxing.dts.db.domain.DtsAccountTrace; +import com.qiguliuxing.dts.db.domain.DtsUser; import com.qiguliuxing.dts.db.service.DtsAccountService; +import com.qiguliuxing.dts.db.service.DtsUserService; /** * 佣金业务接口 @@ -37,17 +44,21 @@ public class AdminBrokerageController { @Autowired private DtsAccountService accountService; + + @Autowired + private DtsUserService userService; @RequiresPermissions("admin:brokerage:list") @RequiresPermissionsDesc(menu = { "用户管理", "佣金管理" }, button = "查询") @GetMapping("/list") - public Object list(String username, String mobile,String type,@RequestParam(defaultValue = "1") Integer page, + public Object list(String username, String mobile,@RequestParam(required = false) List statusArray,@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer limit, - @Sort @RequestParam(defaultValue = "trace_time") String sort, + @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】用户管理->佣金管理->查询,请求参数,username:{},mobile:{},type:{},page:{}", username, mobile, type,page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 用户管理->佣金管理->查询,请求参数,username:{},mobile:{},status:{},page:{}", username, mobile, JSONObject.toJSONString(statusArray),page); - List traceList = accountService.querySelective(username, mobile, type, page, limit, sort, order); + List userList = userService.queryDtsUserListByNickname(username, mobile); + List traceList = accountService.querySelectiveTrace(userList,statusArray, page, limit, sort, order); long total = PageInfo.of(traceList).getTotal(); Map data = new HashMap<>(); data.put("total", total); @@ -57,4 +68,23 @@ public class AdminBrokerageController { return ResponseUtil.ok(data); } + @RequiresPermissions("admin:brokerage:approve") + @RequiresPermissionsDesc(menu = { "用户管理", "佣金管理" }, button = "审批销账") + @PostMapping("/approve") + public Object approve(@RequestBody String body) { + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 用户管理->佣金管理->审批销账,请求参数:{}",body); + Integer traceId = JacksonUtil.parseInteger(body, "id"); + String traceMsg = JacksonUtil.parseString(body, "traceMsg"); + Byte status = JacksonUtil.parseByte(body, "status"); + boolean approveResult = accountService.approveAccountTrace(traceId,status, traceMsg); + + if (!approveResult) { + logger.info("用户管理->佣金管理->审批销账失败:{}", "审批处理错误!"); + return ResponseUtil.updatedDataFailed(); + } + + logger.info("【请求结束】用户管理->佣金管理->审批销账,响应结果:{}", "成功!"); + return ResponseUtil.ok(); + + } } diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminCategoryController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminCategoryController.java index 44faaa4..6111262 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminCategoryController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminCategoryController.java @@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.core.validator.Order; import com.qiguliuxing.dts.core.validator.Sort; @@ -45,7 +46,7 @@ public class AdminCategoryController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】商场管理->类目管理->查询,请求参数:name:{},page:{}", name, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->类目管理->查询,请求参数:name:{},page:{}", name, page); List collectList = categoryService.querySelective(id, name, page, limit, sort, order); long total = PageInfo.of(collectList).getTotal(); @@ -83,7 +84,7 @@ public class AdminCategoryController { @RequiresPermissionsDesc(menu = { "商场管理", "类目管理" }, button = "添加") @PostMapping("/create") public Object create(@RequestBody DtsCategory category) { - logger.info("【请求开始】商场管理->类目管理->添加,请求参数:{}", JSONObject.toJSONString(category)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->类目管理->添加,请求参数:{}", JSONObject.toJSONString(category)); Object error = validate(category); if (error != null) { @@ -99,7 +100,7 @@ public class AdminCategoryController { @RequiresPermissionsDesc(menu = { "商场管理", "类目管理" }, button = "详情") @GetMapping("/read") public Object read(@NotNull Integer id) { - logger.info("【请求开始】商场管理->类目管理->详情,请求参数,id:{}", id); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->类目管理->详情,请求参数,id:{}", id); DtsCategory category = categoryService.findById(id); @@ -111,7 +112,7 @@ public class AdminCategoryController { @RequiresPermissionsDesc(menu = { "商场管理", "类目管理" }, button = "编辑") @PostMapping("/update") public Object update(@RequestBody DtsCategory category) { - logger.info("【请求开始】商场管理->类目管理->编辑,请求参数:{}", JSONObject.toJSONString(category)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->类目管理->编辑,请求参数:{}", JSONObject.toJSONString(category)); Object error = validate(category); if (error != null) { @@ -131,7 +132,7 @@ public class AdminCategoryController { @RequiresPermissionsDesc(menu = { "商场管理", "类目管理" }, button = "删除") @PostMapping("/delete") public Object delete(@RequestBody DtsCategory category) { - logger.info("【请求开始】商场管理->类目管理->删除,请求参数:{}", JSONObject.toJSONString(category)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->类目管理->删除,请求参数:{}", JSONObject.toJSONString(category)); Integer id = category.getId(); if (id == null) { @@ -146,7 +147,7 @@ public class AdminCategoryController { @RequiresPermissions("admin:category:list") @GetMapping("/l1") public Object catL1() { - logger.info("【请求开始】商场管理->类目管理->一级分类目录查询"); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->类目管理->一级分类目录查询"); // 所有一级分类目录 List l1CatList = categoryService.queryL1(); diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminCollectController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminCollectController.java index 738caf3..792f192 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminCollectController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminCollectController.java @@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.core.validator.Order; import com.qiguliuxing.dts.core.validator.Sort; @@ -39,7 +40,7 @@ public class AdminCollectController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】用户管理->用户收藏->查询,请求参数:userId:{},page:{}", userId, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 用户管理->用户收藏->查询,请求参数:userId:{},page:{}", userId, page); List collectList = collectService.querySelective(userId, valueId, page, limit, sort, order); long total = PageInfo.of(collectList).getTotal(); diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminCommentController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminCommentController.java index 57d0a29..4748e0f 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminCommentController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminCommentController.java @@ -19,6 +19,8 @@ import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; +import com.qiguliuxing.dts.admin.service.AdminDataAuthService; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.core.validator.Order; import com.qiguliuxing.dts.core.validator.Sort; @@ -33,6 +35,9 @@ public class AdminCommentController { @Autowired private DtsCommentService commentService; + + @Autowired + private AdminDataAuthService adminDataAuthService; @RequiresPermissions("admin:comment:list") @RequiresPermissionsDesc(menu = { "商品管理", "评论管理" }, button = "查询") @@ -41,15 +46,37 @@ public class AdminCommentController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】商品管理->评论管理->查询,请求参数:userId:{},page:{}", userId, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商品管理->评论管理->查询,请求参数:userId:{},page:{}", userId, page); - List brandList = commentService.querySelective(userId, valueId, page, limit, sort, order); - long total = PageInfo.of(brandList).getTotal(); + // 需要区分数据权限,如果属于品牌商管理员,则需要获取当前用户管理品牌店铺 + List brandIds = null; + if (adminDataAuthService.isBrandManager()) { + brandIds = adminDataAuthService.getBrandIds(); + logger.info("运营商管理角色操作,需控制数据权限,brandIds:{}", JSONObject.toJSONString(brandIds)); + + if (brandIds == null || brandIds.size() == 0) {// 如果尚未管理任何入驻店铺,则返回空数据 + Map data = new HashMap<>(); + data.put("total", 0L); + data.put("items", null); + + logger.info("【请求结束】商品管理->评论管理->查询:{}", JSONObject.toJSONString(data)); + return ResponseUtil.ok(data); + } + } + List commentList = null; + long total = 0L; + if (brandIds == null || brandIds.size() == 0) { + commentList = commentService.querySelective(userId, valueId, page, limit, sort, order); + total = PageInfo.of(commentList).getTotal(); + } else { + commentList = commentService.queryBrandCommentSelective(brandIds,userId, valueId, page, limit, sort, order); + total = PageInfo.of(commentList).getTotal(); + } Map data = new HashMap<>(); data.put("total", total); - data.put("items", brandList); + data.put("items", commentList); - logger.info("【请求结束】商品管理->评论管理->查询:total:{}", JSONObject.toJSONString(data)); + logger.info("【请求结束】商品管理->评论管理->查询:total:{}", total); return ResponseUtil.ok(data); } @@ -57,7 +84,7 @@ public class AdminCommentController { @RequiresPermissionsDesc(menu = { "商品管理", "评论管理" }, button = "删除") @PostMapping("/delete") public Object delete(@RequestBody DtsComment comment) { - logger.info("【请求开始】商品管理->评论管理->删除,请求参数:{}", JSONObject.toJSONString(comment)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商品管理->评论管理->删除,请求参数:{}", JSONObject.toJSONString(comment)); Integer id = comment.getId(); if (id == null) { diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminCouponController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminCouponController.java index cf94ec6..ba55e43 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminCouponController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminCouponController.java @@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.core.validator.Order; import com.qiguliuxing.dts.core.validator.Sort; @@ -49,7 +50,7 @@ public class AdminCouponController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】推广管理->优惠券管理->查询,请求参数:name:{},page:{}", name, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->优惠券管理->查询,请求参数:name:{},page:{}", name, page); List couponList = couponService.querySelective(name, type, status, page, limit, sort, order); long total = PageInfo.of(couponList).getTotal(); @@ -68,7 +69,7 @@ public class AdminCouponController { @RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】推广管理->优惠券管理->查询用户,请求参数:userId:{},couponId:{}", userId, couponId); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->优惠券管理->查询用户,请求参数:userId:{},couponId:{}", userId, couponId); List couponList = couponUserService.queryList(userId, couponId, status, page, limit, sort, order); @@ -93,7 +94,7 @@ public class AdminCouponController { @RequiresPermissionsDesc(menu = { "推广管理", "优惠券管理" }, button = "添加") @PostMapping("/create") public Object create(@RequestBody DtsCoupon coupon) { - logger.info("【请求开始】推广管理->优惠券管理->添加,请求参数:{}", JSONObject.toJSONString(coupon)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->优惠券管理->添加,请求参数:{}", JSONObject.toJSONString(coupon)); Object error = validate(coupon); if (error != null) { @@ -116,7 +117,7 @@ public class AdminCouponController { @RequiresPermissionsDesc(menu = { "推广管理", "优惠券管理" }, button = "详情") @GetMapping("/read") public Object read(@NotNull Integer id) { - logger.info("【请求开始】推广管理->优惠券管理->详情,请求参数,id:{}", id); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->优惠券管理->详情,请求参数,id:{}", id); DtsCoupon coupon = couponService.findById(id); @@ -128,7 +129,7 @@ public class AdminCouponController { @RequiresPermissionsDesc(menu = { "推广管理", "优惠券管理" }, button = "编辑") @PostMapping("/update") public Object update(@RequestBody DtsCoupon coupon) { - logger.info("【请求开始】推广管理->优惠券管理->编辑,请求参数:{}", JSONObject.toJSONString(coupon)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->优惠券管理->编辑,请求参数:{}", JSONObject.toJSONString(coupon)); Object error = validate(coupon); if (error != null) { @@ -146,7 +147,7 @@ public class AdminCouponController { @RequiresPermissionsDesc(menu = { "推广管理", "优惠券管理" }, button = "删除") @PostMapping("/delete") public Object delete(@RequestBody DtsCoupon coupon) { - logger.info("【请求开始】推广管理->优惠券管理->删除,请求参数:{}", JSONObject.toJSONString(coupon)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->优惠券管理->删除,请求参数:{}", JSONObject.toJSONString(coupon)); couponService.deleteById(coupon.getId()); diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminDashbordController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminDashbordController.java index 58ef5c5..40682b6 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminDashbordController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminDashbordController.java @@ -1,7 +1,13 @@ package com.qiguliuxing.dts.admin.web; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; +import java.util.List; import java.util.Map; +import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -12,7 +18,13 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; +import com.qiguliuxing.dts.admin.dao.CategorySellVo; +import com.qiguliuxing.dts.admin.dao.OrderAmtsVo; +import com.qiguliuxing.dts.admin.dao.UserOrderCntVo; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.util.ResponseUtil; +import com.qiguliuxing.dts.db.bean.CategorySellAmts; +import com.qiguliuxing.dts.db.bean.DayStatis; import com.qiguliuxing.dts.db.service.DtsGoodsProductService; import com.qiguliuxing.dts.db.service.DtsGoodsService; import com.qiguliuxing.dts.db.service.DtsOrderService; @@ -24,6 +36,8 @@ import com.qiguliuxing.dts.db.service.DtsUserService; public class AdminDashbordController { private static final Logger logger = LoggerFactory.getLogger(AdminDashbordController.class); + private static final int STATIS_DAYS_RANG = 30;// 统计的天数范围,一个月数据 + @Autowired private DtsUserService userService; @Autowired @@ -35,7 +49,7 @@ public class AdminDashbordController { @GetMapping("") public Object info() { - logger.info("【请求开始】系统管理->首页仪表盘查询"); + logger.info("【请求开始】操作人:[" + AuthSupport.userName() + "] 系统管理->首页仪表盘查询"); int userTotal = userService.count(); int goodsTotal = goodsService.count(); @@ -51,4 +65,128 @@ public class AdminDashbordController { return ResponseUtil.ok(data); } + @GetMapping("/chart") + public Object chart() { + logger.info("【请求开始】操作人:[" + AuthSupport.userName() + "] 系统管理->首页图表查询"); + + // 近期用户,订单增长量查询 + UserOrderCntVo userOrderCnt = new UserOrderCntVo(); + List userCnts = userService.recentCount(STATIS_DAYS_RANG); + List orderCnts = orderService.recentCount(STATIS_DAYS_RANG); + + String[] dayData = unionDayData(userCnts, orderCnts); + userOrderCnt.setDayData(dayData); + userOrderCnt.setUserCnt(fetchArrCnt(dayData, userCnts)); + userOrderCnt.setOrderCnt(fetchArrCnt(dayData, orderCnts)); + + // 订单请款统计,订单笔数与订单金额 + OrderAmtsVo orderAmts = fetchOrderAmtsVo(orderCnts); + + // 大类销售统计情况 + List categorySellStatis = orderService.categorySell();// 统计总量 + CategorySellVo categorySell = fetchCategorySell(categorySellStatis); + + Map data = new HashMap<>(); + data.put("userOrderCnt", userOrderCnt); + data.put("orderAmts", orderAmts); + data.put("categorySell", categorySell); + + logger.info("【请求结束】系统管理->首页图表查询:响应结果:{}", JSONObject.toJSONString(data)); + return ResponseUtil.ok(data); + } + + /** + * 获取日期数据并排序 + * + * @param userCnts + * @param orderCnts + * @return + */ + private String[] unionDayData(List userCnts, List orderCnts) { + Set days = new HashSet<>(); + for (DayStatis userCnt : userCnts) { + days.add(userCnt.getDayStr()); + } + for (DayStatis orderCnt : orderCnts) { + days.add(orderCnt.getDayStr()); + } + + /*days.stream().sorted(Comparator.reverseOrder());// 排序 + return days.toArray(new String[days.size()]);*/ + + List list = new ArrayList(days); + Collections.sort(list); + return list.toArray(new String[0]); + } + + /** + * 从统计集合中获取数量 不存在则设置 0 + * + * @param dayData + * @param dayStatisCnts + * @return + */ + private int[] fetchArrCnt(String[] dayData, List dayStatisCnts) { + int[] arrCnts = new int[dayData.length]; + for (int i = 0; i < dayData.length; i++) { + int dayCnt = 0; + String dayStr = dayData[i]; + for (DayStatis ds : dayStatisCnts) { + if (dayStr.equals(ds.getDayStr())) { + dayCnt = ds.getCnts(); + break; + } + } + arrCnts[i] = dayCnt; + } + return arrCnts; + } + + /** + * 获取订单统计数据 + * + * @param orderCnts + * @return + */ + private OrderAmtsVo fetchOrderAmtsVo(List orderCnts) { + OrderAmtsVo orderAmts = new OrderAmtsVo(); + int size = 0; + if (orderCnts != null && orderCnts.size() > 0) { + size = orderCnts.size(); + } + String[] dayData = new String[size]; + int[] orderCntData = new int[size]; + BigDecimal[] orderAmtData = new BigDecimal[size]; + for (int i = 0; i < size; i++) { + dayData[i] = orderCnts.get(i).getDayStr(); + orderCntData[i] = orderCnts.get(i).getCnts(); + orderAmtData[i] = orderCnts.get(i).getAmts(); + } + orderAmts.setDayData(dayData); + orderAmts.setOrderAmtData(orderAmtData); + orderAmts.setOrderCntData(orderCntData); + return orderAmts; + } + + /** + * 获取大类的销售统计数据 + * + * @param categorySellStatis + * @return + */ + private CategorySellVo fetchCategorySell(List categorySellData) { + CategorySellVo categorySell = new CategorySellVo(); + int size = 0; + if (categorySellData != null && categorySellData.size() > 0) { + size = categorySellData.size(); + } + String[] categoryNames = new String[size]; + for (int i = 0; i < size; i++) { + categoryNames[i] = categorySellData.get(i).getName(); + } + categorySell.setCategoryNames(categoryNames); + categorySell.setCategorySellData(categorySellData); + return categorySell; + } + } diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminFeedbackController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminFeedbackController.java index f14f68e..cf8456e 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminFeedbackController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminFeedbackController.java @@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.core.validator.Order; import com.qiguliuxing.dts.core.validator.Sort; @@ -44,7 +45,7 @@ public class AdminFeedbackController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】用户管理->意见反馈->查询,请求参数:userId:{},username:{},page:{}", userId, username, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 用户管理->意见反馈->查询,请求参数:userId:{},username:{},page:{}", userId, username, page); List feedbackList = feedbackService.querySelective(userId, username, page, limit, sort, order); long total = PageInfo.of(feedbackList).getTotal(); diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminFootprintController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminFootprintController.java index 1b23815..6cf9e52 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminFootprintController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminFootprintController.java @@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.core.validator.Order; import com.qiguliuxing.dts.core.validator.Sort; @@ -39,7 +40,7 @@ public class AdminFootprintController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】用户管理->用户足迹->查询,请求参数:userId:{},goodsId:{},page:{}", userId, goodsId, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 用户管理->用户足迹->查询,请求参数:userId:{},goodsId:{},page:{}", userId, goodsId, page); List footprintList = footprintService.querySelective(userId, goodsId, page, limit, sort, order); long total = PageInfo.of(footprintList).getTotal(); diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminGoodsController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminGoodsController.java index 49a85ca..a0edee5 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminGoodsController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminGoodsController.java @@ -1,5 +1,9 @@ package com.qiguliuxing.dts.admin.web; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import javax.validation.constraints.NotNull; import org.apache.shiro.authz.annotation.RequiresPermissions; @@ -17,7 +21,10 @@ import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; import com.qiguliuxing.dts.admin.dao.GoodsAllinone; +import com.qiguliuxing.dts.admin.service.AdminDataAuthService; import com.qiguliuxing.dts.admin.service.AdminGoodsService; +import com.qiguliuxing.dts.admin.util.AuthSupport; +import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.core.validator.Order; import com.qiguliuxing.dts.core.validator.Sort; import com.qiguliuxing.dts.db.domain.DtsGoods; @@ -30,6 +37,9 @@ public class AdminGoodsController { @Autowired private AdminGoodsService adminGoodsService; + + @Autowired + private AdminDataAuthService adminDataAuthService; /** * 查询商品 @@ -49,9 +59,25 @@ public class AdminGoodsController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】商品管理->商品管理->查询,请求参数:goodsSn:{},name:{},page:{}", goodsSn, name, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商品管理->商品管理->查询,请求参数:goodsSn:{},name:{},page:{}", goodsSn, name, page); - return adminGoodsService.list(goodsSn, name, page, limit, sort, order); + //需要区分数据权限,如果属于品牌商管理员,则需要获取当前用户管理品牌店铺 + List brandIds = null; + if (adminDataAuthService.isBrandManager()) { + brandIds = adminDataAuthService.getBrandIds(); + logger.info("运营商管理角色操作,需控制数据权限,brandIds:{}",JSONObject.toJSONString(brandIds)); + + if (brandIds == null || brandIds.size() == 0) { + Map data = new HashMap<>(); + data.put("total", 0L); + data.put("items", null); + + logger.info("【请求结束】商品管理->商品管理->查询,响应结果:{}", JSONObject.toJSONString(data)); + return ResponseUtil.ok(data); + } + } + + return adminGoodsService.list(goodsSn, name, page, limit, sort, order, brandIds); } @GetMapping("/catAndBrand") @@ -69,7 +95,7 @@ public class AdminGoodsController { @RequiresPermissionsDesc(menu = { "商品管理", "商品管理" }, button = "编辑") @PostMapping("/update") public Object update(@RequestBody GoodsAllinone goodsAllinone) { - logger.info("【请求开始】商品管理->商品管理->编辑,请求参数:{}", JSONObject.toJSONString(goodsAllinone)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商品管理->商品管理->编辑,请求参数:{}", JSONObject.toJSONString(goodsAllinone)); return adminGoodsService.update(goodsAllinone); } @@ -84,7 +110,7 @@ public class AdminGoodsController { @RequiresPermissionsDesc(menu = { "商品管理", "商品管理" }, button = "删除") @PostMapping("/delete") public Object delete(@RequestBody DtsGoods goods) { - logger.info("【请求开始】商品管理->商品管理->删除,请求参数:{}", JSONObject.toJSONString(goods)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商品管理->商品管理->删除,请求参数:{}", JSONObject.toJSONString(goods)); return adminGoodsService.delete(goods); } @@ -99,7 +125,7 @@ public class AdminGoodsController { @RequiresPermissionsDesc(menu = { "商品管理", "商品管理" }, button = "上架") @PostMapping("/create") public Object create(@RequestBody GoodsAllinone goodsAllinone) { - logger.info("【请求开始】商品管理->商品管理->上架,请求参数:{}", JSONObject.toJSONString(goodsAllinone)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商品管理->商品管理->上架,请求参数:{}", JSONObject.toJSONString(goodsAllinone)); return adminGoodsService.create(goodsAllinone); } @@ -114,7 +140,7 @@ public class AdminGoodsController { @RequiresPermissionsDesc(menu = { "商品管理", "商品管理" }, button = "详情") @GetMapping("/detail") public Object detail(@NotNull Integer id) { - logger.info("【请求开始】商品管理->商品管理->详情,请求参数,id:{}", id); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商品管理->商品管理->详情,请求参数,id:{}", id); return adminGoodsService.detail(id); } diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminGrouponController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminGrouponController.java index 7621c3c..5496fef 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminGrouponController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminGrouponController.java @@ -22,6 +22,8 @@ import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; +import com.qiguliuxing.dts.admin.service.AdminDataAuthService; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.core.validator.Order; import com.qiguliuxing.dts.core.validator.Sort; @@ -44,18 +46,43 @@ public class AdminGrouponController { private DtsGoodsService goodsService; @Autowired private DtsGrouponService grouponService; + @Autowired + private AdminDataAuthService adminDataAuthService; @RequiresPermissions("admin:groupon:read") @RequiresPermissionsDesc(menu = { "推广管理", "团购管理" }, button = "详情") @GetMapping("/listRecord") - public Object listRecord(String grouponId, @RequestParam(defaultValue = "1") Integer page, + public Object listRecord(String rulesId, @RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】推广管理->团购管理->详情,请求参数:grouponId:{},page:{}", grouponId, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->团购管理->详情,请求参数:rulesId:{},page:{}", rulesId, page); - List grouponList = grouponService.querySelective(grouponId, page, limit, sort, order); - long total = PageInfo.of(grouponList).getTotal(); + // 需要区分数据权限,如果属于品牌商管理员,则需要获取当前用户管理品牌店铺 + List brandIds = null; + if (adminDataAuthService.isBrandManager()) { + brandIds = adminDataAuthService.getBrandIds(); + logger.info("运营商管理角色操作,需控制数据权限,brandIds:{}", JSONObject.toJSONString(brandIds)); + + if (brandIds == null || brandIds.size() == 0) {// 如果尚未管理任何入驻店铺,则返回空数据 + Map data = new HashMap<>(); + data.put("total", 0L); + data.put("items", null); + + logger.info("【请求结束】推广管理->团购管理->详情,响应结果:{}", JSONObject.toJSONString(data)); + return ResponseUtil.ok(data); + } + } + + List grouponList = null; + long total = 0L; + if (brandIds == null || brandIds.size() == 0) { + grouponList = grouponService.querySelective(rulesId, page, limit, sort, order); + total = PageInfo.of(grouponList).getTotal(); + } else { + grouponList = grouponService.queryBrandGroupons(brandIds,rulesId, page, limit, sort, order); + total = PageInfo.of(grouponList).getTotal(); + } List> records = new ArrayList<>(); for (DtsGroupon groupon : grouponList) { @@ -91,10 +118,33 @@ public class AdminGrouponController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】推广管理->团购管理->查询,请求参数:goodsId:{},page:{}", goodsId, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->团购管理->查询,请求参数:goodsId:{},page:{}", goodsId, page); - List rulesList = rulesService.querySelective(goodsId, page, limit, sort, order); - long total = PageInfo.of(rulesList).getTotal(); + // 需要区分数据权限,如果属于品牌商管理员,则需要获取当前用户管理品牌店铺 + List brandIds = null; + if (adminDataAuthService.isBrandManager()) { + brandIds = adminDataAuthService.getBrandIds(); + logger.info("运营商管理角色操作,需控制数据权限,brandIds:{}", JSONObject.toJSONString(brandIds)); + + if (brandIds == null || brandIds.size() == 0) {// 如果尚未管理任何入驻店铺,则返回空数据 + Map data = new HashMap<>(); + data.put("total", 0L); + data.put("items", null); + + logger.info("【请求结束】推广管理->团购管理->查询,响应结果:{}", JSONObject.toJSONString(data)); + return ResponseUtil.ok(data); + } + } + + List rulesList = null; + long total = 0L; + if (brandIds == null || brandIds.size() == 0) { + rulesList = rulesService.querySelective(goodsId, page, limit, sort, order); + total = PageInfo.of(rulesList).getTotal(); + } else { + rulesList = rulesService.queryBrandGrouponRules(brandIds,goodsId, page, limit, sort, order); + total = PageInfo.of(rulesList).getTotal(); + } Map data = new HashMap<>(); data.put("total", total); data.put("items", rulesList); @@ -128,7 +178,7 @@ public class AdminGrouponController { @RequiresPermissionsDesc(menu = { "推广管理", "团购管理" }, button = "编辑") @PostMapping("/update") public Object update(@RequestBody DtsGrouponRules grouponRules) { - logger.info("【请求开始】推广管理->团购管理->编辑,请求参数:{}", JSONObject.toJSONString(grouponRules)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->团购管理->编辑,请求参数:{}", JSONObject.toJSONString(grouponRules)); Object error = validate(grouponRules); if (error != null) { @@ -157,7 +207,7 @@ public class AdminGrouponController { @RequiresPermissionsDesc(menu = { "推广管理", "团购管理" }, button = "添加") @PostMapping("/create") public Object create(@RequestBody DtsGrouponRules grouponRules) { - logger.info("【请求开始】推广管理->团购管理->添加,请求参数:{}", JSONObject.toJSONString(grouponRules)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->团购管理->添加,请求参数:{}", JSONObject.toJSONString(grouponRules)); Object error = validate(grouponRules); if (error != null) { @@ -194,7 +244,7 @@ public class AdminGrouponController { @RequiresPermissionsDesc(menu = { "推广管理", "团购管理" }, button = "删除") @PostMapping("/delete") public Object delete(@RequestBody DtsGrouponRules grouponRules) { - logger.info("【请求开始】推广管理->团购管理->删除,请求参数:{}", JSONObject.toJSONString(grouponRules)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->团购管理->删除,请求参数:{}", JSONObject.toJSONString(grouponRules)); Integer id = grouponRules.getId(); if (id == null) { diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminHistoryController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminHistoryController.java index 3548505..ec1ce12 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminHistoryController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminHistoryController.java @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.core.validator.Order; import com.qiguliuxing.dts.core.validator.Sort; @@ -37,7 +38,7 @@ public class AdminHistoryController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】用户管理->搜索历史->查询,请求参数:userId:{},keyword:{},page:{}", userId, keyword, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 用户管理->搜索历史->查询,请求参数:userId:{},keyword:{},page:{}", userId, keyword, page); List footprintList = searchHistoryService.querySelective(userId, keyword, page, limit, sort, order); diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminIssueController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminIssueController.java index 4ffdca9..4f130fc 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminIssueController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminIssueController.java @@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.core.validator.Order; import com.qiguliuxing.dts.core.validator.Sort; @@ -44,7 +45,7 @@ public class AdminIssueController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】商场管理->通用问题->查询,请求参数:question:{},page:{}", question, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->通用问题->查询,请求参数:question:{},page:{}", question, page); List issueList = issueService.querySelective(question, page, limit, sort, order); long total = PageInfo.of(issueList).getTotal(); @@ -72,7 +73,7 @@ public class AdminIssueController { @RequiresPermissionsDesc(menu = { "商场管理", "通用问题" }, button = "添加") @PostMapping("/create") public Object create(@RequestBody DtsIssue issue) { - logger.info("【请求开始】商场管理->通用问题->添加,请求参数:question:{},page:{}", JSONObject.toJSONString(issue)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->通用问题->添加,请求参数:question:{},page:{}", JSONObject.toJSONString(issue)); Object error = validate(issue); if (error != null) { @@ -87,7 +88,7 @@ public class AdminIssueController { @RequiresPermissions("admin:issue:read") @GetMapping("/read") public Object read(@NotNull Integer id) { - logger.info("【请求开始】商场管理->通用问题->详情,请求参数,id:{}", id); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->通用问题->详情,请求参数,id:{}", id); DtsIssue issue = issueService.findById(id); @@ -99,7 +100,7 @@ public class AdminIssueController { @RequiresPermissionsDesc(menu = { "商场管理", "通用问题" }, button = "编辑") @PostMapping("/update") public Object update(@RequestBody DtsIssue issue) { - logger.info("【请求开始】商场管理->通用问题->编辑,请求参数:{}", JSONObject.toJSONString(issue)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->通用问题->编辑,请求参数:{}", JSONObject.toJSONString(issue)); Object error = validate(issue); if (error != null) { @@ -118,7 +119,7 @@ public class AdminIssueController { @RequiresPermissionsDesc(menu = { "商场管理", "通用问题" }, button = "删除") @PostMapping("/delete") public Object delete(@RequestBody DtsIssue issue) { - logger.info("【请求开始】商场管理->通用问题->删除,请求参数:{}", JSONObject.toJSONString(issue)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->通用问题->删除,请求参数:{}", JSONObject.toJSONString(issue)); Integer id = issue.getId(); if (id == null) { diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminKeywordController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminKeywordController.java index c34ef11..4506235 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminKeywordController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminKeywordController.java @@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.core.validator.Order; import com.qiguliuxing.dts.core.validator.Sort; @@ -44,7 +45,7 @@ public class AdminKeywordController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】商场管理->关键词->查询,请求参数:keyword:{},url:{},page:{}", keyword, url, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->关键词->查询,请求参数:keyword:{},url:{},page:{}", keyword, url, page); List brandList = keywordService.querySelective(keyword, url, page, limit, sort, order); long total = PageInfo.of(brandList).getTotal(); @@ -72,7 +73,7 @@ public class AdminKeywordController { @RequiresPermissionsDesc(menu = { "商场管理", "关键词" }, button = "添加") @PostMapping("/create") public Object create(@RequestBody DtsKeyword keywords) { - logger.info("【请求开始】商场管理->关键词->添加,请求参数:{}", JSONObject.toJSONString(keywords)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->关键词->添加,请求参数:{}", JSONObject.toJSONString(keywords)); Object error = validate(keywords); if (error != null) { @@ -88,7 +89,7 @@ public class AdminKeywordController { @RequiresPermissionsDesc(menu = { "商场管理", "关键词" }, button = "详情") @GetMapping("/read") public Object read(@NotNull Integer id) { - logger.info("【请求开始】商场管理->关键词->详情,请求参数,id:{}", id); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->关键词->详情,请求参数,id:{}", id); DtsKeyword keywords = keywordService.findById(id); @@ -100,7 +101,7 @@ public class AdminKeywordController { @RequiresPermissionsDesc(menu = { "商场管理", "关键词" }, button = "编辑") @PostMapping("/update") public Object update(@RequestBody DtsKeyword keywords) { - logger.info("【请求开始】商场管理->关键词->编辑,请求参数:{}", JSONObject.toJSONString(keywords)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->关键词->编辑,请求参数:{}", JSONObject.toJSONString(keywords)); Object error = validate(keywords); if (error != null) { @@ -119,7 +120,7 @@ public class AdminKeywordController { @RequiresPermissionsDesc(menu = { "商场管理", "关键词" }, button = "删除") @PostMapping("/delete") public Object delete(@RequestBody DtsKeyword keyword) { - logger.info("【请求开始】商场管理->关键词->删除,请求参数:{}", JSONObject.toJSONString(keyword)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->关键词->删除,请求参数:{}", JSONObject.toJSONString(keyword)); Integer id = keyword.getId(); if (id == null) { diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminOrderController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminOrderController.java index 5dd506e..8b0babf 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminOrderController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminOrderController.java @@ -18,6 +18,7 @@ import org.springframework.web.bind.annotation.RestController; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; import com.qiguliuxing.dts.admin.service.AdminOrderService; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.validator.Order; import com.qiguliuxing.dts.core.validator.Sort; @@ -49,7 +50,7 @@ public class AdminOrderController { @RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】商场管理->订单管理->查询,请求参数:userId:{},orderSn:{},page:{}", userId, orderSn, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->订单管理->查询,请求参数:userId:{},orderSn:{},page:{}", userId, orderSn, page); return adminOrderService.list(userId, orderSn, orderStatusArray, page, limit, sort, order); } @@ -64,7 +65,7 @@ public class AdminOrderController { @RequiresPermissionsDesc(menu = { "商场管理", "订单管理" }, button = "详情") @GetMapping("/detail") public Object detail(@NotNull Integer id) { - logger.info("【请求开始】商场管理->订单管理->详情,请求参数:id:{}", id); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->订单管理->详情,请求参数:id:{}", id); return adminOrderService.detail(id); } @@ -79,7 +80,7 @@ public class AdminOrderController { @RequiresPermissionsDesc(menu = { "商场管理", "订单管理" }, button = "订单退款") @PostMapping("/refund") public Object refund(@RequestBody String body) { - logger.info("【请求开始】商场管理->订单管理->订单退款,请求参数,body:{}", body); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->订单管理->订单退款,请求参数,body:{}", body); return adminOrderService.refund(body); } @@ -94,7 +95,7 @@ public class AdminOrderController { @RequiresPermissionsDesc(menu = { "商场管理", "订单管理" }, button = "订单发货") @PostMapping("/ship") public Object ship(@RequestBody String body) { - logger.info("【请求开始】商场管理->订单管理->订单发货,请求参数,body:{}", body); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->订单管理->订单发货,请求参数,body:{}", body); return adminOrderService.ship(body); } @@ -109,7 +110,7 @@ public class AdminOrderController { @RequiresPermissionsDesc(menu = { "商场管理", "订单管理" }, button = "订单商品回复") @PostMapping("/reply") public Object reply(@RequestBody String body) { - logger.info("【请求开始】商场管理->订单管理->订单商品回复,请求参数,body:{}", body); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->订单管理->订单商品回复,请求参数,body:{}", body); return adminOrderService.reply(body); } @@ -120,11 +121,11 @@ public class AdminOrderController { * @param body 订单信息,{ orderId:xxx } * @return 订单操作结果 */ - @RequiresPermissions("admin:order:listShipChannel") - @RequiresPermissionsDesc(menu = { "商场管理", "订单管理" }, button = "快递信息加载") + @RequiresPermissions("admin:order:listShip") + @RequiresPermissionsDesc(menu = { "商场管理", "订单管理" }, button = "快递加载") @GetMapping("/listShipChannel") public Object listShipChannel() { - logger.info("【请求开始】商场管理->订单管理->快递信息加载"); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 商场管理->订单管理->快递信息加载"); return adminOrderService.listShipChannel(); } diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminProfileController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminProfileController.java index 2d7eaf5..8e6f4c8 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminProfileController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminProfileController.java @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.qiguliuxing.dts.admin.util.AdminResponseUtil; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.util.JacksonUtil; import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.core.util.bcrypt.BCryptPasswordEncoder; @@ -34,7 +35,7 @@ public class AdminProfileController { @RequiresAuthentication @PostMapping("/password") public Object create(@RequestBody String body) { - logger.info("【请求开始】系统管理->修改密码,请求参数,body:{}", body); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 系统管理->修改密码,请求参数,body:{}", body); String oldPassword = JacksonUtil.parseString(body, "oldPassword"); String newPassword = JacksonUtil.parseString(body, "newPassword"); diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminRegionController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminRegionController.java index b5840f8..e7c6edf 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminRegionController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminRegionController.java @@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.core.validator.Order; import com.qiguliuxing.dts.core.validator.Sort; @@ -43,7 +44,7 @@ public class AdminRegionController { @RequestParam(defaultValue = "10") Integer limit, @Sort(accepts = { "id" }) @RequestParam(defaultValue = "id") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】行政区域管理->查询,请求参数,name:{},code:{},page:{}", name, code, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 行政区域管理->查询,请求参数,name:{},code:{},page:{}", name, code, page); List regionList = regionService.querySelective(name, code, page, limit, sort, order); long total = PageInfo.of(regionList).getTotal(); diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminRoleController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminRoleController.java index 505c137..a7104cd 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminRoleController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminRoleController.java @@ -29,6 +29,7 @@ import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; import com.qiguliuxing.dts.admin.util.AdminResponseCode; import com.qiguliuxing.dts.admin.util.AdminResponseUtil; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.admin.util.PermVo; import com.qiguliuxing.dts.admin.util.Permission; import com.qiguliuxing.dts.admin.util.PermissionUtil; @@ -59,7 +60,7 @@ public class AdminRoleController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】系统管理->角色管理->角色查询,请求参数,name:{},page:{}", name, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 系统管理->角色管理->角色查询,请求参数,name:{},page:{}", name, page); List roleList = roleService.querySelective(name, page, limit, sort, order); long total = PageInfo.of(roleList).getTotal(); @@ -74,7 +75,7 @@ public class AdminRoleController { @GetMapping("/options") public Object options() { List roleList = roleService.queryAll(); - logger.info("【请求开始】系统管理->角色管理->查询所有角色"); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 系统管理->角色管理->查询所有角色"); List> options = new ArrayList<>(roleList.size()); for (DtsRole role : roleList) { @@ -92,7 +93,7 @@ public class AdminRoleController { @RequiresPermissionsDesc(menu = { "系统管理", "角色管理" }, button = "角色详情") @GetMapping("/read") public Object read(@NotNull Integer id) { - logger.info("【请求开始】系统管理->角色管理->角色详情,请求参数,id:{}", id); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 系统管理->角色管理->角色详情,请求参数,id:{}", id); DtsRole role = roleService.findById(id); @@ -113,7 +114,7 @@ public class AdminRoleController { @RequiresPermissionsDesc(menu = { "系统管理", "角色管理" }, button = "角色添加") @PostMapping("/create") public Object create(@RequestBody DtsRole role) { - logger.info("【请求开始】系统管理->角色管理->角色添加,请求参数:{}", JSONObject.toJSONString(role)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 系统管理->角色管理->角色添加,请求参数:{}", JSONObject.toJSONString(role)); Object error = validate(role); if (error != null) { @@ -135,7 +136,7 @@ public class AdminRoleController { @RequiresPermissionsDesc(menu = { "系统管理", "角色管理" }, button = "角色编辑") @PostMapping("/update") public Object update(@RequestBody DtsRole role) { - logger.info("【请求开始】系统管理->角色管理->角色编辑,请求参数:{}", JSONObject.toJSONString(role)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 系统管理->角色管理->角色编辑,请求参数:{}", JSONObject.toJSONString(role)); Object error = validate(role); if (error != null) { @@ -151,7 +152,7 @@ public class AdminRoleController { @RequiresPermissionsDesc(menu = { "系统管理", "角色管理" }, button = "角色删除") @PostMapping("/delete") public Object delete(@RequestBody DtsRole role) { - logger.info("【请求开始】系统管理->角色管理->角色删除,请求参数,id:{}", JSONObject.toJSONString(role)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 系统管理->角色管理->角色删除,请求参数,id:{}", JSONObject.toJSONString(role)); Integer id = role.getId(); if (id == null) { @@ -201,7 +202,7 @@ public class AdminRoleController { @RequiresPermissionsDesc(menu = { "系统管理", "角色管理" }, button = "权限详情") @GetMapping("/permissions") public Object getPermissions(Integer roleId) { - logger.info("【请求开始】系统管理->角色管理->权限详情,请求参数,roleId:{}", roleId); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 系统管理->角色管理->权限详情,请求参数,roleId:{}", roleId); List systemPermissions = getSystemPermissions(); Set assignedPermissions = getAssignedPermissions(roleId); @@ -224,7 +225,7 @@ public class AdminRoleController { @RequiresPermissionsDesc(menu = { "系统管理", "角色管理" }, button = "权限变更") @PostMapping("/permissions") public Object updatePermissions(@RequestBody String body) { - logger.info("【请求开始】系统管理->角色管理->权限变更,请求参数,body:{}", body); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 系统管理->角色管理->权限变更,请求参数,body:{}", body); Integer roleId = JacksonUtil.parseInteger(body, "roleId"); List permissions = JacksonUtil.parseStringList(body, "permissions"); diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminStatController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminStatController.java index b195a3b..9d5f125 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminStatController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminStatController.java @@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.admin.util.StatVo; import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.db.service.StatService; @@ -32,7 +33,7 @@ public class AdminStatController { @RequiresPermissionsDesc(menu = { "统计管理", "用户统计" }, button = "查询") @GetMapping("/user") public Object statUser() { - logger.info("【请求开始】统计管理->用户统计->查询"); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 统计管理->用户统计->查询"); List rows = statService.statUser(); String[] columns = new String[] { "day", "users" }; @@ -48,7 +49,7 @@ public class AdminStatController { @RequiresPermissionsDesc(menu = { "统计管理", "订单统计" }, button = "查询") @GetMapping("/order") public Object statOrder() { - logger.info("【请求开始】统计管理->订单统计->查询"); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 统计管理->订单统计->查询"); List rows = statService.statOrder(); String[] columns = new String[] { "day", "orders", "customers", "amount", "pcr" }; @@ -64,7 +65,7 @@ public class AdminStatController { @RequiresPermissionsDesc(menu = { "统计管理", "商品统计" }, button = "查询") @GetMapping("/goods") public Object statGoods() { - logger.info("【请求开始】统计管理->商品统计->查询"); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 统计管理->商品统计->查询"); List rows = statService.statGoods(); String[] columns = new String[] { "day", "orders", "products", "amount" }; diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminStorageController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminStorageController.java index 371f744..573b059 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminStorageController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminStorageController.java @@ -24,6 +24,7 @@ import org.springframework.web.multipart.MultipartFile; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.storage.StorageService; import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.core.validator.Order; @@ -49,7 +50,7 @@ public class AdminStorageController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】系统管理->对象存储->查询,请求参数,name:{},key:{},page:{}", name, key, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 系统管理->对象存储->查询,请求参数,name:{},key:{},page:{}", name, key, page); List storageList = DtsStorageService.querySelective(key, name, page, limit, sort, order); long total = PageInfo.of(storageList).getTotal(); @@ -65,7 +66,7 @@ public class AdminStorageController { @RequiresPermissionsDesc(menu = { "系统管理", "对象存储" }, button = "上传") @PostMapping("/create") public Object create(@RequestParam("file") MultipartFile file) throws IOException { - logger.info("【请求开始】系统管理->对象存储->上传,请求参数,file:{}", file.getOriginalFilename()); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 系统管理->对象存储->上传,请求参数,file:{}", file.getOriginalFilename()); String originalFilename = file.getOriginalFilename(); String url = storageService.store(file.getInputStream(), file.getSize(), file.getContentType(), @@ -81,7 +82,7 @@ public class AdminStorageController { @RequiresPermissionsDesc(menu = { "系统管理", "对象存储" }, button = "详情") @PostMapping("/read") public Object read(@NotNull Integer id) { - logger.info("【请求开始】系统管理->对象存储->详情,请求参数,id:{}", id); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 系统管理->对象存储->详情,请求参数,id:{}", id); DtsStorage storageInfo = DtsStorageService.findById(id); if (storageInfo == null) { @@ -96,7 +97,7 @@ public class AdminStorageController { @RequiresPermissionsDesc(menu = { "系统管理", "对象存储" }, button = "编辑") @PostMapping("/update") public Object update(@RequestBody DtsStorage dtsStorage) { - logger.info("【请求开始】系统管理->对象存储->编辑,请求参数:{}", JSONObject.toJSONString(dtsStorage)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 系统管理->对象存储->编辑,请求参数:{}", JSONObject.toJSONString(dtsStorage)); if (DtsStorageService.update(dtsStorage) == 0) { logger.error("系统管理->对象存储->编辑 错误:{}", "更新数据失败!"); @@ -111,7 +112,7 @@ public class AdminStorageController { @RequiresPermissionsDesc(menu = { "系统管理", "对象存储" }, button = "删除") @PostMapping("/delete") public Object delete(@RequestBody DtsStorage DtsStorage) { - logger.info("【请求开始】系统管理->对象存储->删除,请求参数:{}", JSONObject.toJSONString(DtsStorage)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 系统管理->对象存储->删除,请求参数:{}", JSONObject.toJSONString(DtsStorage)); String key = DtsStorage.getKey(); if (StringUtils.isEmpty(key)) { diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminTopicController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminTopicController.java index d5e2b9e..ae409c4 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminTopicController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminTopicController.java @@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.qcode.QCodeService; import com.qiguliuxing.dts.core.util.ResponseUtil; import com.qiguliuxing.dts.core.validator.Order; @@ -49,7 +50,7 @@ public class AdminTopicController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】推广管理->专题管理->查询,请求参数,title:{},subtitle:{},page:{}", title, subtitle, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->专题管理->查询,请求参数,title:{},subtitle:{},page:{}", title, subtitle, page); List topicList = topicService.querySelective(title, subtitle, page, limit, sort, order); long total = PageInfo.of(topicList).getTotal(); @@ -81,7 +82,7 @@ public class AdminTopicController { @RequiresPermissionsDesc(menu = { "推广管理", "专题管理" }, button = "添加") @PostMapping("/create") public Object create(@RequestBody DtsTopic topic) { - logger.info("【请求开始】推广管理->专题管理->添加,请求参数:{}", JSONObject.toJSONString(topic)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->专题管理->添加,请求参数:{}", JSONObject.toJSONString(topic)); Object error = validate(topic); if (error != null) { @@ -106,7 +107,7 @@ public class AdminTopicController { @RequiresPermissionsDesc(menu = { "推广管理", "专题管理" }, button = "详情") @GetMapping("/read") public Object read(@NotNull Integer id) { - logger.info("【请求开始】推广管理->专题管理->详情,请求参数,id:{}", id); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->专题管理->详情,请求参数,id:{}", id); DtsTopic topic = topicService.findById(id); @@ -118,7 +119,7 @@ public class AdminTopicController { @RequiresPermissionsDesc(menu = { "推广管理", "专题管理" }, button = "编辑") @PostMapping("/update") public Object update(@RequestBody DtsTopic topic) { - logger.info("【请求开始】推广管理->专题管理->编辑,请求参数:{}", JSONObject.toJSONString(topic)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->专题管理->编辑,请求参数:{}", JSONObject.toJSONString(topic)); Object error = validate(topic); if (error != null) { @@ -146,7 +147,7 @@ public class AdminTopicController { @RequiresPermissionsDesc(menu = { "推广管理", "专题管理" }, button = "删除") @PostMapping("/delete") public Object delete(@RequestBody DtsTopic topic) { - logger.info("【请求开始】推广管理->专题管理->删除,请求参数:{}", JSONObject.toJSONString(topic)); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 推广管理->专题管理->删除,请求参数:{}", JSONObject.toJSONString(topic)); topicService.deleteById(topic.getId()); diff --git a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminUserController.java b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminUserController.java index d7895de..522dc14 100644 --- a/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminUserController.java +++ b/dts-admin-api/src/main/java/com/qiguliuxing/dts/admin/web/AdminUserController.java @@ -21,6 +21,7 @@ import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.qiguliuxing.dts.admin.annotation.RequiresPermissionsDesc; +import com.qiguliuxing.dts.admin.util.AuthSupport; import com.qiguliuxing.dts.core.qcode.QCodeService; import com.qiguliuxing.dts.core.util.JacksonUtil; import com.qiguliuxing.dts.core.util.ResponseUtil; @@ -28,6 +29,7 @@ import com.qiguliuxing.dts.core.validator.Order; import com.qiguliuxing.dts.core.validator.Sort; import com.qiguliuxing.dts.db.domain.DtsUser; import com.qiguliuxing.dts.db.domain.DtsUserAccount; +import com.qiguliuxing.dts.db.service.DtsAccountService; import com.qiguliuxing.dts.db.service.DtsUserService; @RestController @@ -41,6 +43,9 @@ public class AdminUserController { @Autowired private QCodeService qCodeService; + + @Autowired + private DtsAccountService accountService; @RequiresPermissions("admin:user:list") @RequiresPermissionsDesc(menu = { "用户管理", "会员管理" }, button = "查询") @@ -49,7 +54,7 @@ public class AdminUserController { @RequestParam(defaultValue = "10") Integer limit, @Sort @RequestParam(defaultValue = "add_time") String sort, @Order @RequestParam(defaultValue = "desc") String order) { - logger.info("【请求开始】用户管理->会员管理->查询,请求参数,username:{},code:{},page:{}", username, mobile, page); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 用户管理->会员管理->查询,请求参数,username:{},code:{},page:{}", username, mobile, page); List userList = userService.querySelective(username, mobile, page, limit, sort, order); long total = PageInfo.of(userList).getTotal(); @@ -71,7 +76,7 @@ public class AdminUserController { @RequiresPermissionsDesc(menu = { "用户管理", "会员管理" }, button = "代理详情") @GetMapping("/detailApprove") public Object detailApprove(@NotNull Integer id) { - logger.info("【请求开始】用户管理->会员管理->代理详情,请求参数:id:{}", id); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 用户管理->会员管理->代理详情,请求参数:id:{}", id); DtsUserAccount dbAccount = userService.detailApproveByUserId(id); if (dbAccount == null) { @@ -86,7 +91,7 @@ public class AdminUserController { @RequiresPermissionsDesc(menu = { "用户管理", "会员管理" }, button = "代理审批") @PostMapping("/approveAgency") public Object approveAgency(@RequestBody String body) { - logger.info("【请求开始】用户管理->会员管理->代理审批,请求参数:{}",body); + logger.info("【请求开始】操作人:[" + AuthSupport.userName()+ "] 用户管理->会员管理->代理审批,请求参数:{}",body); Integer userId = JacksonUtil.parseInteger(body, "userId"); Integer settlementRate = JacksonUtil.parseInteger(body, "settlementRate"); @@ -101,7 +106,18 @@ public class AdminUserController { */ String shareUrl = qCodeService.createShareUserImage(userId); + /** + * 结算当前用户的订单佣金给其代理 + * 在用户审批通过成为代理用户之前下的订单,结算佣金应归属于前一个代理用户 + * 后续的订单由用户申请或系统自动结算给,代理用户直接会将佣金结算给自己 + */ + boolean result = accountService.settlementPreviousAgency(userId); + if (!result) { + logger.warn("用户管理->会员管理->代理审批 存在异常:{}","当前用户订单佣金交割给代理用户时出错!"); + } + userService.approveAgency(userId,settlementRate,shareUrl); + }catch (Exception e) { logger.error("用户管理->会员管理->代理审批 出错:{}",e.getMessage()); e.printStackTrace(); diff --git a/dts-admin-api/src/main/resources/application.yml b/dts-admin-api/src/main/resources/application.yml index f353586..ce37996 100644 --- a/dts-admin-api/src/main/resources/application.yml +++ b/dts-admin-api/src/main/resources/application.yml @@ -9,12 +9,12 @@ spring: max-request-size: 80Mb location: /tmp/tomcat_upload - + server: port: 8083 servlet: context-path: /demo - + logging: level: root: ERROR diff --git a/dts-core/src/main/java/com/qiguliuxing/dts/core/captcha/CaptchaCodeManager.java b/dts-core/src/main/java/com/qiguliuxing/dts/core/captcha/CaptchaCodeManager.java new file mode 100644 index 0000000..f1299a7 --- /dev/null +++ b/dts-core/src/main/java/com/qiguliuxing/dts/core/captcha/CaptchaCodeManager.java @@ -0,0 +1,100 @@ +package com.qiguliuxing.dts.core.captcha; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * 缓存系统中的验证码 + */ +public class CaptchaCodeManager { + private static final Logger logger = LoggerFactory.getLogger(CaptchaCodeManager.class); + + private static final Integer DEFAULT_EXPIRE_MINUTES = 3;//验证码默认存储的有效期,单位:分钟 + private static Map captchaCodeCache = new HashMap<>(); + + /** + * 添加到缓存 + * + * @param flagUid + * 验证标志码 + * @param code + * 验证码 + */ + public static boolean addToCache(String flagUid, String code,Integer expireTime) { + cleanExpireCacheData();//清理过期内存数据 + + // 已经发过验证码且验证码还未过期 + if (captchaCodeCache.get(flagUid) != null) { + if (captchaCodeCache.get(flagUid).getExpireTime().isAfter(LocalDateTime.now())) { + return false; + } else { + // 存在但是已过期,删掉 + captchaCodeCache.remove(flagUid); + } + } + + CaptchaItem captchaItem = new CaptchaItem(); + captchaItem.setFlagUid(flagUid); + captchaItem.setCode(code); + // 有效期为expireTime分钟 + if (expireTime == null) { + expireTime = DEFAULT_EXPIRE_MINUTES; + } + captchaItem.setExpireTime(LocalDateTime.now().plusMinutes(expireTime)); + + captchaCodeCache.put(flagUid, captchaItem); + + return true; + } + + + /** + * 获取缓存的验证码 + * + * @param flagUid + * 关联的标志码 + * @return 验证码 + */ + public static String getCachedCaptcha(String flagUid) { + // 没有标志码记录 + if (captchaCodeCache.get(flagUid) == null) + return null; + + // 记录但是已经过期 + if (captchaCodeCache.get(flagUid).getExpireTime().isBefore(LocalDateTime.now())) { + return null; + } + cleanExpireCacheData();//清理过期内存数据 + + return captchaCodeCache.get(flagUid).getCode(); + } + + /** + * 清理过期验证码 + */ + private static void cleanExpireCacheData() { + Iterator> iterator = captchaCodeCache.entrySet().iterator(); //map.entrySet()得到的是set集合,可以使用迭代器遍历 + List keys = new ArrayList(); + while(iterator.hasNext()){ + Entry entry = iterator.next(); + if (entry.getValue() != null && entry.getValue().getExpireTime().isBefore(LocalDateTime.now())) { + keys.add(entry.getKey()); + logger.info("清理商品分享图 验证标志码flagUid:{},验证码 captcha:{}",entry.getKey(),entry.getValue().getCode()); + } + } + if (keys.size() > 0) { + for(String key : keys) { + captchaCodeCache.remove(key); + } + } + } + +} diff --git a/dts-core/src/main/java/com/qiguliuxing/dts/core/captcha/CaptchaItem.java b/dts-core/src/main/java/com/qiguliuxing/dts/core/captcha/CaptchaItem.java new file mode 100644 index 0000000..e509726 --- /dev/null +++ b/dts-core/src/main/java/com/qiguliuxing/dts/core/captcha/CaptchaItem.java @@ -0,0 +1,38 @@ +package com.qiguliuxing.dts.core.captcha; + +import java.time.LocalDateTime; + +/** + * 验证码实体类,用于缓存验证码发送 + */ +public class CaptchaItem { + + private String flagUid; + private String code; + private LocalDateTime expireTime; + + + public String getFlagUid() { + return flagUid; + } + + public void setFlagUid(String flagUid) { + this.flagUid = flagUid; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public LocalDateTime getExpireTime() { + return expireTime; + } + + public void setExpireTime(LocalDateTime expireTime) { + this.expireTime = expireTime; + } +} \ No newline at end of file diff --git a/dts-core/src/main/java/com/qiguliuxing/dts/core/config/JacksonConfig.java b/dts-core/src/main/java/com/qiguliuxing/dts/core/config/JacksonConfig.java index 659ee47..eb31f47 100644 --- a/dts-core/src/main/java/com/qiguliuxing/dts/core/config/JacksonConfig.java +++ b/dts-core/src/main/java/com/qiguliuxing/dts/core/config/JacksonConfig.java @@ -1,5 +1,18 @@ package com.qiguliuxing.dts.core.config; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; + +import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; +import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; + import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; @@ -8,22 +21,12 @@ import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer; -import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.Ordered; -import org.springframework.core.annotation.Order; -import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.format.DateTimeFormatter; @Configuration public class JacksonConfig { @Bean + @Primary @Order(Ordered.HIGHEST_PRECEDENCE) public Jackson2ObjectMapperBuilderCustomizer customJackson() { return new Jackson2ObjectMapperBuilderCustomizer() { @@ -31,6 +34,8 @@ public class JacksonConfig { public void customize(Jackson2ObjectMapperBuilder builder) { builder.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + /*builder.serializerByType(LocalDateTime.class, + new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss")));*/ builder.serializerByType(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); builder.serializerByType(LocalTime.class, @@ -38,6 +43,8 @@ public class JacksonConfig { builder.deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + /*builder.deserializerByType(LocalDateTime.class, + new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss")));*/ builder.deserializerByType(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); builder.deserializerByType(LocalTime.class, diff --git a/dts-core/src/main/java/com/qiguliuxing/dts/core/consts/CommConsts.java b/dts-core/src/main/java/com/qiguliuxing/dts/core/consts/CommConsts.java index 9be175a..0cdf581 100644 --- a/dts-core/src/main/java/com/qiguliuxing/dts/core/consts/CommConsts.java +++ b/dts-core/src/main/java/com/qiguliuxing/dts/core/consts/CommConsts.java @@ -11,7 +11,7 @@ public interface CommConsts { public static final String DEFAULT_AVATAR = "https://avatar.csdnimg.cn/8/A/0/2_qiguliuxing.jpg"; - public static final String DEFAULT_ORDER_FIX = "聚惠星小程序订单:"; + public static final String DEFAULT_ORDER_FIX = "小程序订单:"; public static final String MISS_PARAMS = "缺少必要参数"; diff --git a/dts-core/src/main/java/com/qiguliuxing/dts/core/exception/UtilException.java b/dts-core/src/main/java/com/qiguliuxing/dts/core/exception/UtilException.java new file mode 100644 index 0000000..53485df --- /dev/null +++ b/dts-core/src/main/java/com/qiguliuxing/dts/core/exception/UtilException.java @@ -0,0 +1,20 @@ +package com.qiguliuxing.dts.core.exception; + +/** + * 工具类异常 + */ +public class UtilException extends RuntimeException { + private static final long serialVersionUID = 8247610319171014183L; + + public UtilException(Throwable e) { + super(e.getMessage(), e); + } + + public UtilException(String message) { + super(message); + } + + public UtilException(String message, Throwable throwable) { + super(message, throwable); + } +} diff --git a/dts-core/src/main/java/com/qiguliuxing/dts/core/notify/NotifyService.java b/dts-core/src/main/java/com/qiguliuxing/dts/core/notify/NotifyService.java index e6f31a5..caf9a2d 100644 --- a/dts-core/src/main/java/com/qiguliuxing/dts/core/notify/NotifyService.java +++ b/dts-core/src/main/java/com/qiguliuxing/dts/core/notify/NotifyService.java @@ -63,18 +63,18 @@ public class NotifyService { * 通知模版内容里的参数,类似"您的验证码为{1}"中{1}的值 */ @Async - public void notifySmsTemplate(String phoneNumber, NotifyType notifyType, String[] params) { + public SmsResult notifySmsTemplate(String phoneNumber, NotifyType notifyType, String[] params) { if (smsSender == null) { - return; + return null; } String templateIdStr = getTemplateId(notifyType, smsTemplate); if (templateIdStr == null) { - return; + return null; } int templateId = Integer.parseInt(templateIdStr); - smsSender.sendWithTemplate(phoneNumber, templateId, params); + return smsSender.sendWithTemplate(phoneNumber, templateId, params); } /** diff --git a/dts-core/src/main/java/com/qiguliuxing/dts/core/qcode/QCodeService.java b/dts-core/src/main/java/com/qiguliuxing/dts/core/qcode/QCodeService.java index f9bb567..1d4833a 100644 --- a/dts-core/src/main/java/com/qiguliuxing/dts/core/qcode/QCodeService.java +++ b/dts-core/src/main/java/com/qiguliuxing/dts/core/qcode/QCodeService.java @@ -70,17 +70,22 @@ public class QCodeService { /** * 创建商品分享图 - * + * + * @param shareUserId * @param goodId * @param goodPicUrl * @param goodName */ - public String createGoodShareImage(String goodId, String goodPicUrl, String goodName,BigDecimal counterPrice,BigDecimal retailPrice) { + public String createGoodShareImage(Integer shareUserId,String goodId, String goodPicUrl, String goodName,BigDecimal counterPrice,BigDecimal retailPrice) { if (!SystemConfig.isAutoCreateShareImage()) return ""; try { // 创建该商品的二维码 - File file = wxMaService.getQrcodeService().createWxaCodeUnlimit("goods," + goodId, "pages/index/index"); + String scene = "goods," + goodId; + if (shareUserId != null ) { + scene = scene + ",user," + shareUserId; + } + File file = wxMaService.getQrcodeService().createWxaCodeUnlimit(scene, "pages/index/index"); FileInputStream inputStream = new FileInputStream(file); // 将商品图片,商品名字,商城名字画到模版图中 byte[] imageData = drawPicture(inputStream, goodPicUrl,goodName,counterPrice,retailPrice); @@ -361,12 +366,25 @@ public class QCodeService { return bs.toByteArray(); } - public String createBrandImage(Integer brandId, String picUrl, String name, String defaultCategory) { + /** + * 创建商品的分享海报 + * @param shareUserId + * @param brandId + * @param picUrl + * @param name + * @param defaultCategory + * @return + */ + public String createBrandImage(Integer shareUserId,Integer brandId, String picUrl, String name, String defaultCategory) { if (!SystemConfig.isAutoCreateShareImage()) return ""; try { // 创建该商品的二维码 - File file = wxMaService.getQrcodeService().createWxaCodeUnlimit("brand," + brandId, "pages/index/index"); + String scene = "brand," + brandId; + if (shareUserId != null ) { + scene = scene + ",user," + shareUserId; + } + File file = wxMaService.getQrcodeService().createWxaCodeUnlimit(scene, "pages/index/index"); FileInputStream inputStream = new FileInputStream(file); // 将商品图片,商品名字,商城名字画到模版图中 byte[] imageData = drawBrandPicture(inputStream, picUrl,name,defaultCategory); diff --git a/dts-core/src/main/java/com/qiguliuxing/dts/core/type/AgencyShareTypeEnum.java b/dts-core/src/main/java/com/qiguliuxing/dts/core/type/AgencyShareTypeEnum.java new file mode 100644 index 0000000..d42aa60 --- /dev/null +++ b/dts-core/src/main/java/com/qiguliuxing/dts/core/type/AgencyShareTypeEnum.java @@ -0,0 +1,48 @@ +package com.qiguliuxing.dts.core.type; + +/** + * 代理分享海报 枚举类型 + * + * @author QIGULIUXING + * @QQ 623659388 + * @since 1.0.0 + */ +public enum AgencyShareTypeEnum { + + GOODS_SHARE(1, "商品分享海报"), BRAND_SHARE(2, "入驻品牌店铺分享海报"),GROUPON_SHARE(3, "团购分享海报"); + + private Integer type; + private String desc; + + private AgencyShareTypeEnum(Integer type, String desc) { + this.type = type; + this.desc = desc; + } + + public static AgencyShareTypeEnum getInstance(Integer type2) { + if (type2 != null) { + for (AgencyShareTypeEnum tmp : AgencyShareTypeEnum.values()) { + if (tmp.type.intValue() == type2.intValue()) { + return tmp; + } + } + } + return null; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/dts-core/src/main/java/com/qiguliuxing/dts/core/type/BrokerageTypeEnum.java b/dts-core/src/main/java/com/qiguliuxing/dts/core/type/BrokerageTypeEnum.java index e7541ad..6af9887 100644 --- a/dts-core/src/main/java/com/qiguliuxing/dts/core/type/BrokerageTypeEnum.java +++ b/dts-core/src/main/java/com/qiguliuxing/dts/core/type/BrokerageTypeEnum.java @@ -9,7 +9,7 @@ package com.qiguliuxing.dts.core.type; */ public enum BrokerageTypeEnum { - SYS_APPLY((byte) 0, "系统结算自动申请"), USER_APPLY((byte) 1, "用户手工申请"), APPLY_FINISH((byte) 2, "审批通过或完成"), APPLY_FAIL((byte) 2, "审批不通过"); + SYS_APPLY((byte) 0, "系统结算自动申请"), USER_APPLY((byte) 1, "用户手工申请"); private Byte type; private String desc; diff --git a/dts-core/src/main/java/com/qiguliuxing/dts/core/util/Base64.java b/dts-core/src/main/java/com/qiguliuxing/dts/core/util/Base64.java new file mode 100644 index 0000000..05c2a1a --- /dev/null +++ b/dts-core/src/main/java/com/qiguliuxing/dts/core/util/Base64.java @@ -0,0 +1,289 @@ +package com.qiguliuxing.dts.core.util; + +/** + * Base64工具类 + */ +public final class Base64 +{ + static private final int BASELENGTH = 128; + static private final int LOOKUPLENGTH = 64; + static private final int TWENTYFOURBITGROUP = 24; + static private final int EIGHTBIT = 8; + static private final int SIXTEENBIT = 16; + static private final int FOURBYTE = 4; + static private final int SIGN = -128; + static private final char PAD = '='; + static final private byte[] base64Alphabet = new byte[BASELENGTH]; + static final private char[] lookUpBase64Alphabet = new char[LOOKUPLENGTH]; + + static + { + for (int i = 0; i < BASELENGTH; ++i) + { + base64Alphabet[i] = -1; + } + for (int i = 'Z'; i >= 'A'; i--) + { + base64Alphabet[i] = (byte) (i - 'A'); + } + for (int i = 'z'; i >= 'a'; i--) + { + base64Alphabet[i] = (byte) (i - 'a' + 26); + } + + for (int i = '9'; i >= '0'; i--) + { + base64Alphabet[i] = (byte) (i - '0' + 52); + } + + base64Alphabet['+'] = 62; + base64Alphabet['/'] = 63; + + for (int i = 0; i <= 25; i++) + { + lookUpBase64Alphabet[i] = (char) ('A' + i); + } + + for (int i = 26, j = 0; i <= 51; i++, j++) + { + lookUpBase64Alphabet[i] = (char) ('a' + j); + } + + for (int i = 52, j = 0; i <= 61; i++, j++) + { + lookUpBase64Alphabet[i] = (char) ('0' + j); + } + lookUpBase64Alphabet[62] = (char) '+'; + lookUpBase64Alphabet[63] = (char) '/'; + } + + private static boolean isWhiteSpace(char octect) + { + return (octect == 0x20 || octect == 0xd || octect == 0xa || octect == 0x9); + } + + private static boolean isPad(char octect) + { + return (octect == PAD); + } + + private static boolean isData(char octect) + { + return (octect < BASELENGTH && base64Alphabet[octect] != -1); + } + + /** + * Encodes hex octects into Base64 + * + * @param binaryData Array containing binaryData + * @return Encoded Base64 array + */ + public static String encode(byte[] binaryData) + { + if (binaryData == null) + { + return null; + } + + int lengthDataBits = binaryData.length * EIGHTBIT; + if (lengthDataBits == 0) + { + return ""; + } + + int fewerThan24bits = lengthDataBits % TWENTYFOURBITGROUP; + int numberTriplets = lengthDataBits / TWENTYFOURBITGROUP; + int numberQuartet = fewerThan24bits != 0 ? numberTriplets + 1 : numberTriplets; + char encodedData[] = null; + + encodedData = new char[numberQuartet * 4]; + + byte k = 0, l = 0, b1 = 0, b2 = 0, b3 = 0; + + int encodedIndex = 0; + int dataIndex = 0; + + for (int i = 0; i < numberTriplets; i++) + { + b1 = binaryData[dataIndex++]; + b2 = binaryData[dataIndex++]; + b3 = binaryData[dataIndex++]; + + l = (byte) (b2 & 0x0f); + k = (byte) (b1 & 0x03); + + byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); + byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0); + byte val3 = ((b3 & SIGN) == 0) ? (byte) (b3 >> 6) : (byte) ((b3) >> 6 ^ 0xfc); + + encodedData[encodedIndex++] = lookUpBase64Alphabet[val1]; + encodedData[encodedIndex++] = lookUpBase64Alphabet[val2 | (k << 4)]; + encodedData[encodedIndex++] = lookUpBase64Alphabet[(l << 2) | val3]; + encodedData[encodedIndex++] = lookUpBase64Alphabet[b3 & 0x3f]; + } + + // form integral number of 6-bit groups + if (fewerThan24bits == EIGHTBIT) + { + b1 = binaryData[dataIndex]; + k = (byte) (b1 & 0x03); + byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); + encodedData[encodedIndex++] = lookUpBase64Alphabet[val1]; + encodedData[encodedIndex++] = lookUpBase64Alphabet[k << 4]; + encodedData[encodedIndex++] = PAD; + encodedData[encodedIndex++] = PAD; + } + else if (fewerThan24bits == SIXTEENBIT) + { + b1 = binaryData[dataIndex]; + b2 = binaryData[dataIndex + 1]; + l = (byte) (b2 & 0x0f); + k = (byte) (b1 & 0x03); + + byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); + byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0); + + encodedData[encodedIndex++] = lookUpBase64Alphabet[val1]; + encodedData[encodedIndex++] = lookUpBase64Alphabet[val2 | (k << 4)]; + encodedData[encodedIndex++] = lookUpBase64Alphabet[l << 2]; + encodedData[encodedIndex++] = PAD; + } + return new String(encodedData); + } + + /** + * Decodes Base64 data into octects + * + * @param encoded string containing Base64 data + * @return Array containind decoded data. + */ + public static byte[] decode(String encoded) + { + if (encoded == null) + { + return null; + } + + char[] base64Data = encoded.toCharArray(); + // remove white spaces + int len = removeWhiteSpace(base64Data); + + if (len % FOURBYTE != 0) + { + return null;// should be divisible by four + } + + int numberQuadruple = (len / FOURBYTE); + + if (numberQuadruple == 0) + { + return new byte[0]; + } + + byte decodedData[] = null; + byte b1 = 0, b2 = 0, b3 = 0, b4 = 0; + char d1 = 0, d2 = 0, d3 = 0, d4 = 0; + + int i = 0; + int encodedIndex = 0; + int dataIndex = 0; + decodedData = new byte[(numberQuadruple) * 3]; + + for (; i < numberQuadruple - 1; i++) + { + + if (!isData((d1 = base64Data[dataIndex++])) || !isData((d2 = base64Data[dataIndex++])) + || !isData((d3 = base64Data[dataIndex++])) || !isData((d4 = base64Data[dataIndex++]))) + { + return null; + } // if found "no data" just return null + + b1 = base64Alphabet[d1]; + b2 = base64Alphabet[d2]; + b3 = base64Alphabet[d3]; + b4 = base64Alphabet[d4]; + + decodedData[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4); + decodedData[encodedIndex++] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); + decodedData[encodedIndex++] = (byte) (b3 << 6 | b4); + } + + if (!isData((d1 = base64Data[dataIndex++])) || !isData((d2 = base64Data[dataIndex++]))) + { + return null;// if found "no data" just return null + } + + b1 = base64Alphabet[d1]; + b2 = base64Alphabet[d2]; + + d3 = base64Data[dataIndex++]; + d4 = base64Data[dataIndex++]; + if (!isData((d3)) || !isData((d4))) + {// Check if they are PAD characters + if (isPad(d3) && isPad(d4)) + { + if ((b2 & 0xf) != 0)// last 4 bits should be zero + { + return null; + } + byte[] tmp = new byte[i * 3 + 1]; + System.arraycopy(decodedData, 0, tmp, 0, i * 3); + tmp[encodedIndex] = (byte) (b1 << 2 | b2 >> 4); + return tmp; + } + else if (!isPad(d3) && isPad(d4)) + { + b3 = base64Alphabet[d3]; + if ((b3 & 0x3) != 0)// last 2 bits should be zero + { + return null; + } + byte[] tmp = new byte[i * 3 + 2]; + System.arraycopy(decodedData, 0, tmp, 0, i * 3); + tmp[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4); + tmp[encodedIndex] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); + return tmp; + } + else + { + return null; + } + } + else + { // No PAD e.g 3cQl + b3 = base64Alphabet[d3]; + b4 = base64Alphabet[d4]; + decodedData[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4); + decodedData[encodedIndex++] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); + decodedData[encodedIndex++] = (byte) (b3 << 6 | b4); + + } + return decodedData; + } + + /** + * remove WhiteSpace from MIME containing encoded Base64 data. + * + * @param data the byte array of base64 data (with WS) + * @return the new length + */ + private static int removeWhiteSpace(char[] data) + { + if (data == null) + { + return 0; + } + + // count characters that's not whitespace + int newSize = 0; + int len = data.length; + for (int i = 0; i < len; i++) + { + if (!isWhiteSpace(data[i])) + { + data[newSize++] = data[i]; + } + } + return newSize; + } +} diff --git a/dts-core/src/main/java/com/qiguliuxing/dts/core/util/UUID.java b/dts-core/src/main/java/com/qiguliuxing/dts/core/util/UUID.java new file mode 100644 index 0000000..29260aa --- /dev/null +++ b/dts-core/src/main/java/com/qiguliuxing/dts/core/util/UUID.java @@ -0,0 +1,445 @@ +package com.qiguliuxing.dts.core.util; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.util.Random; +import java.util.concurrent.ThreadLocalRandom; + +import com.qiguliuxing.dts.core.exception.UtilException; + +/** + * 提供通用唯一识别码(universally unique identifier)(UUID)实现 + * + * @author ruoyi + */ +public final class UUID implements java.io.Serializable, Comparable { + private static final long serialVersionUID = -1185015143654744140L; + + /** + * SecureRandom 的单例 + * + */ + private static class Holder { + static final SecureRandom numberGenerator = getSecureRandom(); + } + + /** 此UUID的最高64有效位 */ + private final long mostSigBits; + + /** 此UUID的最低64有效位 */ + private final long leastSigBits; + + /** + * 私有构造 + * + * @param data 数据 + */ + private UUID(byte[] data) { + long msb = 0; + long lsb = 0; + assert data.length == 16 : "data must be 16 bytes in length"; + for (int i = 0; i < 8; i++) { + msb = (msb << 8) | (data[i] & 0xff); + } + for (int i = 8; i < 16; i++) { + lsb = (lsb << 8) | (data[i] & 0xff); + } + this.mostSigBits = msb; + this.leastSigBits = lsb; + } + + /** + * 使用指定的数据构造新的 UUID。 + * + * @param mostSigBits 用于 {@code UUID} 的最高有效 64 位 + * @param leastSigBits 用于 {@code UUID} 的最低有效 64 位 + */ + public UUID(long mostSigBits, long leastSigBits) { + this.mostSigBits = mostSigBits; + this.leastSigBits = leastSigBits; + } + + /** + * 获取类型 4(伪随机生成的)UUID 的静态工厂。 使用加密的本地线程伪随机数生成器生成该 UUID。 + * + * @return 随机生成的 {@code UUID} + */ + public static UUID fastUUID() { + return randomUUID(false); + } + + /** + * 获取类型 4(伪随机生成的)UUID 的静态工厂。 使用加密的强伪随机数生成器生成该 UUID。 + * + * @return 随机生成的 {@code UUID} + */ + public static UUID randomUUID() { + return randomUUID(true); + } + + /** + * 获取类型 4(伪随机生成的)UUID 的静态工厂。 使用加密的强伪随机数生成器生成该 UUID。 + * + * @param isSecure 是否使用{@link SecureRandom}如果是可以获得更安全的随机码,否则可以得到更好的性能 + * @return 随机生成的 {@code UUID} + */ + public static UUID randomUUID(boolean isSecure) { + final Random ng = isSecure ? Holder.numberGenerator : getRandom(); + + byte[] randomBytes = new byte[16]; + ng.nextBytes(randomBytes); + randomBytes[6] &= 0x0f; /* clear version */ + randomBytes[6] |= 0x40; /* set to version 4 */ + randomBytes[8] &= 0x3f; /* clear variant */ + randomBytes[8] |= 0x80; /* set to IETF variant */ + return new UUID(randomBytes); + } + + /** + * 根据指定的字节数组获取类型 3(基于名称的)UUID 的静态工厂。 + * + * @param name 用于构造 UUID 的字节数组。 + * + * @return 根据指定数组生成的 {@code UUID} + */ + public static UUID nameUUIDFromBytes(byte[] name) { + MessageDigest md; + try { + md = MessageDigest.getInstance("MD5"); + } catch (NoSuchAlgorithmException nsae) { + throw new InternalError("MD5 not supported"); + } + byte[] md5Bytes = md.digest(name); + md5Bytes[6] &= 0x0f; /* clear version */ + md5Bytes[6] |= 0x30; /* set to version 3 */ + md5Bytes[8] &= 0x3f; /* clear variant */ + md5Bytes[8] |= 0x80; /* set to IETF variant */ + return new UUID(md5Bytes); + } + + /** + * 根据 {@link #toString()} 方法中描述的字符串标准表示形式创建{@code UUID}。 + * + * @param name 指定 {@code UUID} 字符串 + * @return 具有指定值的 {@code UUID} + * @throws IllegalArgumentException 如果 name 与 {@link #toString} + * 中描述的字符串表示形式不符抛出此异常 + * + */ + public static UUID fromString(String name) { + String[] components = name.split("-"); + if (components.length != 5) { + throw new IllegalArgumentException("Invalid UUID string: " + name); + } + for (int i = 0; i < 5; i++) { + components[i] = "0x" + components[i]; + } + + long mostSigBits = Long.decode(components[0]).longValue(); + mostSigBits <<= 16; + mostSigBits |= Long.decode(components[1]).longValue(); + mostSigBits <<= 16; + mostSigBits |= Long.decode(components[2]).longValue(); + + long leastSigBits = Long.decode(components[3]).longValue(); + leastSigBits <<= 48; + leastSigBits |= Long.decode(components[4]).longValue(); + + return new UUID(mostSigBits, leastSigBits); + } + + /** + * 返回此 UUID 的 128 位值中的最低有效 64 位。 + * + * @return 此 UUID 的 128 位值中的最低有效 64 位。 + */ + public long getLeastSignificantBits() { + return leastSigBits; + } + + /** + * 返回此 UUID 的 128 位值中的最高有效 64 位。 + * + * @return 此 UUID 的 128 位值中最高有效 64 位。 + */ + public long getMostSignificantBits() { + return mostSigBits; + } + + /** + * 与此 {@code UUID} 相关联的版本号. 版本号描述此 {@code UUID} 是如何生成的。 + *

+ * 版本号具有以下含意: + *

    + *
  • 1 基于时间的 UUID + *
  • 2 DCE 安全 UUID + *
  • 3 基于名称的 UUID + *
  • 4 随机生成的 UUID + *
+ * + * @return 此 {@code UUID} 的版本号 + */ + public int version() { + // Version is bits masked by 0x000000000000F000 in MS long + return (int) ((mostSigBits >> 12) & 0x0f); + } + + /** + * 与此 {@code UUID} 相关联的变体号。变体号描述 {@code UUID} 的布局。 + *

+ * 变体号具有以下含意: + *

    + *
  • 0 为 NCS 向后兼容保留 + *
  • 2 IETF RFC 4122(Leach-Salz), + * 用于此类 + *
  • 6 保留,微软向后兼容 + *
  • 7 保留供以后定义使用 + *
+ * + * @return 此 {@code UUID} 相关联的变体号 + */ + public int variant() { + // This field is composed of a varying number of bits. + // 0 - - Reserved for NCS backward compatibility + // 1 0 - The IETF aka Leach-Salz variant (used by this class) + // 1 1 0 Reserved, Microsoft backward compatibility + // 1 1 1 Reserved for future definition. + return (int) ((leastSigBits >>> (64 - (leastSigBits >>> 62))) & (leastSigBits >> 63)); + } + + /** + * 与此 UUID 相关联的时间戳值。 + * + *

+ * 60 位的时间戳值根据此 {@code UUID} 的 time_low、time_mid 和 time_hi 字段构造。
+ * 所得到的时间戳以 100 毫微秒为单位,从 UTC(通用协调时间) 1582 年 10 月 15 日零时开始。 + * + *

+ * 时间戳值仅在在基于时间的 UUID(其 version 类型为 1)中才有意义。
+ * 如果此 {@code UUID} 不是基于时间的 UUID,则此方法抛出 UnsupportedOperationException。 + * + * @throws UnsupportedOperationException 如果此 {@code UUID} 不是 version 为 1 的 UUID。 + */ + public long timestamp() throws UnsupportedOperationException { + checkTimeBase(); + return (mostSigBits & 0x0FFFL) << 48// + | ((mostSigBits >> 16) & 0x0FFFFL) << 32// + | mostSigBits >>> 32; + } + + /** + * 与此 UUID 相关联的时钟序列值。 + * + *

+ * 14 位的时钟序列值根据此 UUID 的 clock_seq 字段构造。clock_seq 字段用于保证在基于时间的 UUID 中的时间唯一性。 + *

+ * {@code clockSequence} 值仅在基于时间的 UUID(其 version 类型为 1)中才有意义。 如果此 UUID 不是基于时间的 + * UUID,则此方法抛出 UnsupportedOperationException。 + * + * @return 此 {@code UUID} 的时钟序列 + * + * @throws UnsupportedOperationException 如果此 UUID 的 version 不为 1 + */ + public int clockSequence() throws UnsupportedOperationException { + checkTimeBase(); + return (int) ((leastSigBits & 0x3FFF000000000000L) >>> 48); + } + + /** + * 与此 UUID 相关的节点值。 + * + *

+ * 48 位的节点值根据此 UUID 的 node 字段构造。此字段旨在用于保存机器的 IEEE 802 地址,该地址用于生成此 UUID 以保证空间唯一性。 + *

+ * 节点值仅在基于时间的 UUID(其 version 类型为 1)中才有意义。
+ * 如果此 UUID 不是基于时间的 UUID,则此方法抛出 UnsupportedOperationException。 + * + * @return 此 {@code UUID} 的节点值 + * + * @throws UnsupportedOperationException 如果此 UUID 的 version 不为 1 + */ + public long node() throws UnsupportedOperationException { + checkTimeBase(); + return leastSigBits & 0x0000FFFFFFFFFFFFL; + } + + /** + * 返回此{@code UUID} 的字符串表现形式。 + * + *

+ * UUID 的字符串表示形式由此 BNF 描述: + * + *

+	 * {@code
+	 * UUID                   = ----
+	 * time_low               = 4*
+	 * time_mid               = 2*
+	 * time_high_and_version  = 2*
+	 * variant_and_sequence   = 2*
+	 * node                   = 6*
+	 * hexOctet               = 
+	 * hexDigit               = [0-9a-fA-F]
+	 * }
+	 * 
+ * + * + * + * @return 此{@code UUID} 的字符串表现形式 + * @see #toString(boolean) + */ + @Override + public String toString() { + return toString(false); + } + + /** + * 返回此{@code UUID} 的字符串表现形式。 + * + *

+ * UUID 的字符串表示形式由此 BNF 描述: + * + *

+	 * {@code
+	 * UUID                   = ----
+	 * time_low               = 4*
+	 * time_mid               = 2*
+	 * time_high_and_version  = 2*
+	 * variant_and_sequence   = 2*
+	 * node                   = 6*
+	 * hexOctet               = 
+	 * hexDigit               = [0-9a-fA-F]
+	 * }
+	 * 
+ * + * + * + * @param isSimple 是否简单模式,简单模式为不带'-'的UUID字符串 + * @return 此{@code UUID} 的字符串表现形式 + */ + public String toString(boolean isSimple) { + final StringBuilder builder = new StringBuilder(isSimple ? 32 : 36); + // time_low + builder.append(digits(mostSigBits >> 32, 8)); + if (false == isSimple) { + builder.append('-'); + } + // time_mid + builder.append(digits(mostSigBits >> 16, 4)); + if (false == isSimple) { + builder.append('-'); + } + // time_high_and_version + builder.append(digits(mostSigBits, 4)); + if (false == isSimple) { + builder.append('-'); + } + // variant_and_sequence + builder.append(digits(leastSigBits >> 48, 4)); + if (false == isSimple) { + builder.append('-'); + } + // node + builder.append(digits(leastSigBits, 12)); + + return builder.toString(); + } + + /** + * 返回此 UUID 的哈希码。 + * + * @return UUID 的哈希码值。 + */ + public int hashCode() { + long hilo = mostSigBits ^ leastSigBits; + return ((int) (hilo >> 32)) ^ (int) hilo; + } + + /** + * 将此对象与指定对象比较。 + *

+ * 当且仅当参数不为 {@code null}、而是一个 UUID 对象、具有与此 UUID 相同的 + * varriant、包含相同的值(每一位均相同)时,结果才为 {@code true}。 + * + * @param obj 要与之比较的对象 + * + * @return 如果对象相同,则返回 {@code true};否则返回 {@code false} + */ + public boolean equals(Object obj) { + if ((null == obj) || (obj.getClass() != UUID.class)) { + return false; + } + UUID id = (UUID) obj; + return (mostSigBits == id.mostSigBits && leastSigBits == id.leastSigBits); + } + + // Comparison Operations + + /** + * 将此 UUID 与指定的 UUID 比较。 + * + *

+ * 如果两个 UUID 不同,且第一个 UUID 的最高有效字段大于第二个 UUID 的对应字段,则第一个 UUID 大于第二个 UUID。 + * + * @param val 与此 UUID 比较的 UUID + * + * @return 在此 UUID 小于、等于或大于 val 时,分别返回 -1、0 或 1。 + * + */ + public int compareTo(UUID val) { + // The ordering is intentionally set up so that the UUIDs + // can simply be numerically compared as two numbers + return (this.mostSigBits < val.mostSigBits ? -1 : // + (this.mostSigBits > val.mostSigBits ? 1 : // + (this.leastSigBits < val.leastSigBits ? -1 : // + (this.leastSigBits > val.leastSigBits ? 1 : // + 0)))); + } + + // ------------------------------------------------------------------------------------------------------------------- + // Private method start + /** + * 返回指定数字对应的hex值 + * + * @param val 值 + * @param digits 位 + * @return 值 + */ + private static String digits(long val, int digits) { + long hi = 1L << (digits * 4); + return Long.toHexString(hi | (val & (hi - 1))).substring(1); + } + + /** + * 检查是否为time-based版本UUID + */ + private void checkTimeBase() { + if (version() != 1) { + throw new UnsupportedOperationException("Not a time-based UUID"); + } + } + + /** + * 获取{@link SecureRandom},类提供加密的强随机数生成器 (RNG) + * + * @return {@link SecureRandom} + */ + public static SecureRandom getSecureRandom() { + try { + return SecureRandom.getInstance("SHA1PRNG"); + } catch (NoSuchAlgorithmException e) { + throw new UtilException(e); + } + } + + /** + * 获取随机数生成器对象
+ * ThreadLocalRandom是JDK 7之后提供并发产生随机数,能够解决多个线程发生的竞争争夺。 + * + * @return {@link ThreadLocalRandom} + */ + public static ThreadLocalRandom getRandom() { + return ThreadLocalRandom.current(); + } +} diff --git a/dts-dao/mybatis-generator/generatorConfig.xml b/dts-dao/mybatis-generator/generatorConfig.xml index 61c281f..dd38b14 100644 --- a/dts-dao/mybatis-generator/generatorConfig.xml +++ b/dts-dao/mybatis-generator/generatorConfig.xml @@ -45,7 +45,7 @@ + password="root"/> diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/bean/CategorySellAmts.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/bean/CategorySellAmts.java new file mode 100644 index 0000000..21060c7 --- /dev/null +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/bean/CategorySellAmts.java @@ -0,0 +1,29 @@ +package com.qiguliuxing.dts.db.bean; + +import java.io.Serializable; +import java.math.BigDecimal; + +public class CategorySellAmts implements Serializable{ + + private static final long serialVersionUID = 677901688504280013L; + + private String name; + + private BigDecimal value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public BigDecimal getValue() { + return value; + } + + public void setValue(BigDecimal value) { + this.value = value; + } +} diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/bean/DayStatis.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/bean/DayStatis.java new file mode 100644 index 0000000..49f855f --- /dev/null +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/bean/DayStatis.java @@ -0,0 +1,31 @@ +package com.qiguliuxing.dts.db.bean; + +import java.math.BigDecimal; + +public class DayStatis { + + private String dayStr; + + private int cnts; + + private BigDecimal amts; + + public String getDayStr() { + return dayStr; + } + public void setDayStr(String dayStr) { + this.dayStr = dayStr; + } + public int getCnts() { + return cnts; + } + public void setCnts(int cnts) { + this.cnts = cnts; + } + public BigDecimal getAmts() { + return amts; + } + public void setAmts(BigDecimal amts) { + this.amts = amts; + } +} diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/DtsAgencyShareMapper.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/DtsAgencyShareMapper.java new file mode 100644 index 0000000..17040e2 --- /dev/null +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/DtsAgencyShareMapper.java @@ -0,0 +1,132 @@ +package com.qiguliuxing.dts.db.dao; + +import com.qiguliuxing.dts.db.domain.DtsAgencyShare; +import com.qiguliuxing.dts.db.domain.DtsAgencyShareExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface DtsAgencyShareMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + long countByExample(DtsAgencyShareExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + int deleteByExample(DtsAgencyShareExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + int deleteByPrimaryKey(Integer id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + int insert(DtsAgencyShare record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + int insertSelective(DtsAgencyShare record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + DtsAgencyShare selectOneByExample(DtsAgencyShareExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + DtsAgencyShare selectOneByExampleSelective(@Param("example") DtsAgencyShareExample example, @Param("selective") DtsAgencyShare.Column ... selective); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + List selectByExampleSelective(@Param("example") DtsAgencyShareExample example, @Param("selective") DtsAgencyShare.Column ... selective); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + List selectByExample(DtsAgencyShareExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + DtsAgencyShare selectByPrimaryKeySelective(@Param("id") Integer id, @Param("selective") DtsAgencyShare.Column ... selective); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + DtsAgencyShare selectByPrimaryKey(Integer id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + int updateByExampleSelective(@Param("record") DtsAgencyShare record, @Param("example") DtsAgencyShareExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + int updateByExample(@Param("record") DtsAgencyShare record, @Param("example") DtsAgencyShareExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + int updateByPrimaryKeySelective(DtsAgencyShare record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + int updateByPrimaryKey(DtsAgencyShare record); +} \ No newline at end of file diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/ex/AccountMapperEx.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/ex/AccountMapperEx.java index 5d0fc6f..d025ca1 100644 --- a/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/ex/AccountMapperEx.java +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/ex/AccountMapperEx.java @@ -18,7 +18,14 @@ public interface AccountMapperEx { List getShareUserId(); - BigDecimal getLastMonthSettleMoney(@Param("sharedUserId") Integer sharedUserId, + /** + * 获取用户时间范围内待结算的金额 + * @param sharedUserId + * @param startTime + * @param endTime + * @return + */ + BigDecimal getToSettleMoney(@Param("sharedUserId") Integer sharedUserId, @Param("startTime") String startTime, @Param("endTime") String endTime); /** @@ -70,4 +77,17 @@ public interface AccountMapperEx { */ List querySettlementOrder(@Param("sharedUserId") Integer sharedUserId, @Param("conditionSql") String conditionSql); + + /** + * 获取用户的未结算佣金 + * @param userId + * @return + */ + BigDecimal getUserUnOrderSettleMoney(@Param("userId") Integer userId); + + /** + * 将用户订单的的状态调整为已结算 + * @param userId + */ + void setUserOrderSettleStaus(@Param("userId") Integer userId); } diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/ex/CommentMapperEx.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/ex/CommentMapperEx.java new file mode 100644 index 0000000..7799c54 --- /dev/null +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/ex/CommentMapperEx.java @@ -0,0 +1,26 @@ +package com.qiguliuxing.dts.db.dao.ex; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.qiguliuxing.dts.db.domain.DtsComment; + +/** + * 评论管理DAO层接口 + * @author QIGULIUXING + * @since 1.0.0 + */ +public interface CommentMapperEx { + + /** + * 按入驻店铺查询归属的评论信息 + * @param userId + * @param valueId + * @param orderBySql + * @param brandIdsSql + * @return + */ + List queryBrandComment(@Param("type") Byte type,@Param("userId") String userId, @Param("valueId") String valueId, @Param("orderBySql") String orderBySql, @Param("brandIdsSql") String brandIdsSql); + +} diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/ex/GrouponMapperEx.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/ex/GrouponMapperEx.java new file mode 100644 index 0000000..20ab281 --- /dev/null +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/ex/GrouponMapperEx.java @@ -0,0 +1,35 @@ +package com.qiguliuxing.dts.db.dao.ex; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.qiguliuxing.dts.db.domain.DtsGroupon; +import com.qiguliuxing.dts.db.domain.DtsGrouponRules; + +/** + * 团购管理 + * @author QIGULIUXING + * @since 1.0.0 + */ +public interface GrouponMapperEx { + + /** + * 按入驻店铺查询归属的团购规则信息 + * @param goodsId + * @param orderBySql + * @param brandIdsSql + * @return + */ + List queryBrandGrouponRules(@Param("goodsId") String goodsId, @Param("orderBySql") String orderBySql, @Param("brandIdsSql") String brandIdsSql); + + /** + * 按入驻店铺查询归属的团购记录信息 + * @param goodsId + * @param orderBySql + * @param brandIdsSql + * @return + */ + List queryBrandGroupons(@Param("rulesId") String rulesId, @Param("orderBySql") String orderBySql, @Param("brandIdsSql") String brandIdsSql); + +} diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/ex/OrderMapper.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/ex/OrderMapper.java index ecf4c36..f7c4f31 100644 --- a/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/ex/OrderMapper.java +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/ex/OrderMapper.java @@ -1,12 +1,26 @@ package com.qiguliuxing.dts.db.dao.ex; +import java.time.LocalDateTime; +import java.util.List; + import org.apache.ibatis.annotations.Param; import com.qiguliuxing.dts.db.domain.DtsOrder; -import java.time.LocalDateTime; - public interface OrderMapper { + int updateWithOptimisticLocker(@Param("lastUpdateTime") LocalDateTime lastUpdateTime, @Param("order") DtsOrder order); + + /** + * 根据条件获取入驻店铺的订单 + * @param userId + * @param orderSn + * @param orderStatusSql + * @param orderBySql + * @param brandIdsSql + * @return + */ + List selectBrandOrdersByExample(@Param("userId") Integer userId, @Param("orderSn") String orderSn, @Param("orderStatusSql") String orderStatusSql, @Param("orderBySql") String orderBySql, + @Param("brandIdsSql") String brandIdsSql); } \ No newline at end of file diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/ex/StatMapper.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/ex/StatMapper.java index fca8784..5cf23f3 100644 --- a/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/ex/StatMapper.java +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/dao/ex/StatMapper.java @@ -3,11 +3,51 @@ package com.qiguliuxing.dts.db.dao.ex; import java.util.List; import java.util.Map; +import org.apache.ibatis.annotations.Param; + +import com.qiguliuxing.dts.db.bean.CategorySellAmts; +import com.qiguliuxing.dts.db.bean.DayStatis; + @SuppressWarnings("rawtypes") public interface StatMapper { + + /** + * 统计近多少天之内的用户增长量 + * @param daysAgo + * @return + */ + List statisIncreaseUserCnt(@Param("daysAgo") int daysAgo); + + /** + * 统计近多少天之内的订单增长量 + * @param daysAgo + * @return + */ + List statisIncreaseOrderCnt(@Param("daysAgo") int daysAgo); + + /** + * 类目销售额统计 + * @return + */ + List categorySellStatis(); + + /** + * 用户数统计 + * @return + */ List statUser(); + /** + * 订单数统计 + * @return + */ List statOrder(); + /** + * 商品数统计 + * @return + */ List statGoods(); + + } \ No newline at end of file diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/domain/DtsAccountTrace.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/domain/DtsAccountTrace.java index 69c083b..bd05abe 100644 --- a/dts-dao/src/main/java/com/qiguliuxing/dts/db/domain/DtsAccountTrace.java +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/domain/DtsAccountTrace.java @@ -54,20 +54,20 @@ public class DtsAccountTrace { /** * * This field was generated by MyBatis Generator. - * This field corresponds to the database column dts_account_trace.remain_amount + * This field corresponds to the database column dts_account_trace.total_amount * * @mbg.generated */ - private BigDecimal remainAmount; + private BigDecimal totalAmount; /** * * This field was generated by MyBatis Generator. - * This field corresponds to the database column dts_account_trace.trace_time + * This field corresponds to the database column dts_account_trace.add_time * * @mbg.generated */ - private LocalDateTime traceTime; + private LocalDateTime addTime; /** * @@ -87,6 +87,33 @@ public class DtsAccountTrace { */ private String smsCode; + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column dts_account_trace.status + * + * @mbg.generated + */ + private Byte status; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column dts_account_trace.trace_msg + * + * @mbg.generated + */ + private String traceMsg; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column dts_account_trace.update_time + * + * @mbg.generated + */ + private LocalDateTime updateTime; + /** * This method was generated by MyBatis Generator. * This method returns the value of the database column dts_account_trace.id @@ -209,50 +236,50 @@ public class DtsAccountTrace { /** * This method was generated by MyBatis Generator. - * This method returns the value of the database column dts_account_trace.remain_amount + * This method returns the value of the database column dts_account_trace.total_amount * - * @return the value of dts_account_trace.remain_amount + * @return the value of dts_account_trace.total_amount * * @mbg.generated */ - public BigDecimal getRemainAmount() { - return remainAmount; + public BigDecimal getTotalAmount() { + return totalAmount; } /** * This method was generated by MyBatis Generator. - * This method sets the value of the database column dts_account_trace.remain_amount + * This method sets the value of the database column dts_account_trace.total_amount * - * @param remainAmount the value for dts_account_trace.remain_amount + * @param totalAmount the value for dts_account_trace.total_amount * * @mbg.generated */ - public void setRemainAmount(BigDecimal remainAmount) { - this.remainAmount = remainAmount; + public void setTotalAmount(BigDecimal totalAmount) { + this.totalAmount = totalAmount; } /** * This method was generated by MyBatis Generator. - * This method returns the value of the database column dts_account_trace.trace_time + * This method returns the value of the database column dts_account_trace.add_time * - * @return the value of dts_account_trace.trace_time + * @return the value of dts_account_trace.add_time * * @mbg.generated */ - public LocalDateTime getTraceTime() { - return traceTime; + public LocalDateTime getAddTime() { + return addTime; } /** * This method was generated by MyBatis Generator. - * This method sets the value of the database column dts_account_trace.trace_time + * This method sets the value of the database column dts_account_trace.add_time * - * @param traceTime the value for dts_account_trace.trace_time + * @param addTime the value for dts_account_trace.add_time * * @mbg.generated */ - public void setTraceTime(LocalDateTime traceTime) { - this.traceTime = traceTime; + public void setAddTime(LocalDateTime addTime) { + this.addTime = addTime; } /** @@ -303,6 +330,78 @@ public class DtsAccountTrace { this.smsCode = smsCode; } + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column dts_account_trace.status + * + * @return the value of dts_account_trace.status + * + * @mbg.generated + */ + public Byte getStatus() { + return status; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column dts_account_trace.status + * + * @param status the value for dts_account_trace.status + * + * @mbg.generated + */ + public void setStatus(Byte status) { + this.status = status; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column dts_account_trace.trace_msg + * + * @return the value of dts_account_trace.trace_msg + * + * @mbg.generated + */ + public String getTraceMsg() { + return traceMsg; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column dts_account_trace.trace_msg + * + * @param traceMsg the value for dts_account_trace.trace_msg + * + * @mbg.generated + */ + public void setTraceMsg(String traceMsg) { + this.traceMsg = traceMsg; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column dts_account_trace.update_time + * + * @return the value of dts_account_trace.update_time + * + * @mbg.generated + */ + public LocalDateTime getUpdateTime() { + return updateTime; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column dts_account_trace.update_time + * + * @param updateTime the value for dts_account_trace.update_time + * + * @mbg.generated + */ + public void setUpdateTime(LocalDateTime updateTime) { + this.updateTime = updateTime; + } + /** * This method was generated by MyBatis Generator. * This method corresponds to the database table dts_account_trace @@ -320,10 +419,13 @@ public class DtsAccountTrace { sb.append(", userId=").append(userId); sb.append(", type=").append(type); sb.append(", amount=").append(amount); - sb.append(", remainAmount=").append(remainAmount); - sb.append(", traceTime=").append(traceTime); + sb.append(", totalAmount=").append(totalAmount); + sb.append(", addTime=").append(addTime); sb.append(", mobile=").append(mobile); sb.append(", smsCode=").append(smsCode); + sb.append(", status=").append(status); + sb.append(", traceMsg=").append(traceMsg); + sb.append(", updateTime=").append(updateTime); sb.append("]"); return sb.toString(); } @@ -351,10 +453,13 @@ public class DtsAccountTrace { && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId())) && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType())) && (this.getAmount() == null ? other.getAmount() == null : this.getAmount().equals(other.getAmount())) - && (this.getRemainAmount() == null ? other.getRemainAmount() == null : this.getRemainAmount().equals(other.getRemainAmount())) - && (this.getTraceTime() == null ? other.getTraceTime() == null : this.getTraceTime().equals(other.getTraceTime())) + && (this.getTotalAmount() == null ? other.getTotalAmount() == null : this.getTotalAmount().equals(other.getTotalAmount())) + && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime())) && (this.getMobile() == null ? other.getMobile() == null : this.getMobile().equals(other.getMobile())) - && (this.getSmsCode() == null ? other.getSmsCode() == null : this.getSmsCode().equals(other.getSmsCode())); + && (this.getSmsCode() == null ? other.getSmsCode() == null : this.getSmsCode().equals(other.getSmsCode())) + && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus())) + && (this.getTraceMsg() == null ? other.getTraceMsg() == null : this.getTraceMsg().equals(other.getTraceMsg())) + && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime())); } /** @@ -372,10 +477,13 @@ public class DtsAccountTrace { result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode()); result = prime * result + ((getType() == null) ? 0 : getType().hashCode()); result = prime * result + ((getAmount() == null) ? 0 : getAmount().hashCode()); - result = prime * result + ((getRemainAmount() == null) ? 0 : getRemainAmount().hashCode()); - result = prime * result + ((getTraceTime() == null) ? 0 : getTraceTime().hashCode()); + result = prime * result + ((getTotalAmount() == null) ? 0 : getTotalAmount().hashCode()); + result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode()); result = prime * result + ((getMobile() == null) ? 0 : getMobile().hashCode()); result = prime * result + ((getSmsCode() == null) ? 0 : getSmsCode().hashCode()); + result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode()); + result = prime * result + ((getTraceMsg() == null) ? 0 : getTraceMsg().hashCode()); + result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode()); return result; } @@ -392,10 +500,13 @@ public class DtsAccountTrace { userId("user_id", "userId", "INTEGER", false), type("type", "type", "INTEGER", true), amount("amount", "amount", "DECIMAL", false), - remainAmount("remain_amount", "remainAmount", "DECIMAL", false), - traceTime("trace_time", "traceTime", "TIMESTAMP", false), + totalAmount("total_amount", "totalAmount", "DECIMAL", false), + addTime("add_time", "addTime", "TIMESTAMP", false), mobile("mobile", "mobile", "VARCHAR", false), - smsCode("sms_code", "smsCode", "VARCHAR", false); + smsCode("sms_code", "smsCode", "VARCHAR", false), + status("status", "status", "TINYINT", true), + traceMsg("trace_msg", "traceMsg", "VARCHAR", false), + updateTime("update_time", "updateTime", "TIMESTAMP", false); /** * This field was generated by MyBatis Generator. diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/domain/DtsAccountTraceExample.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/domain/DtsAccountTraceExample.java index 13c7d15..c7eb1fa 100644 --- a/dts-dao/src/main/java/com/qiguliuxing/dts/db/domain/DtsAccountTraceExample.java +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/domain/DtsAccountTraceExample.java @@ -909,18 +909,18 @@ public class DtsAccountTraceExample { return (Criteria) this; } - public Criteria andRemainAmountIsNull() { - addCriterion("remain_amount is null"); + public Criteria andTotalAmountIsNull() { + addCriterion("total_amount is null"); return (Criteria) this; } - public Criteria andRemainAmountIsNotNull() { - addCriterion("remain_amount is not null"); + public Criteria andTotalAmountIsNotNull() { + addCriterion("total_amount is not null"); return (Criteria) this; } - public Criteria andRemainAmountEqualTo(BigDecimal value) { - addCriterion("remain_amount =", value, "remainAmount"); + public Criteria andTotalAmountEqualTo(BigDecimal value) { + addCriterion("total_amount =", value, "totalAmount"); return (Criteria) this; } @@ -931,13 +931,13 @@ public class DtsAccountTraceExample { * @mbg.generated * @project https://github.com/itfsw/mybatis-generator-plugin */ - public Criteria andRemainAmountEqualToColumn(DtsAccountTrace.Column column) { - addCriterion(new StringBuilder("remain_amount = ").append(column.getEscapedColumnName()).toString()); + public Criteria andTotalAmountEqualToColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("total_amount = ").append(column.getEscapedColumnName()).toString()); return (Criteria) this; } - public Criteria andRemainAmountNotEqualTo(BigDecimal value) { - addCriterion("remain_amount <>", value, "remainAmount"); + public Criteria andTotalAmountNotEqualTo(BigDecimal value) { + addCriterion("total_amount <>", value, "totalAmount"); return (Criteria) this; } @@ -948,13 +948,13 @@ public class DtsAccountTraceExample { * @mbg.generated * @project https://github.com/itfsw/mybatis-generator-plugin */ - public Criteria andRemainAmountNotEqualToColumn(DtsAccountTrace.Column column) { - addCriterion(new StringBuilder("remain_amount <> ").append(column.getEscapedColumnName()).toString()); + public Criteria andTotalAmountNotEqualToColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("total_amount <> ").append(column.getEscapedColumnName()).toString()); return (Criteria) this; } - public Criteria andRemainAmountGreaterThan(BigDecimal value) { - addCriterion("remain_amount >", value, "remainAmount"); + public Criteria andTotalAmountGreaterThan(BigDecimal value) { + addCriterion("total_amount >", value, "totalAmount"); return (Criteria) this; } @@ -965,13 +965,13 @@ public class DtsAccountTraceExample { * @mbg.generated * @project https://github.com/itfsw/mybatis-generator-plugin */ - public Criteria andRemainAmountGreaterThanColumn(DtsAccountTrace.Column column) { - addCriterion(new StringBuilder("remain_amount > ").append(column.getEscapedColumnName()).toString()); + public Criteria andTotalAmountGreaterThanColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("total_amount > ").append(column.getEscapedColumnName()).toString()); return (Criteria) this; } - public Criteria andRemainAmountGreaterThanOrEqualTo(BigDecimal value) { - addCriterion("remain_amount >=", value, "remainAmount"); + public Criteria andTotalAmountGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("total_amount >=", value, "totalAmount"); return (Criteria) this; } @@ -982,13 +982,13 @@ public class DtsAccountTraceExample { * @mbg.generated * @project https://github.com/itfsw/mybatis-generator-plugin */ - public Criteria andRemainAmountGreaterThanOrEqualToColumn(DtsAccountTrace.Column column) { - addCriterion(new StringBuilder("remain_amount >= ").append(column.getEscapedColumnName()).toString()); + public Criteria andTotalAmountGreaterThanOrEqualToColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("total_amount >= ").append(column.getEscapedColumnName()).toString()); return (Criteria) this; } - public Criteria andRemainAmountLessThan(BigDecimal value) { - addCriterion("remain_amount <", value, "remainAmount"); + public Criteria andTotalAmountLessThan(BigDecimal value) { + addCriterion("total_amount <", value, "totalAmount"); return (Criteria) this; } @@ -999,13 +999,13 @@ public class DtsAccountTraceExample { * @mbg.generated * @project https://github.com/itfsw/mybatis-generator-plugin */ - public Criteria andRemainAmountLessThanColumn(DtsAccountTrace.Column column) { - addCriterion(new StringBuilder("remain_amount < ").append(column.getEscapedColumnName()).toString()); + public Criteria andTotalAmountLessThanColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("total_amount < ").append(column.getEscapedColumnName()).toString()); return (Criteria) this; } - public Criteria andRemainAmountLessThanOrEqualTo(BigDecimal value) { - addCriterion("remain_amount <=", value, "remainAmount"); + public Criteria andTotalAmountLessThanOrEqualTo(BigDecimal value) { + addCriterion("total_amount <=", value, "totalAmount"); return (Criteria) this; } @@ -1016,43 +1016,43 @@ public class DtsAccountTraceExample { * @mbg.generated * @project https://github.com/itfsw/mybatis-generator-plugin */ - public Criteria andRemainAmountLessThanOrEqualToColumn(DtsAccountTrace.Column column) { - addCriterion(new StringBuilder("remain_amount <= ").append(column.getEscapedColumnName()).toString()); + public Criteria andTotalAmountLessThanOrEqualToColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("total_amount <= ").append(column.getEscapedColumnName()).toString()); return (Criteria) this; } - public Criteria andRemainAmountIn(List values) { - addCriterion("remain_amount in", values, "remainAmount"); + public Criteria andTotalAmountIn(List values) { + addCriterion("total_amount in", values, "totalAmount"); return (Criteria) this; } - public Criteria andRemainAmountNotIn(List values) { - addCriterion("remain_amount not in", values, "remainAmount"); + public Criteria andTotalAmountNotIn(List values) { + addCriterion("total_amount not in", values, "totalAmount"); return (Criteria) this; } - public Criteria andRemainAmountBetween(BigDecimal value1, BigDecimal value2) { - addCriterion("remain_amount between", value1, value2, "remainAmount"); + public Criteria andTotalAmountBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("total_amount between", value1, value2, "totalAmount"); return (Criteria) this; } - public Criteria andRemainAmountNotBetween(BigDecimal value1, BigDecimal value2) { - addCriterion("remain_amount not between", value1, value2, "remainAmount"); + public Criteria andTotalAmountNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("total_amount not between", value1, value2, "totalAmount"); return (Criteria) this; } - public Criteria andTraceTimeIsNull() { - addCriterion("trace_time is null"); + public Criteria andAddTimeIsNull() { + addCriterion("add_time is null"); return (Criteria) this; } - public Criteria andTraceTimeIsNotNull() { - addCriterion("trace_time is not null"); + public Criteria andAddTimeIsNotNull() { + addCriterion("add_time is not null"); return (Criteria) this; } - public Criteria andTraceTimeEqualTo(LocalDateTime value) { - addCriterion("trace_time =", value, "traceTime"); + public Criteria andAddTimeEqualTo(LocalDateTime value) { + addCriterion("add_time =", value, "addTime"); return (Criteria) this; } @@ -1063,13 +1063,13 @@ public class DtsAccountTraceExample { * @mbg.generated * @project https://github.com/itfsw/mybatis-generator-plugin */ - public Criteria andTraceTimeEqualToColumn(DtsAccountTrace.Column column) { - addCriterion(new StringBuilder("trace_time = ").append(column.getEscapedColumnName()).toString()); + public Criteria andAddTimeEqualToColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("add_time = ").append(column.getEscapedColumnName()).toString()); return (Criteria) this; } - public Criteria andTraceTimeNotEqualTo(LocalDateTime value) { - addCriterion("trace_time <>", value, "traceTime"); + public Criteria andAddTimeNotEqualTo(LocalDateTime value) { + addCriterion("add_time <>", value, "addTime"); return (Criteria) this; } @@ -1080,13 +1080,13 @@ public class DtsAccountTraceExample { * @mbg.generated * @project https://github.com/itfsw/mybatis-generator-plugin */ - public Criteria andTraceTimeNotEqualToColumn(DtsAccountTrace.Column column) { - addCriterion(new StringBuilder("trace_time <> ").append(column.getEscapedColumnName()).toString()); + public Criteria andAddTimeNotEqualToColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("add_time <> ").append(column.getEscapedColumnName()).toString()); return (Criteria) this; } - public Criteria andTraceTimeGreaterThan(LocalDateTime value) { - addCriterion("trace_time >", value, "traceTime"); + public Criteria andAddTimeGreaterThan(LocalDateTime value) { + addCriterion("add_time >", value, "addTime"); return (Criteria) this; } @@ -1097,13 +1097,13 @@ public class DtsAccountTraceExample { * @mbg.generated * @project https://github.com/itfsw/mybatis-generator-plugin */ - public Criteria andTraceTimeGreaterThanColumn(DtsAccountTrace.Column column) { - addCriterion(new StringBuilder("trace_time > ").append(column.getEscapedColumnName()).toString()); + public Criteria andAddTimeGreaterThanColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("add_time > ").append(column.getEscapedColumnName()).toString()); return (Criteria) this; } - public Criteria andTraceTimeGreaterThanOrEqualTo(LocalDateTime value) { - addCriterion("trace_time >=", value, "traceTime"); + public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) { + addCriterion("add_time >=", value, "addTime"); return (Criteria) this; } @@ -1114,13 +1114,13 @@ public class DtsAccountTraceExample { * @mbg.generated * @project https://github.com/itfsw/mybatis-generator-plugin */ - public Criteria andTraceTimeGreaterThanOrEqualToColumn(DtsAccountTrace.Column column) { - addCriterion(new StringBuilder("trace_time >= ").append(column.getEscapedColumnName()).toString()); + public Criteria andAddTimeGreaterThanOrEqualToColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("add_time >= ").append(column.getEscapedColumnName()).toString()); return (Criteria) this; } - public Criteria andTraceTimeLessThan(LocalDateTime value) { - addCriterion("trace_time <", value, "traceTime"); + public Criteria andAddTimeLessThan(LocalDateTime value) { + addCriterion("add_time <", value, "addTime"); return (Criteria) this; } @@ -1131,13 +1131,13 @@ public class DtsAccountTraceExample { * @mbg.generated * @project https://github.com/itfsw/mybatis-generator-plugin */ - public Criteria andTraceTimeLessThanColumn(DtsAccountTrace.Column column) { - addCriterion(new StringBuilder("trace_time < ").append(column.getEscapedColumnName()).toString()); + public Criteria andAddTimeLessThanColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("add_time < ").append(column.getEscapedColumnName()).toString()); return (Criteria) this; } - public Criteria andTraceTimeLessThanOrEqualTo(LocalDateTime value) { - addCriterion("trace_time <=", value, "traceTime"); + public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) { + addCriterion("add_time <=", value, "addTime"); return (Criteria) this; } @@ -1148,28 +1148,28 @@ public class DtsAccountTraceExample { * @mbg.generated * @project https://github.com/itfsw/mybatis-generator-plugin */ - public Criteria andTraceTimeLessThanOrEqualToColumn(DtsAccountTrace.Column column) { - addCriterion(new StringBuilder("trace_time <= ").append(column.getEscapedColumnName()).toString()); + public Criteria andAddTimeLessThanOrEqualToColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("add_time <= ").append(column.getEscapedColumnName()).toString()); return (Criteria) this; } - public Criteria andTraceTimeIn(List values) { - addCriterion("trace_time in", values, "traceTime"); + public Criteria andAddTimeIn(List values) { + addCriterion("add_time in", values, "addTime"); return (Criteria) this; } - public Criteria andTraceTimeNotIn(List values) { - addCriterion("trace_time not in", values, "traceTime"); + public Criteria andAddTimeNotIn(List values) { + addCriterion("add_time not in", values, "addTime"); return (Criteria) this; } - public Criteria andTraceTimeBetween(LocalDateTime value1, LocalDateTime value2) { - addCriterion("trace_time between", value1, value2, "traceTime"); + public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) { + addCriterion("add_time between", value1, value2, "addTime"); return (Criteria) this; } - public Criteria andTraceTimeNotBetween(LocalDateTime value1, LocalDateTime value2) { - addCriterion("trace_time not between", value1, value2, "traceTime"); + public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) { + addCriterion("add_time not between", value1, value2, "addTime"); return (Criteria) this; } @@ -1456,6 +1456,412 @@ public class DtsAccountTraceExample { addCriterion("sms_code not between", value1, value2, "smsCode"); return (Criteria) this; } + + public Criteria andStatusIsNull() { + addCriterion("`status` is null"); + return (Criteria) this; + } + + public Criteria andStatusIsNotNull() { + addCriterion("`status` is not null"); + return (Criteria) this; + } + + public Criteria andStatusEqualTo(Byte value) { + addCriterion("`status` =", value, "status"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_account_trace + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andStatusEqualToColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("`status` = ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andStatusNotEqualTo(Byte value) { + addCriterion("`status` <>", value, "status"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_account_trace + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andStatusNotEqualToColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("`status` <> ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andStatusGreaterThan(Byte value) { + addCriterion("`status` >", value, "status"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_account_trace + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andStatusGreaterThanColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("`status` > ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andStatusGreaterThanOrEqualTo(Byte value) { + addCriterion("`status` >=", value, "status"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_account_trace + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andStatusGreaterThanOrEqualToColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("`status` >= ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andStatusLessThan(Byte value) { + addCriterion("`status` <", value, "status"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_account_trace + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andStatusLessThanColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("`status` < ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andStatusLessThanOrEqualTo(Byte value) { + addCriterion("`status` <=", value, "status"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_account_trace + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andStatusLessThanOrEqualToColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("`status` <= ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andStatusIn(List values) { + addCriterion("`status` in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotIn(List values) { + addCriterion("`status` not in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusBetween(Byte value1, Byte value2) { + addCriterion("`status` between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotBetween(Byte value1, Byte value2) { + addCriterion("`status` not between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andTraceMsgIsNull() { + addCriterion("trace_msg is null"); + return (Criteria) this; + } + + public Criteria andTraceMsgIsNotNull() { + addCriterion("trace_msg is not null"); + return (Criteria) this; + } + + public Criteria andTraceMsgEqualTo(String value) { + addCriterion("trace_msg =", value, "traceMsg"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_account_trace + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andTraceMsgEqualToColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("trace_msg = ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andTraceMsgNotEqualTo(String value) { + addCriterion("trace_msg <>", value, "traceMsg"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_account_trace + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andTraceMsgNotEqualToColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("trace_msg <> ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andTraceMsgGreaterThan(String value) { + addCriterion("trace_msg >", value, "traceMsg"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_account_trace + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andTraceMsgGreaterThanColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("trace_msg > ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andTraceMsgGreaterThanOrEqualTo(String value) { + addCriterion("trace_msg >=", value, "traceMsg"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_account_trace + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andTraceMsgGreaterThanOrEqualToColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("trace_msg >= ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andTraceMsgLessThan(String value) { + addCriterion("trace_msg <", value, "traceMsg"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_account_trace + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andTraceMsgLessThanColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("trace_msg < ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andTraceMsgLessThanOrEqualTo(String value) { + addCriterion("trace_msg <=", value, "traceMsg"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_account_trace + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andTraceMsgLessThanOrEqualToColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("trace_msg <= ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andTraceMsgLike(String value) { + addCriterion("trace_msg like", value, "traceMsg"); + return (Criteria) this; + } + + public Criteria andTraceMsgNotLike(String value) { + addCriterion("trace_msg not like", value, "traceMsg"); + return (Criteria) this; + } + + public Criteria andTraceMsgIn(List values) { + addCriterion("trace_msg in", values, "traceMsg"); + return (Criteria) this; + } + + public Criteria andTraceMsgNotIn(List values) { + addCriterion("trace_msg not in", values, "traceMsg"); + return (Criteria) this; + } + + public Criteria andTraceMsgBetween(String value1, String value2) { + addCriterion("trace_msg between", value1, value2, "traceMsg"); + return (Criteria) this; + } + + public Criteria andTraceMsgNotBetween(String value1, String value2) { + addCriterion("trace_msg not between", value1, value2, "traceMsg"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNull() { + addCriterion("update_time is null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNotNull() { + addCriterion("update_time is not null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeEqualTo(LocalDateTime value) { + addCriterion("update_time =", value, "updateTime"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_account_trace + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andUpdateTimeEqualToColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("update_time = ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) { + addCriterion("update_time <>", value, "updateTime"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_account_trace + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andUpdateTimeNotEqualToColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("update_time <> ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThan(LocalDateTime value) { + addCriterion("update_time >", value, "updateTime"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_account_trace + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andUpdateTimeGreaterThanColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("update_time > ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) { + addCriterion("update_time >=", value, "updateTime"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_account_trace + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andUpdateTimeGreaterThanOrEqualToColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("update_time >= ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThan(LocalDateTime value) { + addCriterion("update_time <", value, "updateTime"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_account_trace + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andUpdateTimeLessThanColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("update_time < ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) { + addCriterion("update_time <=", value, "updateTime"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_account_trace + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andUpdateTimeLessThanOrEqualToColumn(DtsAccountTrace.Column column) { + addCriterion(new StringBuilder("update_time <= ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andUpdateTimeIn(List values) { + addCriterion("update_time in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotIn(List values) { + addCriterion("update_time not in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) { + addCriterion("update_time between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) { + addCriterion("update_time not between", value1, value2, "updateTime"); + return (Criteria) this; + } } /** diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/domain/DtsAgencyShare.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/domain/DtsAgencyShare.java new file mode 100644 index 0000000..39df14c --- /dev/null +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/domain/DtsAgencyShare.java @@ -0,0 +1,489 @@ +package com.qiguliuxing.dts.db.domain; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Arrays; + +public class DtsAgencyShare { + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column dts_agency_share.id + * + * @mbg.generated + */ + private Integer id; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column dts_agency_share.user_id + * + * @mbg.generated + */ + private Integer userId; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column dts_agency_share.share_url + * + * @mbg.generated + */ + private String shareUrl; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column dts_agency_share.type + * + * @mbg.generated + */ + private Integer type; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column dts_agency_share.share_obj_id + * + * @mbg.generated + */ + private Integer shareObjId; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column dts_agency_share.add_time + * + * @mbg.generated + */ + private LocalDateTime addTime; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column dts_agency_share.update_time + * + * @mbg.generated + */ + private LocalDateTime updateTime; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column dts_agency_share.id + * + * @return the value of dts_agency_share.id + * + * @mbg.generated + */ + public Integer getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column dts_agency_share.id + * + * @param id the value for dts_agency_share.id + * + * @mbg.generated + */ + public void setId(Integer id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column dts_agency_share.user_id + * + * @return the value of dts_agency_share.user_id + * + * @mbg.generated + */ + public Integer getUserId() { + return userId; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column dts_agency_share.user_id + * + * @param userId the value for dts_agency_share.user_id + * + * @mbg.generated + */ + public void setUserId(Integer userId) { + this.userId = userId; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column dts_agency_share.share_url + * + * @return the value of dts_agency_share.share_url + * + * @mbg.generated + */ + public String getShareUrl() { + return shareUrl; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column dts_agency_share.share_url + * + * @param shareUrl the value for dts_agency_share.share_url + * + * @mbg.generated + */ + public void setShareUrl(String shareUrl) { + this.shareUrl = shareUrl; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column dts_agency_share.type + * + * @return the value of dts_agency_share.type + * + * @mbg.generated + */ + public Integer getType() { + return type; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column dts_agency_share.type + * + * @param type the value for dts_agency_share.type + * + * @mbg.generated + */ + public void setType(Integer type) { + this.type = type; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column dts_agency_share.share_obj_id + * + * @return the value of dts_agency_share.share_obj_id + * + * @mbg.generated + */ + public Integer getShareObjId() { + return shareObjId; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column dts_agency_share.share_obj_id + * + * @param shareObjId the value for dts_agency_share.share_obj_id + * + * @mbg.generated + */ + public void setShareObjId(Integer shareObjId) { + this.shareObjId = shareObjId; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column dts_agency_share.add_time + * + * @return the value of dts_agency_share.add_time + * + * @mbg.generated + */ + public LocalDateTime getAddTime() { + return addTime; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column dts_agency_share.add_time + * + * @param addTime the value for dts_agency_share.add_time + * + * @mbg.generated + */ + public void setAddTime(LocalDateTime addTime) { + this.addTime = addTime; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column dts_agency_share.update_time + * + * @return the value of dts_agency_share.update_time + * + * @mbg.generated + */ + public LocalDateTime getUpdateTime() { + return updateTime; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column dts_agency_share.update_time + * + * @param updateTime the value for dts_agency_share.update_time + * + * @mbg.generated + */ + public void setUpdateTime(LocalDateTime updateTime) { + this.updateTime = updateTime; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(getClass().getSimpleName()); + sb.append(" ["); + sb.append("Hash = ").append(hashCode()); + sb.append(", id=").append(id); + sb.append(", userId=").append(userId); + sb.append(", shareUrl=").append(shareUrl); + sb.append(", type=").append(type); + sb.append(", shareObjId=").append(shareObjId); + sb.append(", addTime=").append(addTime); + sb.append(", updateTime=").append(updateTime); + sb.append("]"); + return sb.toString(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + @Override + public boolean equals(Object that) { + if (this == that) { + return true; + } + if (that == null) { + return false; + } + if (getClass() != that.getClass()) { + return false; + } + DtsAgencyShare other = (DtsAgencyShare) that; + return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId())) + && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId())) + && (this.getShareUrl() == null ? other.getShareUrl() == null : this.getShareUrl().equals(other.getShareUrl())) + && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType())) + && (this.getShareObjId() == null ? other.getShareObjId() == null : this.getShareObjId().equals(other.getShareObjId())) + && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime())) + && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime())); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((getId() == null) ? 0 : getId().hashCode()); + result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode()); + result = prime * result + ((getShareUrl() == null) ? 0 : getShareUrl().hashCode()); + result = prime * result + ((getType() == null) ? 0 : getType().hashCode()); + result = prime * result + ((getShareObjId() == null) ? 0 : getShareObjId().hashCode()); + result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode()); + result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode()); + return result; + } + + /** + * This enum was generated by MyBatis Generator. + * This enum corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public enum Column { + id("id", "id", "INTEGER", false), + userId("user_id", "userId", "INTEGER", false), + shareUrl("share_url", "shareUrl", "VARCHAR", false), + type("type", "type", "INTEGER", true), + shareObjId("share_obj_id", "shareObjId", "INTEGER", false), + addTime("add_time", "addTime", "TIMESTAMP", false), + updateTime("update_time", "updateTime", "TIMESTAMP", false); + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + private static final String BEGINNING_DELIMITER = "`"; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + private static final String ENDING_DELIMITER = "`"; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + private final String column; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + private final boolean isColumnNameDelimited; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + private final String javaProperty; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + private final String jdbcType; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public String value() { + return this.column; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public String getValue() { + return this.column; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public String getJavaProperty() { + return this.javaProperty; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public String getJdbcType() { + return this.jdbcType; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) { + this.column = column; + this.javaProperty = javaProperty; + this.jdbcType = jdbcType; + this.isColumnNameDelimited = isColumnNameDelimited; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public String desc() { + return this.getEscapedColumnName() + " DESC"; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public String asc() { + return this.getEscapedColumnName() + " ASC"; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public static Column[] excludes(Column ... excludes) { + ArrayList columns = new ArrayList<>(Arrays.asList(Column.values())); + if (excludes != null && excludes.length > 0) { + columns.removeAll(new ArrayList<>(Arrays.asList(excludes))); + } + return columns.toArray(new Column[]{}); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public String getEscapedColumnName() { + if (this.isColumnNameDelimited) { + return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString(); + } else { + return this.column; + } + } + } +} \ No newline at end of file diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/domain/DtsAgencyShareExample.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/domain/DtsAgencyShareExample.java new file mode 100644 index 0000000..f09a7eb --- /dev/null +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/domain/DtsAgencyShareExample.java @@ -0,0 +1,1339 @@ +package com.qiguliuxing.dts.db.domain; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +public class DtsAgencyShareExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + public DtsAgencyShareExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public DtsAgencyShareExample orderBy(String orderByClause) { + this.setOrderByClause(orderByClause); + return this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public DtsAgencyShareExample orderBy(String ... orderByClauses) { + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < orderByClauses.length; i++) { + sb.append(orderByClauses[i]); + if (i < orderByClauses.length - 1) { + sb.append(" , "); + } + } + this.setOrderByClause(sb.toString()); + return this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(this); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public static Criteria newAndCreateCriteria() { + DtsAgencyShareExample example = new DtsAgencyShareExample(); + return example.createCriteria(); + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Integer value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andIdEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("id = ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Integer value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andIdNotEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("id <> ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Integer value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andIdGreaterThanColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("id > ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Integer value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andIdGreaterThanOrEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("id >= ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andIdLessThan(Integer value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andIdLessThanColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("id < ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Integer value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andIdLessThanOrEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("id <= ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Integer value1, Integer value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Integer value1, Integer value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andUserIdIsNull() { + addCriterion("user_id is null"); + return (Criteria) this; + } + + public Criteria andUserIdIsNotNull() { + addCriterion("user_id is not null"); + return (Criteria) this; + } + + public Criteria andUserIdEqualTo(Integer value) { + addCriterion("user_id =", value, "userId"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andUserIdEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("user_id = ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andUserIdNotEqualTo(Integer value) { + addCriterion("user_id <>", value, "userId"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andUserIdNotEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("user_id <> ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andUserIdGreaterThan(Integer value) { + addCriterion("user_id >", value, "userId"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andUserIdGreaterThanColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("user_id > ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andUserIdGreaterThanOrEqualTo(Integer value) { + addCriterion("user_id >=", value, "userId"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andUserIdGreaterThanOrEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("user_id >= ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andUserIdLessThan(Integer value) { + addCriterion("user_id <", value, "userId"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andUserIdLessThanColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("user_id < ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andUserIdLessThanOrEqualTo(Integer value) { + addCriterion("user_id <=", value, "userId"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andUserIdLessThanOrEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("user_id <= ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andUserIdIn(List values) { + addCriterion("user_id in", values, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotIn(List values) { + addCriterion("user_id not in", values, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdBetween(Integer value1, Integer value2) { + addCriterion("user_id between", value1, value2, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotBetween(Integer value1, Integer value2) { + addCriterion("user_id not between", value1, value2, "userId"); + return (Criteria) this; + } + + public Criteria andShareUrlIsNull() { + addCriterion("share_url is null"); + return (Criteria) this; + } + + public Criteria andShareUrlIsNotNull() { + addCriterion("share_url is not null"); + return (Criteria) this; + } + + public Criteria andShareUrlEqualTo(String value) { + addCriterion("share_url =", value, "shareUrl"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andShareUrlEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("share_url = ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andShareUrlNotEqualTo(String value) { + addCriterion("share_url <>", value, "shareUrl"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andShareUrlNotEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("share_url <> ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andShareUrlGreaterThan(String value) { + addCriterion("share_url >", value, "shareUrl"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andShareUrlGreaterThanColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("share_url > ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andShareUrlGreaterThanOrEqualTo(String value) { + addCriterion("share_url >=", value, "shareUrl"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andShareUrlGreaterThanOrEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("share_url >= ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andShareUrlLessThan(String value) { + addCriterion("share_url <", value, "shareUrl"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andShareUrlLessThanColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("share_url < ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andShareUrlLessThanOrEqualTo(String value) { + addCriterion("share_url <=", value, "shareUrl"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andShareUrlLessThanOrEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("share_url <= ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andShareUrlLike(String value) { + addCriterion("share_url like", value, "shareUrl"); + return (Criteria) this; + } + + public Criteria andShareUrlNotLike(String value) { + addCriterion("share_url not like", value, "shareUrl"); + return (Criteria) this; + } + + public Criteria andShareUrlIn(List values) { + addCriterion("share_url in", values, "shareUrl"); + return (Criteria) this; + } + + public Criteria andShareUrlNotIn(List values) { + addCriterion("share_url not in", values, "shareUrl"); + return (Criteria) this; + } + + public Criteria andShareUrlBetween(String value1, String value2) { + addCriterion("share_url between", value1, value2, "shareUrl"); + return (Criteria) this; + } + + public Criteria andShareUrlNotBetween(String value1, String value2) { + addCriterion("share_url not between", value1, value2, "shareUrl"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("`type` is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("`type` is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(Integer value) { + addCriterion("`type` =", value, "type"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andTypeEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("`type` = ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(Integer value) { + addCriterion("`type` <>", value, "type"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andTypeNotEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("`type` <> ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(Integer value) { + addCriterion("`type` >", value, "type"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andTypeGreaterThanColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("`type` > ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(Integer value) { + addCriterion("`type` >=", value, "type"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andTypeGreaterThanOrEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("`type` >= ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andTypeLessThan(Integer value) { + addCriterion("`type` <", value, "type"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andTypeLessThanColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("`type` < ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(Integer value) { + addCriterion("`type` <=", value, "type"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andTypeLessThanOrEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("`type` <= ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("`type` in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("`type` not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(Integer value1, Integer value2) { + addCriterion("`type` between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(Integer value1, Integer value2) { + addCriterion("`type` not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andShareObjIdIsNull() { + addCriterion("share_obj_id is null"); + return (Criteria) this; + } + + public Criteria andShareObjIdIsNotNull() { + addCriterion("share_obj_id is not null"); + return (Criteria) this; + } + + public Criteria andShareObjIdEqualTo(Integer value) { + addCriterion("share_obj_id =", value, "shareObjId"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andShareObjIdEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("share_obj_id = ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andShareObjIdNotEqualTo(Integer value) { + addCriterion("share_obj_id <>", value, "shareObjId"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andShareObjIdNotEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("share_obj_id <> ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andShareObjIdGreaterThan(Integer value) { + addCriterion("share_obj_id >", value, "shareObjId"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andShareObjIdGreaterThanColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("share_obj_id > ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andShareObjIdGreaterThanOrEqualTo(Integer value) { + addCriterion("share_obj_id >=", value, "shareObjId"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andShareObjIdGreaterThanOrEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("share_obj_id >= ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andShareObjIdLessThan(Integer value) { + addCriterion("share_obj_id <", value, "shareObjId"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andShareObjIdLessThanColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("share_obj_id < ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andShareObjIdLessThanOrEqualTo(Integer value) { + addCriterion("share_obj_id <=", value, "shareObjId"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andShareObjIdLessThanOrEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("share_obj_id <= ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andShareObjIdIn(List values) { + addCriterion("share_obj_id in", values, "shareObjId"); + return (Criteria) this; + } + + public Criteria andShareObjIdNotIn(List values) { + addCriterion("share_obj_id not in", values, "shareObjId"); + return (Criteria) this; + } + + public Criteria andShareObjIdBetween(Integer value1, Integer value2) { + addCriterion("share_obj_id between", value1, value2, "shareObjId"); + return (Criteria) this; + } + + public Criteria andShareObjIdNotBetween(Integer value1, Integer value2) { + addCriterion("share_obj_id not between", value1, value2, "shareObjId"); + return (Criteria) this; + } + + public Criteria andAddTimeIsNull() { + addCriterion("add_time is null"); + return (Criteria) this; + } + + public Criteria andAddTimeIsNotNull() { + addCriterion("add_time is not null"); + return (Criteria) this; + } + + public Criteria andAddTimeEqualTo(LocalDateTime value) { + addCriterion("add_time =", value, "addTime"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andAddTimeEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("add_time = ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andAddTimeNotEqualTo(LocalDateTime value) { + addCriterion("add_time <>", value, "addTime"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andAddTimeNotEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("add_time <> ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andAddTimeGreaterThan(LocalDateTime value) { + addCriterion("add_time >", value, "addTime"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andAddTimeGreaterThanColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("add_time > ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) { + addCriterion("add_time >=", value, "addTime"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andAddTimeGreaterThanOrEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("add_time >= ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andAddTimeLessThan(LocalDateTime value) { + addCriterion("add_time <", value, "addTime"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andAddTimeLessThanColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("add_time < ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) { + addCriterion("add_time <=", value, "addTime"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andAddTimeLessThanOrEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("add_time <= ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andAddTimeIn(List values) { + addCriterion("add_time in", values, "addTime"); + return (Criteria) this; + } + + public Criteria andAddTimeNotIn(List values) { + addCriterion("add_time not in", values, "addTime"); + return (Criteria) this; + } + + public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) { + addCriterion("add_time between", value1, value2, "addTime"); + return (Criteria) this; + } + + public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) { + addCriterion("add_time not between", value1, value2, "addTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNull() { + addCriterion("update_time is null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNotNull() { + addCriterion("update_time is not null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeEqualTo(LocalDateTime value) { + addCriterion("update_time =", value, "updateTime"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andUpdateTimeEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("update_time = ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) { + addCriterion("update_time <>", value, "updateTime"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andUpdateTimeNotEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("update_time <> ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThan(LocalDateTime value) { + addCriterion("update_time >", value, "updateTime"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andUpdateTimeGreaterThanColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("update_time > ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) { + addCriterion("update_time >=", value, "updateTime"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andUpdateTimeGreaterThanOrEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("update_time >= ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThan(LocalDateTime value) { + addCriterion("update_time <", value, "updateTime"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andUpdateTimeLessThanColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("update_time < ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) { + addCriterion("update_time <=", value, "updateTime"); + return (Criteria) this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andUpdateTimeLessThanOrEqualToColumn(DtsAgencyShare.Column column) { + addCriterion(new StringBuilder("update_time <= ").append(column.getEscapedColumnName()).toString()); + return (Criteria) this; + } + + public Criteria andUpdateTimeIn(List values) { + addCriterion("update_time in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotIn(List values) { + addCriterion("update_time not in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) { + addCriterion("update_time between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) { + addCriterion("update_time not between", value1, value2, "updateTime"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table dts_agency_share + * + * @mbg.generated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + private DtsAgencyShareExample example; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + protected Criteria(DtsAgencyShareExample example) { + super(); + this.example = example; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public DtsAgencyShareExample example() { + return this.example; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Criteria andIf(boolean ifAdd, ICriteriaAdd add) { + if (ifAdd) { + add.add(this); + } + return this; + } + + /** + * This interface was generated by MyBatis Generator. + * This interface corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public interface ICriteriaAdd { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table dts_agency_share + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + Criteria add(Criteria add); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table dts_agency_share + * + * @mbg.generated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsAccountService.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsAccountService.java index 9d0365a..f476d74 100644 --- a/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsAccountService.java +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsAccountService.java @@ -12,11 +12,12 @@ import java.util.Random; import javax.annotation.Resource; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; import com.github.pagehelper.PageHelper; import com.qiguliuxing.dts.db.dao.DtsAccountTraceMapper; @@ -33,8 +34,11 @@ import com.qiguliuxing.dts.db.domain.DtsUserExample; @Service public class DtsAccountService { + private static final Logger logger = LoggerFactory.getLogger(DtsAccountService.class); - private final static Log logger = LogFactory.getLog(DtsAccountService.class); + public static final long TWO_MONTH_DAYS = 60;//近两个月,60天 + + public static final long ONE_WEEK_DAYS = 7;//近一周 @Resource private DtsUserAccountMapper userAccountMapper; @@ -54,10 +58,12 @@ public class DtsAccountService { example.or().andUserIdEqualTo(shareUserId); List accounts = userAccountMapper.selectByExample(example); // Assert.state(accounts.size() < 2, "同一个用户存在两个账户"); - if (accounts.size() == 0) { + if (accounts.size() == 1) { + return accounts.get(0); + } else { + logger.error("根据代理用户id:{},获取账号信息出错!!!",shareUserId); return null; } - return accounts.get(0); } public List findAllSharedUserId() { @@ -75,62 +81,56 @@ public class DtsAccountService { return sb.toString(); } - @Transactional(propagation = Propagation.REQUIRED, rollbackFor = { Exception.class }) - public void setSettleMentAccount(Integer sharedUserId, String prevMonthEndDay) throws Exception { + public void setSettleMentAccount(Integer sharedUserId, String prevMonthEndDay,Integer type) throws Exception { // 1.获取用户的代理订单代理金额 String endTime = prevMonthEndDay + " 23:59:59"; String startTime = prevMonthEndDay.substring(0, 7) + "-01 00:00:00"; - BigDecimal totalSettleMoney = accountMapperEx.getLastMonthSettleMoney(sharedUserId, startTime, endTime); - logger.info("代理用户编号: {" + sharedUserId + "},日期:" + startTime + " - " + endTime + ",获取佣金: " + totalSettleMoney + BigDecimal toSettleMoney = accountMapperEx.getToSettleMoney(sharedUserId, startTime, endTime); + if (toSettleMoney == null || toSettleMoney.compareTo(new BigDecimal(0)) <= 0) {//如果无佣金 + toSettleMoney = new BigDecimal(0); + } + logger.info("代理用户编号: {" + sharedUserId + "},日期:" + startTime + " - " + endTime + ",获取佣金: " + toSettleMoney + "元"); - // 更新订单结算状态 - accountMapperEx.setLastMonthOrderSettleStaus(sharedUserId, startTime, endTime); - - Integer settlementRate = 4; - if (totalSettleMoney.compareTo(new BigDecimal("0")) == 0) {// 如果该用户未产生推荐单,则降低结算比例 - settlementRate = 2; + if (toSettleMoney.compareTo(new BigDecimal(0)) > 0) { + settleApplyTrace(sharedUserId, startTime,endTime,type, toSettleMoney,null); } + } + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = { Exception.class }) + public void settleApplyTrace(Integer sharedUserId, String startTime,String endTime,Integer type, BigDecimal toSettleMoney,String mobile) { + + Integer settlementRate = 5; // 获取用户账户信息并更新记录 DtsUserAccount account = this.findShareUserAccountByUserId(sharedUserId); - + if (account != null && toSettleMoney.compareTo(new BigDecimal("0")) == 0) {// 如果该用户未产生推荐单,则降低结算比例 + settlementRate = account.getSettlementRate() > 8 ? 8 : account.getSettlementRate(); + } + + // 更新订单结算状态 + accountMapperEx.setLastMonthOrderSettleStaus(sharedUserId, startTime, endTime); + + //更新代理用户账号信息 + account.setRemainAmount(account.getRemainAmount().add(toSettleMoney));//剩余结算,尚未结算给用户 + account.setTotalAmount(account.getTotalAmount().add(toSettleMoney)); + account.setModifyTime(LocalDateTime.now()); + account.setSettlementRate(settlementRate); + userAccountMapper.updateByPrimaryKeySelective(account); + // 新增账户跟踪表,添加结算跟踪记录 DtsAccountTrace trace = new DtsAccountTrace(); - trace.setAmount(totalSettleMoney); - trace.setRemainAmount(account == null ? totalSettleMoney : account.getTotalAmount().add(totalSettleMoney)); + trace.setAmount(account.getRemainAmount());//当前申请金额,直接将未结算的进行申请 + trace.setTotalAmount(account.getTotalAmount());//已提现总金额 DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMMdd"); String now = df.format(LocalDate.now()); String traceSn = now + getRandomNum(6); trace.setTraceSn(traceSn); - trace.setTraceTime(LocalDateTime.now()); - trace.setType(0); + trace.setAddTime(LocalDateTime.now()); + trace.setType(type); trace.setUserId(sharedUserId); + trace.setStatus((byte) 0);//申请状态 + trace.setMobile(mobile); accountTraceMapper.insert(trace); - - if (account == null) { // 则创建 - account = new DtsUserAccount(); - account.setCreateTime(LocalDateTime.now()); - account.setModifyTime(LocalDateTime.now()); - account.setRemainAmount(totalSettleMoney); - account.setSettlementRate(settlementRate); - account.setTotalAmount(totalSettleMoney); - userAccountMapper.insert(account); - } else { - account.setRemainAmount(account.getRemainAmount().add(totalSettleMoney)); - account.setTotalAmount(account.getTotalAmount().add(totalSettleMoney)); - account.setModifyTime(LocalDateTime.now()); - account.setSettlementRate(settlementRate); - userAccountMapper.updateByPrimaryKeySelective(account); - } - - // 再次验证是否都已经结算 - BigDecimal vaildSettleMoney = accountMapperEx.getLastMonthSettleMoney(sharedUserId, startTime, endTime); - if (vaildSettleMoney.compareTo(new BigDecimal("0")) > 0) { - logger.error("错误:结算过程有误,请联系管理员排查 ,代理用户编号: {" + sharedUserId + "},日期:" + startTime + " - " + endTime - + ",获取佣金: " + totalSettleMoney + "元"); - throw new Exception("结算过程有误,请联系管理员排查"); - } } /** @@ -163,7 +163,7 @@ public class DtsAccountService { if (orderSettleAmt == null) { orderSettleAmt = new BigDecimal(0.00); } - BigDecimal finalSettleAmt = orderSettleAmt; // 默认就是设置的结算价格 + BigDecimal finalSettleAmt = orderSettleAmt; //默认就是设置的结算价格 result.put("userCnt", userCnt); result.put("orderCnt", orderCnt); result.put("orderSettleAmt", orderSettleAmt); @@ -192,7 +192,7 @@ public class DtsAccountService { public List queryAccountTraceList(Integer userId, Integer page, Integer size) { DtsAccountTraceExample example = new DtsAccountTraceExample(); - example.setOrderByClause(DtsAccountTrace.Column.traceTime.desc()); + example.setOrderByClause(DtsAccountTrace.Column.addTime.desc()); DtsAccountTraceExample.Criteria criteria = example.or(); criteria.andUserIdEqualTo(userId); PageHelper.startPage(page, size); @@ -206,12 +206,11 @@ public class DtsAccountService { * @param applyAmt */ public void addExtractRecord(Integer userId, BigDecimal applyAmt, String mobile, String smsCode, - BigDecimal remainAmount) { - + BigDecimal hasAmount) { DtsAccountTrace record = new DtsAccountTrace(); record.setAmount(applyAmt); record.setMobile(mobile); - record.setRemainAmount(remainAmount); + record.setTotalAmount(applyAmt.add(hasAmount)); record.setSmsCode(smsCode); DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMMdd"); @@ -219,7 +218,7 @@ public class DtsAccountService { String traceSn = now + getRandomNum(6); record.setTraceSn(traceSn); - record.setTraceTime(LocalDateTime.now()); + record.setAddTime(LocalDateTime.now()); record.setType(1);// 申请中.. record.setUserId(userId); accountTraceMapper.insert(record); @@ -242,18 +241,135 @@ public class DtsAccountService { return null; } DtsAccountTraceExample example = new DtsAccountTraceExample(); - List typeInts = new ArrayList(); + List statusList = new ArrayList(); for (Byte type : types) { - typeInts.add(type.intValue()); + statusList.add(type); } - example.or().andUserIdEqualTo(userId).andTypeIn(typeInts); + example.or().andUserIdEqualTo(userId).andStatusIn(statusList); return accountTraceMapper.selectByExample(example); } - public List querySelective(String username, String mobile, String type, Integer page, - Integer limit, String sort, String order) { - // TODO Auto-generated method stub - return null; + public List querySelectiveTrace(List userList, List status, Integer page, + Integer size, String sort, String order) { + //是否有匹配到的用户,转用户id集合 + List userIdArray = null; + if (userList != null && userList.size() > 0) { + userIdArray = new ArrayList(); + for (DtsUser dtsUser : userList) { + userIdArray.add(dtsUser.getId().intValue()) ; + } + } + + DtsAccountTraceExample example = new DtsAccountTraceExample(); + DtsAccountTraceExample.Criteria criteria = example.or(); + + if (userIdArray != null && userIdArray.size() != 0) { + criteria.andUserIdIn(userIdArray); + } + if (status != null && status.size() != 0) { + criteria.andStatusIn(status); + } + if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) { + example.setOrderByClause(sort + " " + order); + } + + PageHelper.startPage(page, size); + return accountTraceMapper.selectByExample(example); + } + /** + * 只计算近两个月内未结算的订单佣金 + * 时间范围两月内,且订单超过一周,原因,一周内可能发生退款, + * 减少退款订单对佣金结算的影响 + * @param userId + * @return + */ + public BigDecimal getUnSettleAmount(Integer userId) { + LocalDateTime startTime = LocalDateTime.now().minusDays(TWO_MONTH_DAYS); + LocalDateTime endTime = LocalDateTime.now().minusDays(ONE_WEEK_DAYS); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + return getUnSettleAmount(userId,startTime.format(df),endTime.format(df)); + } + + public BigDecimal getUnSettleAmount(Integer userId,String startDay,String endDay) { + BigDecimal staticSettleMoney = accountMapperEx.getToSettleMoney(userId,startDay,endDay); + if (staticSettleMoney == null || staticSettleMoney.compareTo(new BigDecimal("0")) == 0) {// 如果该用户未产生推荐单,则降低结算比例 + staticSettleMoney = new BigDecimal(0.00); + } + logger.info("获取开始时间:{} - 结束时间 :{} 内 用户id:{} 的未结算佣金 :{}",startDay,endDay,userId,staticSettleMoney); + return staticSettleMoney; + } + + /** + * 为资金账户的安全,建议做线下销账处理,处理后执行该逻辑 + * 这里只根据记录做状态调整和审批意见记录 + * @param traceId + * @param status + * @param traceMsg + * @return + */ + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = { Exception.class }) + public boolean approveAccountTrace(Integer traceId, Byte status, String traceMsg) { + + DtsAccountTrace trace = accountTraceMapper.selectByPrimaryKey(traceId); + trace.setStatus(status); + trace.setTraceMsg(traceMsg); + if (status.intValue() == 1) {//如果是审批通过,需要消除账户中的可提现余额 + DtsUserAccount userAccount = findShareUserAccountByUserId(trace.getUserId()); + if (userAccount != null) { + userAccount.setRemainAmount(userAccount.getRemainAmount().subtract(trace.getAmount())); + logger.info("提现审批通过,调整账户可提现余额为{} - {} = {}",userAccount.getRemainAmount(),trace.getAmount(),userAccount.getRemainAmount().subtract(trace.getAmount())); + if(userAccountMapper.updateByPrimaryKeySelective(userAccount) == 0) { + return false; + } + } else { + logger.error("审批提现,获取账号出错!请检查对应用户 userId:{} 的账户",trace.getUserId()); + return false; + } + } + if (accountTraceMapper.updateByPrimaryKeySelective(trace) == 0) { + return false; + } + return true; + } + + /** + * 根据用户userId,结算用户代理商的结算金额
+ *

该方法主要提供给 某个用户从普通用户转代理时调用 + * 在代理审批通过时,将申请代理人的订单结算金额结算给当前申请人归属的前一个代理
+ * 原因:在没成为代理之前,用户归属为前一个代理用户之下,该用户产生的订单佣金归属于前一个代理用户

+ *

产生误差:因结算时间没有考虑退款情况(正常逻辑考虑了延迟时间,此处是实时结算), + * 可能造成这几天内如果发生退款,佣金确已结算给上一个代理用户的情况,因为这种情况产生的概率低,且本身 + * 佣金数额低,此误差暂时忽略,后续通过定时任务去处理这种异常结算的佣金,联系代理协商

+ * @param userId + * @return + */ + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = { Exception.class }) + public boolean settlementPreviousAgency(Integer userId){ + + // 获取当前用户是否有未结算的订单(约束:已支付,且无退款,在正常流转的订单),如果存在则结算给用户的代理人,如果不存在,则结束 + BigDecimal toSettleMoney = accountMapperEx.getUserUnOrderSettleMoney(userId); + if (toSettleMoney == null || toSettleMoney.compareTo(new BigDecimal("0")) == 0) {// 如果该用户未产生订单 + logger.info("用户 userId:{} 不存在未结算的订单,给其代理人结算佣金结束!"); + return true; + } + // 获取当前用户的代理 + DtsUser user = userMapper.selectByPrimaryKey(userId); + Integer sharedUserId = user.getShareUserId(); + // 获取用户账户信息并更新记录 + DtsUserAccount account = this.findShareUserAccountByUserId(sharedUserId); + + // 更新用户订单结算状态 + accountMapperEx.setUserOrderSettleStaus(userId); + + // 更新代理用户账号信息 + account.setRemainAmount(account.getRemainAmount().add(toSettleMoney));// 剩余结算,尚未结算给用户 + account.setTotalAmount(account.getTotalAmount().add(toSettleMoney)); + account.setModifyTime(LocalDateTime.now()); + userAccountMapper.updateByPrimaryKeySelective(account); + + return true; + } + } diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsAgencyService.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsAgencyService.java new file mode 100644 index 0000000..42a78ad --- /dev/null +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsAgencyService.java @@ -0,0 +1,54 @@ +package com.qiguliuxing.dts.db.service; + +import java.time.LocalDateTime; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import com.qiguliuxing.dts.db.dao.DtsAgencyShareMapper; +import com.qiguliuxing.dts.db.domain.DtsAgencyShare; +import com.qiguliuxing.dts.db.domain.DtsAgencyShareExample; + +@Service +public class DtsAgencyService { + + @Resource + private DtsAgencyShareMapper agencyShareMapper; + + /** + * 获取代理用户的分享对象海报图 + * @param userId + * @param type + * @param shareObjId + * @return + */ + public String getDtsAgencyShare(Integer userId, Integer type, Integer shareObjId) { + String shareUrl = null; + DtsAgencyShareExample example = new DtsAgencyShareExample(); + example.or().andUserIdEqualTo(userId).andTypeEqualTo(type).andShareObjIdEqualTo(shareObjId); + DtsAgencyShare das = agencyShareMapper.selectOneByExample(example); + if (das != null) { + shareUrl = das.getShareUrl(); + } + return shareUrl; + } + + /** + * 存储代理用户的分享对象海报图 + * @param userId + * @param type + * @param shareObjId + * @param shareUrl + */ + public void saveDtsAgencyShare(Integer userId, Integer type, Integer shareObjId, String shareUrl) { + DtsAgencyShare record = new DtsAgencyShare(); + record.setUserId(userId); + record.setType(type); + record.setShareObjId(shareObjId); + record.setShareUrl(shareUrl); + record.setAddTime(LocalDateTime.now()); + record.setUpdateTime(LocalDateTime.now()); + agencyShareMapper.insert(record ); + } +} diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsBrandService.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsBrandService.java index 69216c5..27a2532 100644 --- a/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsBrandService.java +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsBrandService.java @@ -84,6 +84,15 @@ public class DtsBrandService { example.or().andDeletedEqualTo(false); return brandMapper.selectByExample(example); } + + public List getAdminBrands(Integer adminId) { + if (adminId == null) { + return null; + } + DtsBrandExample example = new DtsBrandExample(); + example.or().andDeletedEqualTo(false).andAdminIdEqualTo(adminId); + return brandMapper.selectByExample(example); + } /** * 根据分类id获取分类名 @@ -94,4 +103,5 @@ public class DtsBrandService { DtsCategory dtsCategory = categoryMapper.selectByPrimaryKey(categoryId); return dtsCategory == null ? "综合" : dtsCategory.getName(); } + } diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsCommentService.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsCommentService.java index 26abce6..b38fd1d 100644 --- a/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsCommentService.java +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsCommentService.java @@ -2,6 +2,7 @@ package com.qiguliuxing.dts.db.service; import com.github.pagehelper.PageHelper; import com.qiguliuxing.dts.db.dao.DtsCommentMapper; +import com.qiguliuxing.dts.db.dao.ex.CommentMapperEx; import com.qiguliuxing.dts.db.domain.DtsComment; import com.qiguliuxing.dts.db.domain.DtsCommentExample; @@ -16,6 +17,9 @@ import java.util.List; public class DtsCommentService { @Resource private DtsCommentMapper commentMapper; + + @Resource + private CommentMapperEx commentMapperEx; public List queryGoodsByGid(Integer id, int offset, int limit) { DtsCommentExample example = new DtsCommentExample(); @@ -101,4 +105,38 @@ public class DtsCommentService { public DtsComment findById(Integer id) { return commentMapper.selectByPrimaryKey(id); } + + /** + * 入驻店铺对应商品的评价 + * @param brandIds + * @param userId + * @param valueId + * @param page + * @param limit + * @param sort + * @param order + * @return + */ + public List queryBrandCommentSelective(List brandIds, String userId, String valueId, + Integer page, Integer size, String sort, String order) { + + String orderBySql = null; + if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) { + orderBySql = "o."+sort + " " + order; + } + + String brandIdsSql = null; + if (brandIds != null) { + brandIdsSql = ""; + for (Integer brandId : brandIds) { + brandIdsSql += "," + brandId; + } + brandIdsSql = " and g.brand_id in (" + brandIdsSql.substring(1) + ") "; + } + + PageHelper.startPage(page, size); + + Byte type = (byte) 0;//品牌入驻管理员限定只查商品评论 + return commentMapperEx.queryBrandComment(type,userId,valueId,orderBySql,brandIdsSql); + } } diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsCouponService.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsCouponService.java index b1edd2a..ca455a9 100644 --- a/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsCouponService.java +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsCouponService.java @@ -193,17 +193,4 @@ public class DtsCouponService { .andEndTimeLessThan(LocalDate.now()).andDeletedEqualTo(false); return couponMapper.selectByExample(example); } - - /** - * 查询用户的优惠券 - * @param userId - * @return - */ - public int queryUserCouponCnt(Integer userId) { - DtsCouponUserExample example = new DtsCouponUserExample(); - DtsCouponUserExample.Criteria criteria = example.createCriteria(); - criteria.andUserIdEqualTo(userId); - criteria.andDeletedEqualTo(false); - return (int) couponUserMapper.countByExample(example); - } } diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsGoodsService.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsGoodsService.java index 8a30080..24dee98 100644 --- a/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsGoodsService.java +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsGoodsService.java @@ -128,7 +128,7 @@ public class DtsGoodsService { } public List querySelective(String goodsSn, String name, Integer page, Integer size, String sort, - String order) { + String order,List brandIds) { DtsGoodsExample example = new DtsGoodsExample(); DtsGoodsExample.Criteria criteria = example.createCriteria(); @@ -139,6 +139,10 @@ public class DtsGoodsService { criteria.andNameLike("%" + name + "%"); } criteria.andDeletedEqualTo(false); + + if (brandIds != null && brandIds.size() > 0) { + criteria.andBrandIdIn(brandIds); + } if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) { example.setOrderByClause(sort + " " + order); diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsGrouponRulesService.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsGrouponRulesService.java index 735e260..82f8983 100644 --- a/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsGrouponRulesService.java +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsGrouponRulesService.java @@ -4,6 +4,7 @@ import com.alibaba.druid.util.StringUtils; import com.github.pagehelper.PageHelper; import com.qiguliuxing.dts.db.dao.DtsGoodsMapper; import com.qiguliuxing.dts.db.dao.DtsGrouponRulesMapper; +import com.qiguliuxing.dts.db.dao.ex.GrouponMapperEx; import com.qiguliuxing.dts.db.domain.DtsGoods; import com.qiguliuxing.dts.db.domain.DtsGrouponRules; import com.qiguliuxing.dts.db.domain.DtsGrouponRulesExample; @@ -23,6 +24,9 @@ public class DtsGrouponRulesService { private DtsGrouponRulesMapper mapper; @Resource private DtsGoodsMapper goodsMapper; + @Resource + private GrouponMapperEx grouponMapperEx; + private DtsGoods.Column[] goodsColumns = new DtsGoods.Column[] { DtsGoods.Column.id, DtsGoods.Column.name, DtsGoods.Column.brief, DtsGoods.Column.picUrl, DtsGoods.Column.counterPrice, DtsGoods.Column.retailPrice }; @@ -133,4 +137,35 @@ public class DtsGrouponRulesService { grouponRules.setUpdateTime(LocalDateTime.now()); return mapper.updateByPrimaryKeySelective(grouponRules); } + + /** + * 查询品牌入驻管理员团购规则 + * @param brandIds + * @param goodsId + * @param page + * @param limit + * @param sort + * @param order + * @return + */ + public List queryBrandGrouponRules(List brandIds, String goodsId, Integer page, + Integer size, String sort, String order) { + String orderBySql = null; + if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) { + orderBySql = "o."+sort + " " + order; + } + + String brandIdsSql = null; + if (brandIds != null) { + brandIdsSql = ""; + for (Integer brandId : brandIds) { + brandIdsSql += "," + brandId; + } + brandIdsSql = " and g.brand_id in (" + brandIdsSql.substring(1) + ") "; + } + + PageHelper.startPage(page, size); + + return grouponMapperEx.queryBrandGrouponRules(goodsId,orderBySql,brandIdsSql); + } } \ No newline at end of file diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsGrouponService.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsGrouponService.java index acdcb44..bef641b 100644 --- a/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsGrouponService.java +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsGrouponService.java @@ -3,6 +3,7 @@ package com.qiguliuxing.dts.db.service; import com.alibaba.druid.util.StringUtils; import com.github.pagehelper.PageHelper; import com.qiguliuxing.dts.db.dao.DtsGrouponMapper; +import com.qiguliuxing.dts.db.dao.ex.GrouponMapperEx; import com.qiguliuxing.dts.db.domain.DtsGroupon; import com.qiguliuxing.dts.db.domain.DtsGrouponExample; @@ -16,6 +17,8 @@ import java.util.List; public class DtsGrouponService { @Resource private DtsGrouponMapper mapper; + @Resource + private GrouponMapperEx grouponMapperEx; /** * 获取用户发起的团购记录 @@ -134,4 +137,35 @@ public class DtsGrouponService { PageHelper.startPage(page, size); return mapper.selectByExample(example); } + + /** + * 根据品牌入驻店铺获取对应的团购数据 + * @param brandIds + * @param rulesId + * @param page + * @param limit + * @param sort + * @param order + * @return + */ + public List queryBrandGroupons(List brandIds, String rulesId, Integer page, Integer size, + String sort, String order) { + String orderBySql = null; + if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) { + orderBySql = "o."+sort + " " + order; + } + + String brandIdsSql = null; + if (brandIds != null) { + brandIdsSql = ""; + for (Integer brandId : brandIds) { + brandIdsSql += "," + brandId; + } + brandIdsSql = " and g.brand_id in (" + brandIdsSql.substring(1) + ") "; + } + + PageHelper.startPage(page, size); + + return grouponMapperEx.queryBrandGroupons(rulesId,orderBySql,brandIdsSql); + } } diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsOrderService.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsOrderService.java index 4411037..f702ea9 100644 --- a/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsOrderService.java +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsOrderService.java @@ -1,16 +1,5 @@ package com.qiguliuxing.dts.db.service; -import com.github.pagehelper.PageHelper; -import com.qiguliuxing.dts.db.dao.DtsOrderMapper; -import com.qiguliuxing.dts.db.dao.ex.OrderMapper; -import com.qiguliuxing.dts.db.domain.DtsOrder; -import com.qiguliuxing.dts.db.domain.DtsOrderExample; -import com.qiguliuxing.dts.db.util.OrderUtil; - -import org.springframework.stereotype.Service; -import org.springframework.util.StringUtils; - -import javax.annotation.Resource; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -19,12 +8,30 @@ import java.util.List; import java.util.Map; import java.util.Random; +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import com.github.pagehelper.PageHelper; +import com.qiguliuxing.dts.db.bean.CategorySellAmts; +import com.qiguliuxing.dts.db.bean.DayStatis; +import com.qiguliuxing.dts.db.dao.DtsOrderMapper; +import com.qiguliuxing.dts.db.dao.ex.OrderMapper; +import com.qiguliuxing.dts.db.dao.ex.StatMapper; +import com.qiguliuxing.dts.db.domain.DtsOrder; +import com.qiguliuxing.dts.db.domain.DtsOrderExample; +import com.qiguliuxing.dts.db.util.OrderUtil; + @Service public class DtsOrderService { @Resource private DtsOrderMapper dtsOrderMapper; @Resource private OrderMapper orderMapper; + @Resource + private StatMapper statMapper; + public int add(DtsOrder order) { order.setAddTime(LocalDateTime.now()); @@ -171,7 +178,6 @@ public class DtsOrderService { orderInfo.put("unrecv", unrecv); orderInfo.put("uncomment", uncomment); return orderInfo; - } public List queryComment() { @@ -180,4 +186,54 @@ public class DtsOrderService { return dtsOrderMapper.selectByExample(example); } + public List recentCount(int statisDaysRang) { + return statMapper.statisIncreaseOrderCnt(statisDaysRang); + } + + public List categorySell() { + return statMapper.categorySellStatis(); + } + + /** + * 获取指定店铺的订单 + * @param brandIds + * @param userId + * @param orderSn + * @param orderStatusArray + * @param page + * @param limit + * @param sort + * @param order + * @return + */ + public List queryBrandSelective(List brandIds, Integer userId, String orderSn, + List orderStatusArray, Integer page, Integer size, String sort, String order) { + + String orderStatusSql = null; + if (orderStatusArray != null) { + orderStatusSql = ""; + for (Short orderStatus : orderStatusArray) { + orderStatusSql += "," + orderStatus; + } + orderStatusSql = "and o.order_status in (" + orderStatusSql.substring(1) + ") "; + } + + String orderBySql = null; + if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) { + orderBySql = "o."+sort + " " + order; + } + + String brandIdsSql = null; + if (brandIds != null) { + brandIdsSql = ""; + for (Integer brandId : brandIds) { + brandIdsSql += "," + brandId; + } + brandIdsSql = " and g.brand_id in (" + brandIdsSql.substring(1) + ") "; + } + + PageHelper.startPage(page, size); + return orderMapper.selectBrandOrdersByExample(userId, orderSn,orderStatusSql,orderBySql,brandIdsSql); + } + } diff --git a/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsUserService.java b/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsUserService.java index 2407b8b..ed07d11 100644 --- a/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsUserService.java +++ b/dts-dao/src/main/java/com/qiguliuxing/dts/db/service/DtsUserService.java @@ -9,8 +9,10 @@ import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import com.github.pagehelper.PageHelper; +import com.qiguliuxing.dts.db.bean.DayStatis; import com.qiguliuxing.dts.db.dao.DtsUserAccountMapper; import com.qiguliuxing.dts.db.dao.DtsUserMapper; +import com.qiguliuxing.dts.db.dao.ex.StatMapper; import com.qiguliuxing.dts.db.domain.DtsUser; import com.qiguliuxing.dts.db.domain.DtsUserAccount; import com.qiguliuxing.dts.db.domain.DtsUserAccountExample; @@ -25,6 +27,9 @@ public class DtsUserService { @Resource private DtsUserAccountMapper userAccountMapper; + + @Resource + private StatMapper statMapper; public DtsUser findById(Integer userId) { return userMapper.selectByPrimaryKey(userId); @@ -61,7 +66,7 @@ public class DtsUserService { DtsUserExample.Criteria criteria = example.createCriteria(); if (!StringUtils.isEmpty(username)) { - criteria.andUsernameLike("%" + username + "%"); + criteria.andNicknameLike("%" + username + "%"); } if (!StringUtils.isEmpty(mobile)) { criteria.andMobileEqualTo(mobile); @@ -136,6 +141,7 @@ public class DtsUserService { user.setUserLevel((byte) 2);//区域代理用户 user.setStatus((byte) 0);//正常状态 updateById(user); + } public DtsUserAccount detailApproveByUserId(Integer userId) { @@ -146,4 +152,21 @@ public class DtsUserService { DtsUserAccount dbAccount = userAccountMapper.selectOneByExample(example); return dbAccount; } + + public List queryDtsUserListByNickname(String username,String mobile) { + DtsUserExample example = new DtsUserExample(); + DtsUserExample.Criteria criteria = example.createCriteria(); + if (!StringUtils.isEmpty(username)) { + criteria.andNicknameLike("%" + username + "%"); + } + if (!StringUtils.isEmpty(mobile)) { + criteria.andMobileEqualTo(mobile); + } + criteria.andDeletedEqualTo(false); + return userMapper.selectByExample(example); + } + + public List recentCount(int statisDaysRang) { + return statMapper.statisIncreaseUserCnt(statisDaysRang); + } } diff --git a/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/DtsAccountTraceMapper.xml b/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/DtsAccountTraceMapper.xml index ee2a0eb..6f7c429 100644 --- a/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/DtsAccountTraceMapper.xml +++ b/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/DtsAccountTraceMapper.xml @@ -11,10 +11,13 @@ - - + + + + + - id, trace_sn, user_id, `type`, amount, remain_amount, trace_time, mobile, sms_code + id, trace_sn, user_id, `type`, amount, total_amount, add_time, mobile, sms_code, + `status`, trace_msg, update_time + + select + + distinct + + + from dts_agency_share + + + + + order by ${orderByClause} + + + + + + + + delete from dts_agency_share + where id = #{id,jdbcType=INTEGER} + + + + delete from dts_agency_share + + + + + + + + SELECT LAST_INSERT_ID() + + insert into dts_agency_share (user_id, share_url, `type`, + share_obj_id, add_time, update_time + ) + values (#{userId,jdbcType=INTEGER}, #{shareUrl,jdbcType=VARCHAR}, #{type,jdbcType=INTEGER}, + #{shareObjId,jdbcType=INTEGER}, #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP} + ) + + + + + SELECT LAST_INSERT_ID() + + insert into dts_agency_share + + + user_id, + + + share_url, + + + `type`, + + + share_obj_id, + + + add_time, + + + update_time, + + + + + #{userId,jdbcType=INTEGER}, + + + #{shareUrl,jdbcType=VARCHAR}, + + + #{type,jdbcType=INTEGER}, + + + #{shareObjId,jdbcType=INTEGER}, + + + #{addTime,jdbcType=TIMESTAMP}, + + + #{updateTime,jdbcType=TIMESTAMP}, + + + + + + + update dts_agency_share + + + id = #{record.id,jdbcType=INTEGER}, + + + user_id = #{record.userId,jdbcType=INTEGER}, + + + share_url = #{record.shareUrl,jdbcType=VARCHAR}, + + + `type` = #{record.type,jdbcType=INTEGER}, + + + share_obj_id = #{record.shareObjId,jdbcType=INTEGER}, + + + add_time = #{record.addTime,jdbcType=TIMESTAMP}, + + + update_time = #{record.updateTime,jdbcType=TIMESTAMP}, + + + + + + + + + update dts_agency_share + set id = #{record.id,jdbcType=INTEGER}, + user_id = #{record.userId,jdbcType=INTEGER}, + share_url = #{record.shareUrl,jdbcType=VARCHAR}, + `type` = #{record.type,jdbcType=INTEGER}, + share_obj_id = #{record.shareObjId,jdbcType=INTEGER}, + add_time = #{record.addTime,jdbcType=TIMESTAMP}, + update_time = #{record.updateTime,jdbcType=TIMESTAMP} + + + + + + + update dts_agency_share + + + user_id = #{userId,jdbcType=INTEGER}, + + + share_url = #{shareUrl,jdbcType=VARCHAR}, + + + `type` = #{type,jdbcType=INTEGER}, + + + share_obj_id = #{shareObjId,jdbcType=INTEGER}, + + + add_time = #{addTime,jdbcType=TIMESTAMP}, + + + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + + where id = #{id,jdbcType=INTEGER} + + + + update dts_agency_share + set user_id = #{userId,jdbcType=INTEGER}, + share_url = #{shareUrl,jdbcType=VARCHAR}, + `type` = #{type,jdbcType=INTEGER}, + share_obj_id = #{shareObjId,jdbcType=INTEGER}, + add_time = #{addTime,jdbcType=TIMESTAMP}, + update_time = #{updateTime,jdbcType=TIMESTAMP} + where id = #{id,jdbcType=INTEGER} + + + + \ No newline at end of file diff --git a/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/ex/AccountMapperEx.xml b/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/ex/AccountMapperEx.xml index c8cd6e7..1a601c0 100644 --- a/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/ex/AccountMapperEx.xml +++ b/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/ex/AccountMapperEx.xml @@ -44,23 +44,32 @@ select distinct share_user_id from dts_user t where t.deleted = 0 and t.share_user_id > 0 + + - + + update dts_order set settlement_status = 1 + where deleted = 0 and order_status in (401,402) + and confirm_time >= STR_TO_DATE(#{startTime},'%Y-%m-%d %H:%i:%s') + and confirm_time <= STR_TO_DATE(#{endTime},'%Y-%m-%d %H:%i:%s') + and user_id in (select id + from dts_user u where (u.id=#{sharedUserId,jdbcType=INTEGER} and u.user_level=2) or (u.share_user_id =#{sharedUserId,jdbcType=INTEGER} and u.user_level < 2)) + - + + + + + + update dts_order set settlement_status = 1 + where deleted = 0 and order_status in (201,301,401,402) + and t.user_id=#{userId,jdbcType=INTEGER} + + \ No newline at end of file diff --git a/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/ex/CommentMapperEx.xml b/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/ex/CommentMapperEx.xml new file mode 100644 index 0000000..a6acf2e --- /dev/null +++ b/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/ex/CommentMapperEx.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + o.id, o.value_id, o.`type`, o.content, o.user_id, o.has_picture, o.pic_urls, o.star, o.add_time, o.update_time, + o.deleted + + + + \ No newline at end of file diff --git a/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/ex/GrouponMapperEx.xml b/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/ex/GrouponMapperEx.xml new file mode 100644 index 0000000..60e82f7 --- /dev/null +++ b/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/ex/GrouponMapperEx.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + o.id, o.goods_id, o.goods_name, o.pic_url, o.discount, o.discount_member, o.add_time, o.update_time, + o.expire_time, o.deleted + + + + + + + + + + + + + + + + + + + + o.id, o.order_id, o.groupon_id, o.rules_id, o.user_id, o.creator_user_id, o.add_time, o.update_time, + o.share_url, o.payed, o.deleted + + + + + \ No newline at end of file diff --git a/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/ex/OrderMapper.xml b/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/ex/OrderMapper.xml index e22f79b..7b99ca0 100644 --- a/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/ex/OrderMapper.xml +++ b/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/ex/OrderMapper.xml @@ -1,6 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update dts_order @@ -85,4 +121,38 @@ where id = #{order.id,jdbcType=INTEGER} and update_time = #{lastUpdateTime,jdbcType=INTEGER} + + + + o.id, o.user_id, o.order_sn, o.order_status, o.consignee, o.mobile, o.address, o.message, o.goods_price, + o.freight_price, o.coupon_price, o.integral_price, o.groupon_price, o.order_price, o.actual_price, + o.pay_id, o.pay_time, o.ship_sn, o.ship_channel, o.ship_time, o.confirm_time, o.comments, o.end_time, + o.add_time, o.update_time, o.deleted, o.settlement_money, o.settlement_status + + + \ No newline at end of file diff --git a/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/ex/StatMapper.xml b/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/ex/StatMapper.xml index 980b2ed..2fb4eda 100644 --- a/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/ex/StatMapper.xml +++ b/dts-dao/src/main/resources/com/qiguliuxing/dts/db/dao/ex/StatMapper.xml @@ -1,6 +1,42 @@ + + + + + + + + + + + + + + + + + + + +