فهرست منبع

1、增加点击访问量接口
2、增加职位访问量接口

rayson 1 سال پیش
والد
کامیت
b05443eb27
35فایلهای تغییر یافته به همراه693 افزوده شده و 68 حذف شده
  1. 4 1
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java
  2. 36 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/visits/MdeVisitsEnum.java
  3. 3 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/eduexp/vo/EduExpPageReqVO.java
  4. 8 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/business/EnterpriseBusinessPageReqVO.java
  5. 0 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/user/MdeUserController.java
  6. 93 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/visits/MdeVisitsController.java
  7. 36 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/visits/vo/MdeVisitsPageReqVO.java
  8. 47 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/visits/vo/MdeVisitsRespVO.java
  9. 39 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/visits/vo/MdeVisitsSaveReqVO.java
  10. 3 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/workexp/vo/WorkExpPageReqVO.java
  11. 8 8
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/AppMdeAuthController.java
  12. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthCheckCodeReqVO.java
  13. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthLoginReqVO.java
  14. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthLoginRespVO.java
  15. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthSmsLoginReqVO.java
  16. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthSmsSendReqVO.java
  17. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthSmsValidateReqVO.java
  18. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthSocialLoginReqVO.java
  19. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthWeixinMiniAppLoginReqVO.java
  20. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeWeixinJsapiSignatureRespVO.java
  21. 39 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/position/AppPositionController.java
  22. 18 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/position/vo/AppPositionClickReqVO.java
  23. 0 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/user/AppMdeUserController.java
  24. 16 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/visits/AppMdeVisitsController.java
  25. 32 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/visits/vo/AppMdeVisitsSaveReqVO.java
  26. 5 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/MdeAuthConvert.java
  27. 6 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/user/MdeUserDO.java
  28. 56 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/visits/MdeVisitsDO.java
  29. 28 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/visits/MdeVisitsMapper.java
  30. 7 7
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeAuthService.java
  31. 11 12
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeAuthServiceImpl.java
  32. 2 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/position/PositionService.java
  33. 17 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/position/PositionServiceImpl.java
  34. 60 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/visits/MdeVisitsService.java
  35. 110 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/visits/MdeVisitsServiceImpl.java

+ 4 - 1
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java

@@ -50,7 +50,10 @@ public interface ErrorCodeConstants {
     ErrorCode MDE_USER_SKILL_NOT_EXISTS = new ErrorCode(1_100_013_001, "人员技能不存在");
 
     // ========== 证书 1_100_014_000 ==========
-    ErrorCode MDE_CERTIFICATE_NOT_EXISTS = new ErrorCode(1_100_014_000, "证书不存在");
+    ErrorCode MDE_CERTIFICATE_NOT_EXISTS = new ErrorCode(1_100_014_001, "证书不存在");
+
+    // ========== 证书 1_100_015_000 ==========
+    ErrorCode MDE_VISITS_NOT_EXISTS = new ErrorCode(1_100_015_001, "访问量不存在");
 
     // ========== 门墩儿-用户登录 1_200_001_000 ==========
     ErrorCode MDE_USER_NOT_EXISTS = new ErrorCode(1_200_001_001, "用户不存在");

+ 36 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/visits/MdeVisitsEnum.java

@@ -0,0 +1,36 @@
+package com.citu.module.menduner.system.enums.visits;
+
+import com.citu.framework.common.core.IntArrayValuable;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Arrays;
+
+/**
+ * 访问量(0职位类型点击,1发布职位点击)
+ **/
+@Getter
+@AllArgsConstructor
+public enum MdeVisitsEnum implements IntArrayValuable {
+
+    POSITION_CLICK(0, "职位类型点击"),
+
+    POSITION_PUBLISH_CLICK(1, "发布职位点击");
+
+    public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(MdeVisitsEnum::getType).toArray();
+
+    /**
+     * 类型
+     */
+    private final Integer type;
+    /**
+     * 状态名
+     */
+    private final String name;
+
+    @Override
+    public int[] array() {
+        return ARRAYS;
+    }
+
+}

+ 3 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/eduexp/vo/EduExpPageReqVO.java

@@ -7,9 +7,9 @@ import lombok.EqualsAndHashCode;
 import lombok.ToString;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import java.time.LocalDate;
 import java.time.LocalDateTime;
 
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
 import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
 @Schema(description = "管理后台 - 教育经历分页 Request VO")
@@ -40,11 +40,11 @@ public class EduExpPageReqVO extends PageParam {
     private String major;
 
     @Schema(description = "在校开始日期")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
     private LocalDateTime[] startTime;
 
     @Schema(description = "在校结束时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
     private LocalDateTime[] endTime;
 
     @Schema(description = "在校经历")

+ 8 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/business/EnterpriseBusinessPageReqVO.java

@@ -1,11 +1,15 @@
 package com.citu.module.menduner.system.controller.admin.enterprise.business;
 
-import lombok.*;
-import io.swagger.v3.oas.annotations.media.Schema;
 import com.citu.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
 import org.springframework.format.annotation.DateTimeFormat;
+
 import java.time.LocalDateTime;
 
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
 import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
 @Schema(description = "管理后台 - 门墩儿-企业工商信息分页 Request VO")
@@ -36,11 +40,11 @@ public class EnterpriseBusinessPageReqVO extends PageParam {
     private String representative;
 
     @Schema(description = "成立时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
     private LocalDateTime[] establishmentTime;
 
     @Schema(description = "核准日期")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
     private String[] approvalTime;
 
     @Schema(description = "曾用名", example = "芋艿")

+ 0 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/user/MdeUserController.java

@@ -7,9 +7,7 @@ import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.excel.core.util.ExcelUtils;
-import com.citu.framework.security.core.annotations.PreAuthenticated;
 import com.citu.module.menduner.system.controller.admin.user.vo.*;
-import com.citu.module.menduner.system.controller.app.user.vo.AppMdeUserCreatePhonePCReqVO;
 import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
 import com.citu.module.menduner.system.service.user.MdeUserService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -22,13 +20,11 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
-
 import java.io.IOException;
 import java.util.List;
 
 import static com.citu.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
 import static com.citu.framework.common.pojo.CommonResult.success;
-import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 
 @Tag(name = "管理后台 - 用户信息")
 @RestController
@@ -95,7 +91,6 @@ public class MdeUserController {
     }
 
 
-
     @PutMapping("/update-password")
     @Operation(summary = "重置用户密码")
     @PreAuthorize("@ss.hasPermission('system:user:update-password')")

+ 93 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/visits/MdeVisitsController.java

@@ -0,0 +1,93 @@
+package com.citu.module.menduner.system.controller.admin.visits;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.excel.core.util.ExcelUtils;
+import com.citu.module.menduner.system.controller.admin.visits.vo.MdeVisitsPageReqVO;
+import com.citu.module.menduner.system.controller.admin.visits.vo.MdeVisitsRespVO;
+import com.citu.module.menduner.system.controller.admin.visits.vo.MdeVisitsSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.visits.MdeVisitsDO;
+import com.citu.module.menduner.system.service.visits.MdeVisitsService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 访问量")
+@RestController
+@RequestMapping("/menduner/system/visits")
+@Validated
+public class MdeVisitsController {
+
+    @Resource
+    private MdeVisitsService visitsService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建访问量")
+    @PreAuthorize("@ss.hasPermission('menduner:system:visits:create')")
+    public CommonResult<Long> createVisits(@Valid @RequestBody MdeVisitsSaveReqVO createReqVO) {
+        return success(visitsService.createMdeVisits(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新访问量")
+    @PreAuthorize("@ss.hasPermission('menduner:system:visits:update')")
+    public CommonResult<Boolean> updateVisits(@Valid @RequestBody MdeVisitsSaveReqVO updateReqVO) {
+        visitsService.updateMdeVisits(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除访问量")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner:system:visits:delete')")
+    public CommonResult<Boolean> deleteVisits(@RequestParam("id") Long id) {
+        visitsService.deleteMdeVisits(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得访问量")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner:system:visits:query')")
+    public CommonResult<MdeVisitsRespVO> getVisits(@RequestParam("id") Long id) {
+        MdeVisitsDO Visits = visitsService.getMdeVisits(id);
+        return success(BeanUtils.toBean(Visits, MdeVisitsRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得访问量分页")
+    @PreAuthorize("@ss.hasPermission('menduner:system:visits:query')")
+    public CommonResult<PageResult<MdeVisitsRespVO>> getVisitsPage(@Valid MdeVisitsPageReqVO pageReqVO) {
+        PageResult<MdeVisitsDO> pageResult = visitsService.getMdeVisitsPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, MdeVisitsRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出访问量 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner:system:visits:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportVisitsExcel(@Valid MdeVisitsPageReqVO pageReqVO,
+                                  HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<MdeVisitsDO> list = visitsService.getMdeVisitsPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "访问量.xls", "数据", MdeVisitsRespVO.class,
+                BeanUtils.toBean(list, MdeVisitsRespVO.class));
+    }
+
+}

+ 36 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/visits/vo/MdeVisitsPageReqVO.java

@@ -0,0 +1,36 @@
+package com.citu.module.menduner.system.controller.admin.visits.vo;
+
+import com.citu.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 门墩儿-访问量分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class MdeVisitsPageReqVO extends PageParam {
+
+    @Schema(description = "业务类型")
+    private Integer type;
+
+    @Schema(description = "业务id")
+    private Long businessId;
+
+    @Schema(description = "用户id")
+    private Long userId;
+
+    @Schema(description = "数量")
+    private Integer count;
+
+    @Schema(description = "访问日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] date;
+
+}

+ 47 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/visits/vo/MdeVisitsRespVO.java

@@ -0,0 +1,47 @@
+package com.citu.module.menduner.system.controller.admin.visits.vo;
+
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.citu.framework.excel.core.annotations.DictFormat;
+import com.citu.framework.excel.core.convert.DictConvert;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 门墩儿-用户登录 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class MdeVisitsRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2684")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "业务类型")
+    @ExcelProperty(value = "业务类型", converter = DictConvert.class)
+    @DictFormat("menduner_visits_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer type;
+
+    @Schema(description = "业务id")
+    @ExcelProperty("业务id")
+    private Long businessId;
+
+    @Schema(description = "用户id")
+    @ExcelProperty("用户id")
+    private Long userId;
+
+    @Schema(description = "数量")
+    @ExcelProperty("数量")
+    private Integer count;
+
+    @Schema(description = "访问日期")
+    @ExcelProperty("访问日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime date;
+
+}

+ 39 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/visits/vo/MdeVisitsSaveReqVO.java

@@ -0,0 +1,39 @@
+package com.citu.module.menduner.system.controller.admin.visits.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(description = "管理后台 - 门墩儿-访问量新增/修改 Request VO")
+public class MdeVisitsSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2684")
+    private Long id;
+
+    @Schema(description = "业务类型")
+    private Integer type;
+
+    @Schema(description = "业务id")
+    private Long businessId;
+
+    @Schema(description = "用户id")
+    private Long userId;
+
+    @Schema(description = "数量")
+    private Integer count;
+
+    @Schema(description = "访问日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime date;
+}

+ 3 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/workexp/vo/WorkExpPageReqVO.java

@@ -10,6 +10,7 @@ import java.math.BigDecimal;
 import org.springframework.format.annotation.DateTimeFormat;
 import java.time.LocalDateTime;
 
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
 import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
 @Schema(description = "管理后台 - 工作经历分页 Request VO")
@@ -40,11 +41,11 @@ public class WorkExpPageReqVO extends PageParam {
     private String positionName;
 
     @Schema(description = "在职开始日期")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
     private LocalDateTime[] startTime;
 
     @Schema(description = "在职结束时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
     private LocalDateTime[] endTime;
 
     @Schema(description = "薪酬类型(0月薪 1年薪)", example = "1")

+ 8 - 8
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/MdeAuthController.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/AppMdeAuthController.java

@@ -31,7 +31,7 @@ import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLo
 @RequestMapping("/menduner/system/auth")
 @Validated
 @Slf4j
-public class MdeAuthController {
+public class AppMdeAuthController {
 
     @Resource
     private MdeAuthService authService;
@@ -44,7 +44,7 @@ public class MdeAuthController {
 
     @PostMapping("/login")
     @Operation(summary = "使用手机 + 密码登录")
-    public CommonResult<MdeAuthLoginRespVO> login(@RequestBody @Valid MdeAuthLoginReqVO reqVO) {
+    public CommonResult<AppMdeAuthLoginRespVO> login(@RequestBody @Valid AppMdeAuthLoginReqVO reqVO) {
         return success(authService.login(reqVO));
     }
 
@@ -64,7 +64,7 @@ public class MdeAuthController {
     @PostMapping("/refresh-token")
     @Operation(summary = "刷新令牌")
     @Parameter(name = "refreshToken", description = "刷新令牌", required = true)
-    public CommonResult<MdeAuthLoginRespVO> refreshToken(@RequestParam("refreshToken") String refreshToken) {
+    public CommonResult<AppMdeAuthLoginRespVO> refreshToken(@RequestParam("refreshToken") String refreshToken) {
         return success(authService.refreshToken(refreshToken));
     }
 
@@ -73,14 +73,14 @@ public class MdeAuthController {
     @PermitAll
     @PostMapping("/sms-login")
     @Operation(summary = "使用手机 + 验证码登录")
-    public CommonResult<MdeAuthLoginRespVO> smsLogin(@RequestBody @Valid MdeAuthSmsLoginReqVO reqVO) {
+    public CommonResult<AppMdeAuthLoginRespVO> smsLogin(@RequestBody @Valid AppMdeAuthSmsLoginReqVO reqVO) {
         return success(authService.smsLogin(reqVO));
     }
 
     @PermitAll
     @PostMapping("/send-sms-code")
     @Operation(summary = "发送手机验证码")
-    public CommonResult<Boolean> sendSmsCode(@RequestBody @Valid MdeAuthSmsSendReqVO reqVO) {
+    public CommonResult<Boolean> sendSmsCode(@RequestBody @Valid AppMdeAuthSmsSendReqVO reqVO) {
         authService.sendSmsCode(getLoginUserId(), reqVO);
         return success(true);
     }
@@ -88,7 +88,7 @@ public class MdeAuthController {
     @PermitAll
     @PostMapping("/validate-sms-code")
     @Operation(summary = "校验手机验证码")
-    public CommonResult<Boolean> validateSmsCode(@RequestBody @Valid MdeAuthSmsValidateReqVO reqVO) {
+    public CommonResult<Boolean> validateSmsCode(@RequestBody @Valid AppMdeAuthSmsValidateReqVO reqVO) {
         authService.validateSmsCode(getLoginUserId(), reqVO);
         return success(true);
     }
@@ -110,14 +110,14 @@ public class MdeAuthController {
     @PermitAll
     @PostMapping("/social-login")
     @Operation(summary = "社交快捷登录,使用 code 授权码", description = "适合未登录的用户,但是社交账号已绑定用户")
-    public CommonResult<MdeAuthLoginRespVO> socialLogin(@RequestBody @Valid MdeAuthSocialLoginReqVO reqVO) {
+    public CommonResult<AppMdeAuthLoginRespVO> socialLogin(@RequestBody @Valid AppMdeAuthSocialLoginReqVO reqVO) {
         return success(authService.socialLogin(reqVO));
     }
 
     @PermitAll
     @PostMapping("/weixin-mini-app-login")
     @Operation(summary = "微信小程序的一键登录")
-    public CommonResult<MdeAuthLoginRespVO> weixinMiniAppLogin(@RequestBody @Valid MdeAuthWeixinMiniAppLoginReqVO reqVO) {
+    public CommonResult<AppMdeAuthLoginRespVO> weixinMiniAppLogin(@RequestBody @Valid AppMdeAuthWeixinMiniAppLoginReqVO reqVO) {
         return success(authService.weixinMiniAppLogin(reqVO));
     }
 

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/MdeAuthCheckCodeReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthCheckCodeReqVO.java

@@ -20,7 +20,7 @@ import javax.validation.constraints.Pattern;
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-public class MdeAuthCheckCodeReqVO {
+public class AppMdeAuthCheckCodeReqVO {
 
     @Schema(description = "手机号", example = "15601691234")
     @NotBlank(message = "手机号不能为空")

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/MdeAuthLoginReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthLoginReqVO.java

@@ -19,7 +19,7 @@ import javax.validation.constraints.NotEmpty;
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-public class MdeAuthLoginReqVO {
+public class AppMdeAuthLoginReqVO {
 
     @Schema(description = "手机号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15601691300")
     @NotEmpty(message = "手机号不能为空")

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/MdeAuthLoginRespVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthLoginRespVO.java

@@ -13,7 +13,7 @@ import java.time.LocalDateTime;
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-public class MdeAuthLoginRespVO {
+public class AppMdeAuthLoginRespVO {
 
     @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
     private Long userId;

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/MdeAuthSmsLoginReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthSmsLoginReqVO.java

@@ -20,7 +20,7 @@ import javax.validation.constraints.Pattern;
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-public class MdeAuthSmsLoginReqVO {
+public class AppMdeAuthSmsLoginReqVO {
 
     @Schema(description = "手机号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15601691300")
     @NotEmpty(message = "手机号不能为空")

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/MdeAuthSmsSendReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthSmsSendReqVO.java

@@ -12,7 +12,7 @@ import javax.validation.constraints.NotNull;
 @Schema(description = "menduner - 发送手机验证码 Request VO")
 @Data
 @Accessors(chain = true)
-public class MdeAuthSmsSendReqVO {
+public class AppMdeAuthSmsSendReqVO {
 
     @Schema(description = "手机号", example = "15601691234")
     @Mobile

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/MdeAuthSmsValidateReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthSmsValidateReqVO.java

@@ -15,7 +15,7 @@ import javax.validation.constraints.Pattern;
 @Schema(description = "menduner - 校验手机验证码 Request VO")
 @Data
 @Accessors(chain = true)
-public class MdeAuthSmsValidateReqVO {
+public class AppMdeAuthSmsValidateReqVO {
 
     @Schema(description = "手机号", example = "15601691234")
     @Mobile

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/MdeAuthSocialLoginReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthSocialLoginReqVO.java

@@ -16,7 +16,7 @@ import javax.validation.constraints.NotNull;
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-public class MdeAuthSocialLoginReqVO {
+public class AppMdeAuthSocialLoginReqVO {
 
     @Schema(description = "社交平台的类型,参见 SocialTypeEnum 枚举值", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
     @InEnum(SocialTypeEnum.class)

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/MdeAuthWeixinMiniAppLoginReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeAuthWeixinMiniAppLoginReqVO.java

@@ -13,7 +13,7 @@ import javax.validation.constraints.NotEmpty;
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-public class MdeAuthWeixinMiniAppLoginReqVO {
+public class AppMdeAuthWeixinMiniAppLoginReqVO {
 
     @Schema(description = "手机 code,小程序通过 wx.getPhoneNumber 方法获得", requiredMode = Schema.RequiredMode.REQUIRED, example = "hello")
     @NotEmpty(message = "手机 code 不能为空")

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/MdeWeixinJsapiSignatureRespVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/vo/AppMdeWeixinJsapiSignatureRespVO.java

@@ -11,7 +11,7 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-public class MdeWeixinJsapiSignatureRespVO {
+public class AppMdeWeixinJsapiSignatureRespVO {
 
     @Schema(description = "微信公众号的 appId", requiredMode = Schema.RequiredMode.REQUIRED, example = "hello")
     private String appId;

+ 39 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/position/AppPositionController.java

@@ -0,0 +1,39 @@
+package com.citu.module.menduner.system.controller.app.position;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.security.core.annotations.PreAuthenticated;
+import com.citu.module.menduner.system.controller.app.position.vo.AppPositionClickReqVO;
+import com.citu.module.menduner.system.service.position.PositionService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "用户端 - 职位信息")
+@RestController
+@RequestMapping("/menduner/system/position")
+@Validated
+@Slf4j
+public class AppPositionController {
+
+    @Resource
+    private PositionService positionService;
+
+    @PutMapping("/click")
+    @Operation(summary = "点击访问职位埋点")
+    @PreAuthenticated
+    public CommonResult<Boolean> click(@RequestBody @Valid AppPositionClickReqVO reqVO) {
+        positionService.click(reqVO);
+        return success(true);
+    }
+
+}

+ 18 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/position/vo/AppPositionClickReqVO.java

@@ -0,0 +1,18 @@
+package com.citu.module.menduner.system.controller.app.position.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Schema(description = "menduner - 用户点击职位 Request VO")
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class AppPositionClickReqVO {
+
+    @Schema(description = "职位id", example = "123")
+    private Long id;
+}

+ 0 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/user/AppMdeUserController.java

@@ -10,7 +10,6 @@ import com.citu.module.menduner.system.service.user.MdeUserService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 

+ 16 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/visits/AppMdeVisitsController.java

@@ -0,0 +1,16 @@
+package com.citu.module.menduner.system.controller.app.visits;
+
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Tag(name = "用户端 - 访问量")
+@RestController
+@RequestMapping("/menduner/system/visits")
+@Validated
+public class AppMdeVisitsController {
+
+
+
+}

+ 32 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/visits/vo/AppMdeVisitsSaveReqVO.java

@@ -0,0 +1,32 @@
+package com.citu.module.menduner.system.controller.app.visits.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
+
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(description = "用户端 - 访问量新增/修改 Request VO")
+public class AppMdeVisitsSaveReqVO {
+
+
+    @Schema(description = "业务类型")
+    private Integer type;
+
+    @Schema(description = "业务id")
+    private Long businessId;
+
+    @Schema(description = "访问日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    private LocalDateTime date;
+}

+ 5 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/MdeAuthConvert.java

@@ -18,17 +18,17 @@ public interface MdeAuthConvert {
 
     MdeAuthConvert INSTANCE = Mappers.getMapper(MdeAuthConvert.class);
 
-    SocialUserBindReqDTO convert(Long userId, Integer userType, MdeAuthSocialLoginReqVO reqVO);
+    SocialUserBindReqDTO convert(Long userId, Integer userType, AppMdeAuthSocialLoginReqVO reqVO);
 
-    SmsCodeSendReqDTO convert(MdeAuthSmsSendReqVO reqVO);
+    SmsCodeSendReqDTO convert(AppMdeAuthSmsSendReqVO reqVO);
 
     SmsCodeUseReqDTO convert(AppMdeUserResetPasswordReqVO reqVO, SmsSceneEnum scene, String usedIp);
 
-    SmsCodeUseReqDTO convert(MdeAuthSmsLoginReqVO reqVO, Integer scene, String usedIp);
+    SmsCodeUseReqDTO convert(AppMdeAuthSmsLoginReqVO reqVO, Integer scene, String usedIp);
 
-    MdeAuthLoginRespVO convert(OAuth2AccessTokenRespDTO bean, String openid);
+    AppMdeAuthLoginRespVO convert(OAuth2AccessTokenRespDTO bean, String openid);
 
-    SmsCodeValidateReqDTO convert(MdeAuthSmsValidateReqVO bean);
+    SmsCodeValidateReqDTO convert(AppMdeAuthSmsValidateReqVO bean);
 
     SocialWxJsapiSignatureRespDTO convert(SocialWxJsapiSignatureRespDTO bean);
 

+ 6 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/user/MdeUserDO.java

@@ -1,13 +1,13 @@
 package com.citu.module.menduner.system.dal.dataobject.user;
 
 
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
 import lombok.*;
-import java.util.*;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
+
 import java.time.LocalDateTime;
-import com.baomidou.mybatisplus.annotation.*;
-import com.citu.framework.mybatis.core.dataobject.BaseDO;
 
 /**
  * 门墩儿-用户登录 DO
@@ -51,7 +51,7 @@ public class MdeUserDO extends BaseDO {
     private String avatar;
     /**
      * 帐号状态(0正常 1停用)
-     *
+     * <p>
      * 枚举 {@link TODO menduner_status 对应的类}
      */
     private Integer status;

+ 56 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/visits/MdeVisitsDO.java

@@ -0,0 +1,56 @@
+package com.citu.module.menduner.system.dal.dataobject.visits;
+
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+import lombok.*;
+
+import java.time.LocalDateTime;
+
+/**
+ * 门墩儿-访问量 DO
+ *
+ * @author rayson
+ */
+@TableName("mde_visits")
+@KeySequence("mde_visits_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MdeVisitsDO extends BaseDO {
+
+    /**
+     * ID
+     */
+    @TableId
+    private Long id;
+
+    /**
+     * 访问业务
+     */
+    private Integer type;
+
+    /**
+     * 业务id
+     */
+    private Long businessId;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 数量
+     */
+    private Integer count;
+
+    /**
+     * 访问日期
+     */
+    private LocalDateTime date;
+}

+ 28 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/visits/MdeVisitsMapper.java

@@ -0,0 +1,28 @@
+package com.citu.module.menduner.system.dal.mysql.visits;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.mybatis.core.mapper.BaseMapperX;
+import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.citu.module.menduner.system.controller.admin.visits.vo.MdeVisitsPageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.visits.MdeVisitsDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 门墩儿-访问量 Mapper
+ *
+ * @author rayson
+ */
+@Mapper
+public interface MdeVisitsMapper extends BaseMapperX<MdeVisitsDO> {
+
+
+    default PageResult<MdeVisitsDO> selectPage(MdeVisitsPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<MdeVisitsDO>()
+                .eqIfPresent(MdeVisitsDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(MdeVisitsDO::getType, reqVO.getType())
+                .eqIfPresent(MdeVisitsDO::getDate, reqVO.getDate())
+                .eqIfPresent(MdeVisitsDO::getBusinessId, reqVO.getBusinessId())
+                .betweenIfPresent(MdeVisitsDO::getDate, reqVO.getDate())
+                .orderByAsc(MdeVisitsDO::getId));
+    }
+}

+ 7 - 7
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeAuthService.java

@@ -20,7 +20,7 @@ public interface MdeAuthService {
      * @param reqVO 登录信息
      * @return 登录结果
      */
-    MdeAuthLoginRespVO login(@Valid MdeAuthLoginReqVO reqVO);
+    AppMdeAuthLoginRespVO login(@Valid AppMdeAuthLoginReqVO reqVO);
 
     /**
      * 基于 token 退出登录
@@ -35,7 +35,7 @@ public interface MdeAuthService {
      * @param reqVO 登陆信息
      * @return 登录结果
      */
-    MdeAuthLoginRespVO smsLogin(@Valid MdeAuthSmsLoginReqVO reqVO);
+    AppMdeAuthLoginRespVO smsLogin(@Valid AppMdeAuthSmsLoginReqVO reqVO);
 
     /**
      * 社交登录,使用 code 授权码
@@ -43,7 +43,7 @@ public interface MdeAuthService {
      * @param reqVO 登录信息
      * @return 登录结果
      */
-    MdeAuthLoginRespVO socialLogin(@Valid MdeAuthSocialLoginReqVO reqVO);
+    AppMdeAuthLoginRespVO socialLogin(@Valid AppMdeAuthSocialLoginReqVO reqVO);
 
     /**
      * 微信小程序的一键登录
@@ -51,7 +51,7 @@ public interface MdeAuthService {
      * @param reqVO 登录信息
      * @return 登录结果
      */
-    MdeAuthLoginRespVO weixinMiniAppLogin(MdeAuthWeixinMiniAppLoginReqVO reqVO);
+    AppMdeAuthLoginRespVO weixinMiniAppLogin(AppMdeAuthWeixinMiniAppLoginReqVO reqVO);
 
     /**
      * 获得社交认证 URL
@@ -68,7 +68,7 @@ public interface MdeAuthService {
      * @param userId 用户编号
      * @param reqVO  发送信息
      */
-    void sendSmsCode(Long userId, MdeAuthSmsSendReqVO reqVO);
+    void sendSmsCode(Long userId, AppMdeAuthSmsSendReqVO reqVO);
 
     /**
      * 校验短信验证码是否正确
@@ -76,7 +76,7 @@ public interface MdeAuthService {
      * @param userId 用户编号
      * @param reqVO  校验信息
      */
-    void validateSmsCode(Long userId, MdeAuthSmsValidateReqVO reqVO);
+    void validateSmsCode(Long userId, AppMdeAuthSmsValidateReqVO reqVO);
 
     /**
      * 刷新访问令牌
@@ -84,5 +84,5 @@ public interface MdeAuthService {
      * @param refreshToken 刷新令牌
      * @return 登录结果
      */
-    MdeAuthLoginRespVO refreshToken(String refreshToken);
+    AppMdeAuthLoginRespVO refreshToken(String refreshToken);
 }

+ 11 - 12
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeAuthServiceImpl.java

@@ -26,7 +26,6 @@ import com.citu.module.system.api.social.dto.SocialWxPhoneNumberInfoRespDTO;
 import com.citu.module.system.enums.logger.LoginLogTypeEnum;
 import com.citu.module.system.enums.logger.LoginResultEnum;
 import com.citu.module.system.enums.oauth2.OAuth2ClientConstants;
-import com.citu.module.system.enums.sms.SmsSceneEnum;
 import com.citu.module.system.enums.social.SocialTypeEnum;
 import com.google.common.annotations.VisibleForTesting;
 import com.xingyuv.captcha.model.common.ResponseModel;
@@ -80,13 +79,13 @@ public class MdeAuthServiceImpl implements MdeAuthService {
     private CaptchaService captchaService;
 
     @VisibleForTesting
-    void validateCaptcha(MdeAuthLoginReqVO reqVO) {
+    void validateCaptcha(AppMdeAuthLoginReqVO reqVO) {
         // 如果验证码关闭,则不进行校验
         if (!captchaEnable) {
             return;
         }
         // 校验验证码
-        ValidationUtils.validate(validator, reqVO, MdeAuthLoginReqVO.CodeEnableGroup.class);
+        ValidationUtils.validate(validator, reqVO, AppMdeAuthLoginReqVO.CodeEnableGroup.class);
         CaptchaVO captchaVO = new CaptchaVO();
         captchaVO.setCaptchaVerification(reqVO.getCaptchaVerification());
         ResponseModel response = captchaService.verification(captchaVO);
@@ -99,7 +98,7 @@ public class MdeAuthServiceImpl implements MdeAuthService {
     }
 
     @Override
-    public MdeAuthLoginRespVO login(MdeAuthLoginReqVO reqVO) {
+    public AppMdeAuthLoginRespVO login(AppMdeAuthLoginReqVO reqVO) {
         // 校验验证码
         validateCaptcha(reqVO);
         // 使用手机 + 密码,进行登录。
@@ -162,7 +161,7 @@ public class MdeAuthServiceImpl implements MdeAuthService {
 
     @Override
     @Transactional
-    public MdeAuthLoginRespVO smsLogin(MdeAuthSmsLoginReqVO reqVO) {
+    public AppMdeAuthLoginRespVO smsLogin(AppMdeAuthSmsLoginReqVO reqVO) {
         // 校验验证码
         String userIp = getClientIP();
 //        smsCodeApi.useSmsCode(MdeAuthConvert.INSTANCE.convert(reqVO, SmsSceneEnum.MENDUNER_LOGIN.getScene(), userIp).setMobile(reqVO.getPhone())).getCheckedData();
@@ -184,7 +183,7 @@ public class MdeAuthServiceImpl implements MdeAuthService {
 
     @Override
     @Transactional
-    public MdeAuthLoginRespVO socialLogin(MdeAuthSocialLoginReqVO reqVO) {
+    public AppMdeAuthLoginRespVO socialLogin(AppMdeAuthSocialLoginReqVO reqVO) {
         // 使用 code 授权码,进行登录。然后,获得到绑定的用户编号
         SocialUserRespDTO socialUser = socialUserApi.getSocialUserByCode(UserTypeEnum.MEMBER.getValue(), reqVO.getType(),
                 reqVO.getCode(), reqVO.getState()).getCheckedData();
@@ -212,7 +211,7 @@ public class MdeAuthServiceImpl implements MdeAuthService {
 
     @Override
     @Transactional
-    public MdeAuthLoginRespVO weixinMiniAppLogin(MdeAuthWeixinMiniAppLoginReqVO reqVO) {
+    public AppMdeAuthLoginRespVO weixinMiniAppLogin(AppMdeAuthWeixinMiniAppLoginReqVO reqVO) {
         // 获得对应的手机号信息
         SocialWxPhoneNumberInfoRespDTO phoneNumberInfo = socialClientApi.getWxMaPhoneNumberInfo(
                 UserTypeEnum.MEMBER.getValue(), reqVO.getPhoneCode()).getCheckedData();
@@ -237,7 +236,7 @@ public class MdeAuthServiceImpl implements MdeAuthService {
     }
 
     @Override
-    public void sendSmsCode(Long userId, MdeAuthSmsSendReqVO reqVO) {
+    public void sendSmsCode(Long userId, AppMdeAuthSmsSendReqVO reqVO) {
 //        // 情况 1:如果是修改手机场景,需要校验新手机号是否已经注册,说明不能使用该手机了
 //        if (Objects.equals(reqVO.getScene(), SmsSceneEnum.MEMBER_UPDATE_MOBILE.getScene())) {
 //            MdeUserDO user = userService.getUserByPhone(reqVO.getPhone());
@@ -264,12 +263,12 @@ public class MdeAuthServiceImpl implements MdeAuthService {
     }
 
     @Override
-    public void validateSmsCode(Long userId, MdeAuthSmsValidateReqVO reqVO) {
+    public void validateSmsCode(Long userId, AppMdeAuthSmsValidateReqVO reqVO) {
         smsCodeApi.validateSmsCode(MdeAuthConvert.INSTANCE.convert(reqVO).setMobile(reqVO.getPhone()));
     }
 
     @Override
-    public MdeAuthLoginRespVO refreshToken(String refreshToken) {
+    public AppMdeAuthLoginRespVO refreshToken(String refreshToken) {
         OAuth2AccessTokenRespDTO accessTokenDO = oauth2TokenApi.refreshAccessToken(refreshToken,
                 OAuth2ClientConstants.CLIENT_ID_DEFAULT).getCheckedData();
         return MdeAuthConvert.INSTANCE.convert(accessTokenDO, null);
@@ -305,8 +304,8 @@ public class MdeAuthServiceImpl implements MdeAuthService {
         return UserTypeEnum.MEMBER;
     }
 
-    private MdeAuthLoginRespVO createTokenAfterLoginSuccess(MdeUserDO user, String phone,
-                                                            LoginLogTypeEnum logType, String openid) {
+    private AppMdeAuthLoginRespVO createTokenAfterLoginSuccess(MdeUserDO user, String phone,
+                                                               LoginLogTypeEnum logType, String openid) {
         // 插入登陆日志
         createLoginLog(user.getId(), phone, logType, LoginResultEnum.SUCCESS);
         // 创建 Token 令牌

+ 2 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/position/PositionService.java

@@ -2,6 +2,7 @@ package com.citu.module.menduner.system.service.position;
 
 import javax.validation.*;
 import com.citu.module.menduner.system.controller.admin.position.vo.*;
+import com.citu.module.menduner.system.controller.app.position.vo.AppPositionClickReqVO;
 import com.citu.module.menduner.system.dal.dataobject.position.PositionDO;
 import com.citu.framework.common.pojo.PageResult;
 
@@ -63,7 +64,7 @@ public interface PositionService {
     /**
      * 点击执行埋点
      **/
-    void click(Long id);
+    void click(AppPositionClickReqVO reqVO);
 
     /**
      * 同步boss职位类型

+ 17 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/position/PositionServiceImpl.java

@@ -5,8 +5,12 @@ import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.module.menduner.system.controller.admin.position.vo.PositionListReqVO;
 import com.citu.module.menduner.system.controller.admin.position.vo.PositionPageReqVO;
 import com.citu.module.menduner.system.controller.admin.position.vo.PositionSaveReqVO;
+import com.citu.module.menduner.system.controller.app.position.vo.AppPositionClickReqVO;
+import com.citu.module.menduner.system.controller.app.visits.vo.AppMdeVisitsSaveReqVO;
 import com.citu.module.menduner.system.dal.dataobject.position.PositionDO;
 import com.citu.module.menduner.system.dal.mysql.position.PositionMapper;
+import com.citu.module.menduner.system.enums.visits.MdeVisitsEnum;
+import com.citu.module.menduner.system.service.visits.MdeVisitsService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
@@ -15,6 +19,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.client.RestTemplate;
 
 import javax.annotation.Resource;
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
 
@@ -34,6 +39,9 @@ public class PositionServiceImpl implements PositionService {
     @Resource
     private PositionMapper positionMapper;
 
+    @Resource
+    private MdeVisitsService visitsService;
+
 
     @Resource
     private RestTemplate restTemplate;
@@ -113,6 +121,15 @@ public class PositionServiceImpl implements PositionService {
         return positionMapper.selectList(pageReqVO);
     }
 
+    @Override
+    public void click(AppPositionClickReqVO reqVO) {
+        visitsService.create(AppMdeVisitsSaveReqVO.builder()
+                .type(MdeVisitsEnum.POSITION_CLICK.getType())
+                .businessId(reqVO.getId())
+                .date(LocalDateTime.now())
+                .build());
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void syncBossPosition() {
@@ -139,8 +156,4 @@ public class PositionServiceImpl implements PositionService {
         log.info(" ========== 同步BOSS职业类型完成 ========== ");
     }
 
-    @Override
-    public void click(Long id) {
-        
-    }
 }

+ 60 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/visits/MdeVisitsService.java

@@ -0,0 +1,60 @@
+package com.citu.module.menduner.system.service.visits;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.admin.visits.vo.MdeVisitsPageReqVO;
+import com.citu.module.menduner.system.controller.admin.visits.vo.MdeVisitsSaveReqVO;
+import com.citu.module.menduner.system.controller.app.visits.vo.AppMdeVisitsSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.visits.MdeVisitsDO;
+
+import javax.validation.Valid;
+
+/**
+ * 访问量 Service 接口
+ *
+ * @author Rayson
+ */
+public interface MdeVisitsService {
+
+    /**
+     * 创建访问量
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createMdeVisits(@Valid MdeVisitsSaveReqVO createReqVO);
+
+    /**
+     * 更新访问量
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateMdeVisits(@Valid MdeVisitsSaveReqVO updateReqVO);
+
+    /**
+     * 删除访问量
+     *
+     * @param id 编号
+     */
+    void deleteMdeVisits(Long id);
+
+    /**
+     * 获得访问量
+     *
+     * @param id 编号
+     * @return 访问量
+     */
+    MdeVisitsDO getMdeVisits(Long id);
+
+    /**
+     * 获得访问量分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 访问量分页
+     */
+    PageResult<MdeVisitsDO> getMdeVisitsPage(MdeVisitsPageReqVO pageReqVO);
+
+    /**
+     * 创建访问量
+     **/
+    void create(@Valid AppMdeVisitsSaveReqVO reqVO);
+}

+ 110 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/visits/MdeVisitsServiceImpl.java

@@ -0,0 +1,110 @@
+package com.citu.module.menduner.system.service.visits;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.date.DateUtils;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.citu.module.menduner.system.controller.admin.visits.vo.MdeVisitsPageReqVO;
+import com.citu.module.menduner.system.controller.admin.visits.vo.MdeVisitsSaveReqVO;
+import com.citu.module.menduner.system.controller.app.visits.vo.AppMdeVisitsSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.visits.MdeVisitsDO;
+import com.citu.module.menduner.system.dal.mysql.visits.MdeVisitsMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_VISITS_NOT_EXISTS;
+
+
+/**
+ * 访问量 Service 实现类
+ *
+ * @author Rayson
+ */
+@Slf4j
+@Service
+@Validated
+public class MdeVisitsServiceImpl implements MdeVisitsService {
+
+    @Resource
+    private MdeVisitsMapper mdeVisitsMapper;
+
+
+    @Override
+    public Long createMdeVisits(MdeVisitsSaveReqVO createReqVO) {
+        // 插入
+        MdeVisitsDO MdeVisits = BeanUtils.toBean(createReqVO, MdeVisitsDO.class);
+        mdeVisitsMapper.insert(MdeVisits);
+        // 返回
+        return MdeVisits.getId();
+    }
+
+    @Override
+    public void updateMdeVisits(MdeVisitsSaveReqVO updateReqVO) {
+        // 校验存在
+        validateMdeVisitsExists(updateReqVO.getId());
+        // 更新
+        MdeVisitsDO updateObj = BeanUtils.toBean(updateReqVO, MdeVisitsDO.class);
+        mdeVisitsMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteMdeVisits(Long id) {
+        // 校验存在
+        validateMdeVisitsExists(id);
+        // 删除
+        mdeVisitsMapper.deleteById(id);
+    }
+
+    private void validateMdeVisitsExists(Long id) {
+        if (mdeVisitsMapper.selectById(id) == null) {
+            throw exception(MDE_VISITS_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public MdeVisitsDO getMdeVisits(Long id) {
+        return mdeVisitsMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<MdeVisitsDO> getMdeVisitsPage(MdeVisitsPageReqVO pageReqVO) {
+        return mdeVisitsMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void create(AppMdeVisitsSaveReqVO reqVO) {
+
+        Long userId = getLoginUserId();
+
+        MdeVisitsDO visitsDO = mdeVisitsMapper.selectOne(new LambdaQueryWrapperX<MdeVisitsDO>()
+                .eq(MdeVisitsDO::getUserId, null == userId ? 0 : userId)
+                .eq(MdeVisitsDO::getType, reqVO.getType())
+                .eq(MdeVisitsDO::getBusinessId, reqVO.getBusinessId())
+                .eq(MdeVisitsDO::getDate, DateUtils.of(reqVO.getDate()))
+        );
+        if (null == visitsDO) {
+            // 新增
+            MdeVisitsDO visits = MdeVisitsDO.builder()
+                    .userId(userId)
+                    .type(reqVO.getType())
+                    .businessId(reqVO.getBusinessId())
+                    .date(reqVO.getDate())
+                    .count(0)
+                    .build();
+            mdeVisitsMapper.insert(visits);
+            return;
+        }
+
+        // 增加访问量
+        visitsDO.setCount(visitsDO.getCount() + 1);
+        mdeVisitsMapper.updateById(visitsDO);
+
+    }
+}