Sfoglia il codice sorgente

Merge branch 'master' of http://192.168.8.213:3000/miaxis/zzjs

wyling 4 anni fa
parent
commit
273874810a
50 ha cambiato i file con 1429 aggiunte e 153 eliminazioni
  1. 6 3
      zzjs-admin/src/main/java/com/miaxis/app/controller/collection/AppletCollectionInfoController.java
  2. 9 40
      zzjs-admin/src/main/java/com/miaxis/app/controller/customer/AppletCustomerInfoController.java
  3. 128 0
      zzjs-admin/src/main/java/com/miaxis/app/controller/gzpt/GzptTrainRecordController.java
  4. 11 13
      zzjs-admin/src/main/java/com/miaxis/app/controller/gzpt/GzptUserInfoController.java
  5. 8 12
      zzjs-admin/src/main/java/com/miaxis/app/controller/product/AppletProductTypeInfoController.java
  6. 2 1
      zzjs-admin/src/main/java/com/miaxis/app/controller/question/QuestionCollectionController.java
  7. 81 0
      zzjs-admin/src/main/java/com/miaxis/app/controller/record/AppletBrowseRecordInfoController.java
  8. 2 2
      zzjs-admin/src/main/java/com/miaxis/pc/controller/product/ProductTypeInfoController.java
  9. 9 9
      zzjs-admin/src/main/resources/application-prod.yml
  10. 5 0
      zzjs-common/src/main/java/com/miaxis/common/constant/Constants.java
  11. 1 1
      zzjs-framework/src/main/java/com/miaxis/framework/config/ResourcesConfig.java
  12. 2 1
      zzjs-framework/src/main/java/com/miaxis/framework/config/SecurityConfig.java
  13. 7 0
      zzjs-service/src/main/java/com/miaxis/collection/service/ICollectionInfoService.java
  14. 41 7
      zzjs-service/src/main/java/com/miaxis/collection/service/impl/CollectionInfoServiceImpl.java
  15. 5 0
      zzjs-service/src/main/java/com/miaxis/customer/domain/CustomerInfo.java
  16. 28 0
      zzjs-service/src/main/java/com/miaxis/customer/dto/AppletCustomerInfoDto.java
  17. 12 8
      zzjs-service/src/main/java/com/miaxis/customer/mapper/CustomerInfoMapper.java
  18. 5 9
      zzjs-service/src/main/java/com/miaxis/customer/service/ICustomerInfoService.java
  19. 15 15
      zzjs-service/src/main/java/com/miaxis/customer/service/impl/CustomerInfoServiceImpl.java
  20. 57 0
      zzjs-service/src/main/java/com/miaxis/customer/vo/BrowseRecordCustomerInfoVo.java
  21. 4 0
      zzjs-service/src/main/java/com/miaxis/customer/vo/CustomerInfoVo.java
  22. 3 0
      zzjs-service/src/main/java/com/miaxis/customer/vo/ExhibitionCustomerInfoVo.java
  23. 3 3
      zzjs-service/src/main/java/com/miaxis/generator/CodeGenerator.java
  24. 74 0
      zzjs-service/src/main/java/com/miaxis/newgzpt/domain/GzptTrainRecord.java
  25. 4 4
      zzjs-service/src/main/java/com/miaxis/newgzpt/domain/GzptUserInfo.java
  26. 28 0
      zzjs-service/src/main/java/com/miaxis/newgzpt/dto/TrainCreditDTO.java
  27. 32 0
      zzjs-service/src/main/java/com/miaxis/newgzpt/dto/TrainFinishDTO.java
  28. 28 0
      zzjs-service/src/main/java/com/miaxis/newgzpt/dto/TrainFinishKmDTO.java
  29. 31 0
      zzjs-service/src/main/java/com/miaxis/newgzpt/mapper/GzptTrainRecordMapper.java
  30. 1 1
      zzjs-service/src/main/java/com/miaxis/newgzpt/mapper/GzptUserInfoMapper.java
  31. 31 0
      zzjs-service/src/main/java/com/miaxis/newgzpt/service/IGzptTrainRecordService.java
  32. 2 3
      zzjs-service/src/main/java/com/miaxis/newgzpt/service/IGzptUserInfoService.java
  33. 58 0
      zzjs-service/src/main/java/com/miaxis/newgzpt/service/impl/GzptTrainRecordServiceImpl.java
  34. 1 1
      zzjs-service/src/main/java/com/miaxis/newgzpt/service/impl/GzptUserInfoServiceImpl.java
  35. 25 0
      zzjs-service/src/main/java/com/miaxis/newgzpt/vo/TrainCreditVO.java
  36. 25 0
      zzjs-service/src/main/java/com/miaxis/newgzpt/vo/TrainFinishKmVO.java
  37. 36 0
      zzjs-service/src/main/java/com/miaxis/newgzpt/vo/TrainFinishVO.java
  38. 9 0
      zzjs-service/src/main/java/com/miaxis/product/mapper/ProductTypeInfoMapper.java
  39. 15 0
      zzjs-service/src/main/java/com/miaxis/product/service/IProductTypeInfoService.java
  40. 65 0
      zzjs-service/src/main/java/com/miaxis/product/service/impl/ProductTypeInfoServiceImpl.java
  41. 55 0
      zzjs-service/src/main/java/com/miaxis/product/vo/AppletProductTypeInfoVo.java
  42. 41 0
      zzjs-service/src/main/java/com/miaxis/record/domain/BrowseRecordInfo.java
  43. 23 0
      zzjs-service/src/main/java/com/miaxis/record/mapper/BrowseRecordInfoMapper.java
  44. 44 0
      zzjs-service/src/main/java/com/miaxis/record/service/IBrowseRecordInfoService.java
  45. 113 0
      zzjs-service/src/main/java/com/miaxis/record/service/impl/BrowseRecordInfoServiceImpl.java
  46. 58 0
      zzjs-service/src/main/java/com/miaxis/record/vo/BrowseRecordCustomerVo.java
  47. 40 20
      zzjs-service/src/main/resources/mapper/customer/CustomerInfoMapper.xml
  48. 90 0
      zzjs-service/src/main/resources/mapper/newgzpt/GzptTrainRecordMapper.xml
  49. 15 0
      zzjs-service/src/main/resources/mapper/product/ProductTypeInfoMapper.xml
  50. 41 0
      zzjs-service/src/main/resources/mapper/record/BrowseRecordInfoMapper.xml

+ 6 - 3
zzjs-admin/src/main/java/com/miaxis/app/controller/collection/AppletCollectionInfoController.java

@@ -2,6 +2,7 @@ package com.miaxis.app.controller.collection;
 
 import com.miaxis.collection.service.ICollectionInfoService;
 import com.miaxis.collection.vo.CollectionCustomerVo;
+import com.miaxis.common.constant.Constants;
 import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.core.domain.entity.UserInfo;
@@ -22,7 +23,7 @@ import java.util.List;
  */
 @RestController
 @RequiredArgsConstructor
-@RequestMapping("/applet/collection")
+@RequestMapping(Constants.STUDENT_PREFIX+"/applet/collection")
 @Api(tags = {"【小程序-收藏管理】"})
 public class AppletCollectionInfoController extends BaseController {
 
@@ -67,10 +68,12 @@ public class AppletCollectionInfoController extends BaseController {
     @DeleteMapping(value = "/cancelCollection/{ids}")
     @ApiOperation("取消收藏")
     public Response cancelCollection(
-            @ApiParam(name = "ids", value = "收藏ids参数", required = true)
+            @ApiParam(name = "ids", value = "商家id", required = true)
             @PathVariable Long[] ids
     ){
-        return toResponse(collectionInfoService.removeByIds(Arrays.asList(ids)) ? 1 : 0);
+        //当前用户
+        UserInfo userInfo = SecurityUtils.getLoginUser().getStudent();
+        return collectionInfoService.removeCollectionByIds(userInfo.getId(),ids);
     }
 
 

+ 9 - 40
zzjs-admin/src/main/java/com/miaxis/app/controller/customer/AppletCustomerInfoController.java

@@ -1,10 +1,11 @@
 package com.miaxis.app.controller.customer;
 
-import com.miaxis.collection.service.ICollectionInfoService;
 import com.miaxis.common.constant.Constants;
 import com.miaxis.common.core.controller.BaseController;
+import com.miaxis.common.core.domain.entity.UserInfo;
 import com.miaxis.common.core.page.ResponsePageInfo;
-import com.miaxis.customer.domain.CustomerInfo;
+import com.miaxis.common.utils.SecurityUtils;
+import com.miaxis.customer.dto.AppletCustomerInfoDto;
 import com.miaxis.customer.service.ICustomerInfoService;
 import com.miaxis.customer.vo.ExhibitionCustomerInfoVo;
 import io.swagger.annotations.*;
@@ -29,51 +30,19 @@ public class AppletCustomerInfoController extends BaseController {
 
 
     /**
-     * 查询客户信息列表
-     */
-    @GetMapping("/list")
-    @ApiOperation("查询客户信息列表")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "pageNum", value = "当前页码", dataType = "int", paramType = "query", required = false),
-            @ApiImplicitParam(name = "pageSize", value = "每页数据量", dataType = "int", paramType = "query", required = false),
-    })
-    public ResponsePageInfo<CustomerInfo> list(@ModelAttribute CustomerInfo customerInfo) {
-        startPage();
-        List<CustomerInfo> list = customerInfoService.selectCustomerInfoList(customerInfo);
-        return toResponsePageInfo(list);
-    }
-
-
-    /**
-     * 查询所属品类商家
+     * 查询商家列表
      */
     @GetMapping(value = "/getCustomerListByProductId/{id}")
-    @ApiOperation("查询所属品类商家")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "pageNum", value = "当前页码", dataType = "int", paramType = "query", required = false),
-            @ApiImplicitParam(name = "pageSize", value = "每页数据量", dataType = "int", paramType = "query", required = false),
-    })
-    public ResponsePageInfo<ExhibitionCustomerInfoVo> getCustomerListByProductId(
-            @ApiParam(name = "id", value = "品类id", required = true)
-            @PathVariable("id") Long id
-    ) {
-        startPage();
-        List<ExhibitionCustomerInfoVo> list = customerInfoService.getCustomerListByProductId(id);
-        return toResponsePageInfo(list);
-    }
-
-    /**
-     * 查询精选商家列表 根据收藏数排行
-     */
-    @GetMapping(value = "/getCustomerListByCollectionCount")
-    @ApiOperation("查询精选商家列表")
+    @ApiOperation("查询商家列表")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "pageNum", value = "当前页码", dataType = "int", paramType = "query", required = false),
             @ApiImplicitParam(name = "pageSize", value = "每页数据量", dataType = "int", paramType = "query", required = false),
     })
-    public ResponsePageInfo<ExhibitionCustomerInfoVo> getCustomerListByCollectionCount() {
+    public ResponsePageInfo<ExhibitionCustomerInfoVo> getCustomerListByProductId(@ModelAttribute AppletCustomerInfoDto appletCustomerInfoDto) {
         startPage();
-        List<ExhibitionCustomerInfoVo> list = customerInfoService.getCustomerListByCollectionCount();
+        //获取当前用户
+        UserInfo userInfo = SecurityUtils.getLoginUser().getStudent();
+        List<ExhibitionCustomerInfoVo> list = customerInfoService.getCustomerListByProductId(appletCustomerInfoDto,userInfo.getId());
         return toResponsePageInfo(list);
     }
 

+ 128 - 0
zzjs-admin/src/main/java/com/miaxis/app/controller/gzpt/GzptTrainRecordController.java

@@ -0,0 +1,128 @@
+package com.miaxis.app.controller.gzpt;
+
+
+import com.miaxis.common.annotation.Log;
+import com.miaxis.common.constant.Constants;
+import com.miaxis.common.core.controller.BaseController;
+import com.miaxis.common.core.domain.Response;
+import com.miaxis.common.core.domain.entity.UserInfo;
+import com.miaxis.common.core.page.ResponsePageInfo;
+import com.miaxis.common.enums.BusinessTypeEnum;
+import com.miaxis.common.exception.CustomException;
+import com.miaxis.common.utils.SecurityUtils;
+import com.miaxis.newgzpt.domain.GzptTrainRecord;
+import com.miaxis.newgzpt.domain.GzptUserInfo;
+import com.miaxis.newgzpt.dto.TrainCreditDTO;
+import com.miaxis.newgzpt.dto.TrainFinishDTO;
+import com.miaxis.newgzpt.dto.TrainFinishKmDTO;
+import com.miaxis.newgzpt.service.IGzptTrainRecordService;
+import com.miaxis.newgzpt.service.IGzptUserInfoService;
+import com.miaxis.newgzpt.vo.TrainCreditVO;
+import com.miaxis.newgzpt.vo.TrainFinishKmVO;
+import com.miaxis.newgzpt.vo.TrainFinishVO;
+import com.miaxis.question.domain.QuestionError;
+import com.miaxis.question.dto.QuestionCollectionDto;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @since 2021-03-23
+ */
+@RestController
+@Api(tags = "【小程序-学时管理】")
+@RequestMapping(Constants.STUDENT_PREFIX+"/gzpt-train-record")
+public class GzptTrainRecordController extends BaseController {
+
+    @Resource
+    IGzptTrainRecordService gzptTrainRecordService;
+
+    @Autowired
+    private IGzptUserInfoService gzptUserInfoService;
+
+
+    /**
+     * 新增学时
+     */
+    @Log(title = "新增学时", businessType = BusinessTypeEnum.INSERT)
+    @PostMapping
+    @ApiOperation("新增学时")
+    public Response add(@RequestBody GzptTrainRecord gzptTrainRecord){
+
+        UserInfo student =  SecurityUtils.getLoginUser().getStudent();
+        GzptUserInfo gzptUserInfo = gzptUserInfoService.getInfoById(student.getGzptUserId());
+        if (gzptUserInfo == null) {
+            throw new CustomException("该用户未查到相关的学员信息");
+        }
+        gzptTrainRecord.setStudentId(gzptUserInfo.getOutId());
+        gzptTrainRecordService.saveGzptTrainRecord(gzptTrainRecord);
+        return Response.success();
+    }
+
+
+    @GetMapping("/getTrainFinishNew")
+    @ApiOperation("查询学员学时明细")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum",value = "当前页码" ,dataType = "int", paramType = "query", required = false),
+            @ApiImplicitParam(name = "pageSize",value = "每页数据量" , dataType = "int", paramType = "query", required = false),
+    })
+    public ResponsePageInfo<TrainFinishVO> getTrainFinishNew(){
+        startPage();
+        UserInfo student = SecurityUtils.getLoginUser().getStudent();
+        GzptUserInfo gzptUserInfo = gzptUserInfoService.getInfoById(student.getGzptUserId());
+        if (gzptUserInfo == null){
+            throw new CustomException("该学员计时账户不存在");
+        }
+
+        TrainFinishDTO trainFinishDTO = new TrainFinishDTO();
+        trainFinishDTO.setDqbh(gzptUserInfo.getCity());
+        trainFinishDTO.setStudentId(gzptUserInfo.getOutId());
+        List<TrainFinishVO> list = gzptTrainRecordService.getTrainFinishNew(trainFinishDTO);
+        return toResponsePageInfo(list);
+    }
+
+
+    @GetMapping("/getTrainFinishKm")
+    @ApiOperation("查询已完成科目学时")
+    public ResponsePageInfo<TrainFinishKmVO> getTrainFinishKm(){
+        startPage();
+        UserInfo student = SecurityUtils.getLoginUser().getStudent();
+        GzptUserInfo gzptUserInfo = gzptUserInfoService.getInfoById(student.getGzptUserId());
+        if (gzptUserInfo == null){
+            throw new CustomException("该学员计时账户不存在");
+        }
+        TrainFinishKmDTO trainFinishKmDTO = new TrainFinishKmDTO();
+        trainFinishKmDTO.setDqbh(gzptUserInfo.getCity());
+        trainFinishKmDTO.setStudentId(gzptUserInfo.getOutId());
+        List<TrainFinishKmVO> list = gzptTrainRecordService.getTrainFinishKm(trainFinishKmDTO);
+        return toResponsePageInfo(list);
+    }
+
+    @GetMapping("/getTrainSubjectCredit")
+    @ApiOperation("查询额定学时")
+    public ResponsePageInfo<TrainCreditVO> getTrainSubjectCredit(){
+        startPage();
+        UserInfo student = SecurityUtils.getLoginUser().getStudent();
+        GzptUserInfo gzptUserInfo = gzptUserInfoService.getInfoById(student.getGzptUserId());
+        if (gzptUserInfo == null){
+            throw new CustomException("该学员计时账户不存在");
+        }
+        TrainCreditDTO trainCreditDTO = new TrainCreditDTO();
+        trainCreditDTO.setDqbh(gzptUserInfo.getCity());
+        trainCreditDTO.setCx(gzptUserInfo.getCartype());
+        List<TrainCreditVO> list = gzptTrainRecordService.getTrainSubjectCredit(trainCreditDTO);
+        return toResponsePageInfo(list);
+    }
+
+}
+

+ 11 - 13
zzjs-admin/src/main/java/com/miaxis/app/controller/gzpt/GzptUserInfoController.java

@@ -1,22 +1,21 @@
 package com.miaxis.app.controller.gzpt;
 
 
+import com.miaxis.common.constant.Constants;
 import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.core.domain.entity.UserInfo;
-import com.miaxis.common.core.page.ResponsePageInfo;
 import com.miaxis.common.exception.CustomException;
 import com.miaxis.common.utils.SecurityUtils;
 import com.miaxis.newgzpt.domain.GzptUserInfo;
 import com.miaxis.newgzpt.dto.GzptUserInfoDTO;
 import com.miaxis.newgzpt.service.IGzptUserInfoService;
 import com.miaxis.user.service.IUserInfoService;
-import io.swagger.annotations.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
-
 /**
  * <p>
  * 学员基本信息表 前端控制器
@@ -26,7 +25,7 @@ import java.util.List;
  */
 @RestController
 @Api(tags = "【小程序-学员基本信息】")
-@RequestMapping("/gzpt/userInfo")
+@RequestMapping(Constants.STUDENT_PREFIX+"/gzpt/userInfo")
 public class GzptUserInfoController extends BaseController {
 
     @Autowired
@@ -40,13 +39,12 @@ public class GzptUserInfoController extends BaseController {
     /**
      * 获取用户id获取详细信息
      */
-    @GetMapping(value = "/ids/{id}")
+    @GetMapping
     @ApiOperation("获取学员详细信息")
-    public Response<GzptUserInfo> getInfo(
-            @ApiParam(name = "id", value = "用户信息参数", required = true)
-            @PathVariable("id") Long id
-    ){
-        return Response.success(gzptUserInfoService.getInfoById(id));
+    public Response<GzptUserInfo> getInfo(){
+
+        UserInfo userInfo = SecurityUtils.getLoginUser().getStudent();
+        return Response.success(gzptUserInfoService.getInfoById(userInfo.getGzptUserId()));
     }
 
 
@@ -55,10 +53,10 @@ public class GzptUserInfoController extends BaseController {
      */
     @PutMapping(value = "/bind")
     @ApiOperation("绑定学员账号")
-    public Response<GzptUserInfo> getUserWxlogin(@RequestBody GzptUserInfoDTO gzptUserInfoDTO){
+    public Response getUserWxlogin(@RequestBody GzptUserInfoDTO gzptUserInfoDTO){
         GzptUserInfo gzptUserInfo = gzptUserInfoService.getUserWxlogin(gzptUserInfoDTO);
         if (gzptUserInfo == null){
-            throw new CustomException("学员账户不存在或者密码错误");
+            throw new CustomException("学员账户不存在或者密码错误");
         }
         //绑定用户与学员关系
         UserInfo student = SecurityUtils.getLoginUser().getStudent();

+ 8 - 12
zzjs-admin/src/main/java/com/miaxis/app/controller/product/AppletProductTypeInfoController.java

@@ -3,14 +3,14 @@ package com.miaxis.app.controller.product;
 import com.miaxis.common.constant.Constants;
 import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.page.ResponsePageInfo;
-import com.miaxis.customer.service.ICustomerInfoService;
-import com.miaxis.customer.vo.CustomerInfoVo;
-import com.miaxis.product.domain.ProductTypeInfo;
 import com.miaxis.product.service.IProductTypeInfoService;
-import com.miaxis.product.vo.ProductTypeInfoVo;
-import io.swagger.annotations.*;
+import com.miaxis.product.vo.AppletProductTypeInfoVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
 
@@ -34,13 +34,9 @@ public class AppletProductTypeInfoController extends BaseController{
      */
     @GetMapping("/list")
     @ApiOperation("查询品类列表")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "pageNum",value = "当前页码" ,dataType = "int", paramType = "query", required = false),
-            @ApiImplicitParam(name = "pageSize",value = "每页数据量" , dataType = "int", paramType = "query", required = false),
-    })
-    public ResponsePageInfo<ProductTypeInfoVo> list(@ModelAttribute ProductTypeInfo productTypeInfo){
+    public ResponsePageInfo<AppletProductTypeInfoVo> list(){
         startPage();
-        List<ProductTypeInfoVo> list = productTypeInfoService.selectProductTypeInfoList(productTypeInfo);
+        List<AppletProductTypeInfoVo> list = productTypeInfoService.selectAppletProductTypeInfoList();
         return toResponsePageInfo(list);
     }
 

+ 2 - 1
zzjs-admin/src/main/java/com/miaxis/app/controller/question/QuestionCollectionController.java

@@ -1,6 +1,7 @@
 package com.miaxis.app.controller.question;
 
 import com.miaxis.common.annotation.Log;
+import com.miaxis.common.constant.Constants;
 import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.core.domain.entity.UserInfo;
@@ -25,7 +26,7 @@ import java.util.List;
  * @date 2021-03-18
  */
 @RestController
-@RequestMapping("/question/collection")
+@RequestMapping(Constants.STUDENT_PREFIX+"/question/collection")
 @Api(tags={"【小程序-题目收藏】"})
 public class QuestionCollectionController extends BaseController{
     @Autowired

+ 81 - 0
zzjs-admin/src/main/java/com/miaxis/app/controller/record/AppletBrowseRecordInfoController.java

@@ -0,0 +1,81 @@
+package com.miaxis.app.controller.record;
+
+import com.miaxis.common.annotation.Log;
+import com.miaxis.common.constant.Constants;
+import com.miaxis.common.core.controller.BaseController;
+import com.miaxis.common.core.domain.Response;
+import com.miaxis.common.core.domain.entity.UserInfo;
+import com.miaxis.common.core.page.ResponsePageInfo;
+import com.miaxis.common.enums.BusinessTypeEnum;
+import com.miaxis.common.utils.SecurityUtils;
+import com.miaxis.customer.vo.BrowseRecordCustomerInfoVo;
+import com.miaxis.record.service.IBrowseRecordInfoService;
+import com.miaxis.record.vo.BrowseRecordCustomerVo;
+import io.swagger.annotations.*;
+import lombok.RequiredArgsConstructor;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 【浏览记录】Controller
+ *
+ * @author miaxis
+ * @date 2021-03-23
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping(Constants.STUDENT_PREFIX+"/applet/record/info")
+@Api(tags={"【小程序-浏览记录】"})
+public class AppletBrowseRecordInfoController extends BaseController{
+
+    private final IBrowseRecordInfoService browseRecordInfoService;
+
+    private final RedisTemplate redisTemplate;
+
+    /**
+     * 查询浏览记录列表
+     */
+    @GetMapping("/getBrowseRecordInfoList")
+    @ApiOperation("查询浏览记录列表")
+    public ResponsePageInfo<BrowseRecordCustomerInfoVo> getBrowseRecordInfoList(){
+        //当前用户
+        UserInfo userInfo = SecurityUtils.getLoginUser().getStudent();
+        List<BrowseRecordCustomerInfoVo> list = browseRecordInfoService.getBrowseRecordInfoList(userInfo);
+        return toResponsePageInfo(list);
+    }
+
+
+    /**
+     * 新增浏览记录
+     */
+    @PutMapping(value = "/insertBrowseRecord/{id}")
+    @ApiOperation("新增浏览记录")
+    public Response insertBrowseRecord(
+            @ApiParam(name = "id",value = "商家id",required = true)
+            @PathVariable("id") Long id
+    ){
+        //当前用户
+        UserInfo userInfo = SecurityUtils.getLoginUser().getStudent();
+        return browseRecordInfoService.insertBrowseRecord(userInfo,id);
+    }
+
+
+    /**
+     * 删除浏览记录
+     */
+    @Log(title = "浏览记录", businessType = BusinessTypeEnum.DELETE)
+	@DeleteMapping("/{ids}")
+    @ApiOperation("删除浏览记录")
+    public  Response remove(
+            @ApiParam(name = "ids", value = "商家ids参数", required = true)
+            @PathVariable Long[] ids
+    ){
+        //当前用户
+        UserInfo userInfo = SecurityUtils.getLoginUser().getStudent();
+        return browseRecordInfoService.removeBrowseRecord(userInfo,ids);
+    }
+
+}

+ 2 - 2
zzjs-admin/src/main/java/com/miaxis/pc/controller/product/ProductTypeInfoController.java

@@ -66,8 +66,8 @@ public class ProductTypeInfoController extends BaseController{
     @Log(title = "品类", businessType = BusinessTypeEnum.INSERT)
     @PostMapping
     @ApiOperation("新增品类")
-    public Response<Integer> add(@RequestBody ProductTypeInfo productTypeInfo){
-        return toResponse(productTypeInfoService.save(productTypeInfo) ? 1 : 0);
+    public Response add(@RequestBody ProductTypeInfo productTypeInfo){
+        return productTypeInfoService.saveProductTypeInfo(productTypeInfo);
     }
 
     /**

+ 9 - 9
zzjs-admin/src/main/resources/application-prod.yml

@@ -2,20 +2,20 @@
 spring:
     datasource:
         type: com.alibaba.druid.pool.DruidDataSource
-        driverClassName: com.mysql.cj.jdbc.Driver
+#        driverClassName: com.mysql.cj.jdbc.Driver
         druid:
             # 主库数据源
             master:
-                url: jdbc:mysql://218.85.55.253:3306/zzjs?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
+                url: jdbc:mysql://47.96.83.13:3306/zzjs?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
                 username: root
-                password: 123456
+                password: miaxis110
             # 从库数据源
-            slave:
+            newgzpt:
                 # 从数据源开关/默认关闭
-                enabled: false
-                url:
-                username:
-                password:
+                enabled: true
+                url: jdbc:oracle:thin:@47.99.70.145:1521:orcl
+                username: newgzpt
+                password: newgzpt2016
             # 初始连接数
             initialSize: 5
             # 最小连接池数量
@@ -58,7 +58,7 @@ spring:
     # redis 配置
     redis:
         # 地址
-        host: 127.0.0.1
+        host: 47.96.83.13
         # 端口,默认为6379
         port: 6379
         # 密码

+ 5 - 0
zzjs-common/src/main/java/com/miaxis/common/constant/Constants.java

@@ -132,6 +132,11 @@ public class Constants
      */
     public static final String SYS_DICT_KEY = "sys_dict:";
 
+    /**
+     * 浏览记录 cache key
+     */
+    public static final String BROWSE_RECORD_KEY = "browse_record:";
+
     /**
      * 资源映射路径 前缀
      */

+ 1 - 1
zzjs-framework/src/main/java/com/miaxis/framework/config/ResourcesConfig.java

@@ -29,7 +29,7 @@ public class ResourcesConfig implements WebMvcConfigurer
     {
         /** 本地文件上传路径 */
         registry.addResourceHandler(Constants.RESOURCE_PREFIX + "/**").addResourceLocations("file:" + MiaxisConfig.getProfile() + "/");
-
+        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
         /** swagger配置 */
         registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
         registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");

+ 2 - 1
zzjs-framework/src/main/java/com/miaxis/framework/config/SecurityConfig.java

@@ -110,7 +110,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                         "/*.html",
                         "/**/*.html",
                         "/**/*.css",
-                        "/**/*.js"
+                        "/**/*.js",
+                        "/static/**"
                 ).permitAll()
                 .antMatchers("/profile/**").anonymous()
                 .antMatchers("/common/download**").anonymous()

+ 7 - 0
zzjs-service/src/main/java/com/miaxis/collection/service/ICollectionInfoService.java

@@ -32,4 +32,11 @@ public interface ICollectionInfoService extends IService<CollectionInfo> {
      */
     Response collectionBusiness(UserInfo userInfo, Long id);
 
+    /**
+     * 取消收藏
+     * @param userId
+     * @param ids
+     * @return
+     */
+    Response removeCollectionByIds(Long userId,Long[] ids);
 }

+ 41 - 7
zzjs-service/src/main/java/com/miaxis/collection/service/impl/CollectionInfoServiceImpl.java

@@ -7,12 +7,14 @@ import com.miaxis.collection.service.ICollectionInfoService;
 import com.miaxis.collection.vo.CollectionCustomerVo;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.core.domain.entity.UserInfo;
+import com.miaxis.common.exception.CustomException;
 import com.miaxis.customer.mapper.CustomerInfoMapper;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -48,15 +50,47 @@ public class CollectionInfoServiceImpl extends ServiceImpl<CollectionInfoMapper,
      * @return
      */
     @Override
-    @SneakyThrows
     @Transactional(rollbackFor = Exception.class)
     public Response collectionBusiness(UserInfo userInfo, Long id) {
-        //保存收藏表
-        CollectionInfo collectionInfo = new CollectionInfo();
-        collectionInfo.setUserId(userInfo.getId());
-        collectionInfo.setCustomerId(id);
-        collectionInfoMapper.insert(collectionInfo);
-        return Response.success();
+        try{
+            List<CollectionInfo> infoList = collectionInfoMapper.selectByMap(new HashMap<String, Object>() {{
+                put("user_id", userInfo.getId());
+                put("customer_id", id);
+            }});
+            if (infoList.isEmpty()){
+                //保存收藏表
+                CollectionInfo collectionInfo = new CollectionInfo();
+                collectionInfo.setUserId(userInfo.getId());
+                collectionInfo.setCustomerId(id);
+                collectionInfoMapper.insert(collectionInfo);
+            }
+            return Response.success();
+        }catch (Exception e){
+            throw new CustomException("系统异常");
+        }
+    }
+
+    /**
+     * 取消收藏
+     * @param userId 当前用户id
+     * @param ids 商家id
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Response removeCollectionByIds(Long userId, Long[] ids) {
+        try{
+            for (Long id : ids) {
+                collectionInfoMapper.deleteByMap(new HashMap<String, Object>(){{
+                    put("user_id",userId);
+                    put("customer_id",id);
+                }});
+            }
+            return Response.success();
+        }catch (Exception e){
+            throw new CustomException("系统异常");
+        }
+
     }
 
 

+ 5 - 0
zzjs-service/src/main/java/com/miaxis/customer/domain/CustomerInfo.java

@@ -56,6 +56,11 @@ public class CustomerInfo extends BaseBusinessEntity{
     @ApiModelProperty(value = "所在城市编码(对应城市表)")
     private String cityCode;
 
+    @Excel(name = "区域编码")
+    @TableField("area_code")
+    @ApiModelProperty(value = "区域编码")
+    private String areaCode;
+
     /** 归属人员--关联用户表 */
     @Excel(name = "归属人员--关联用户表")
     @TableField("attributed_personnel")

+ 28 - 0
zzjs-service/src/main/java/com/miaxis/customer/dto/AppletCustomerInfoDto.java

@@ -0,0 +1,28 @@
+package com.miaxis.customer.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * applet客户信息对象入参
+ *
+ * @author miaxis
+ * @date 2021-03-15
+ */
+@Data
+@ApiModel(value = "AppletCustomerInfoDto", description = "applet客户信息对象入参")
+public class AppletCustomerInfoDto implements Serializable {
+
+    @ApiModelProperty(value = "品类id(0:精选)")
+    private Long id;
+
+    @ApiModelProperty(value = "父id")
+    private Long pid;
+
+    @ApiModelProperty(value = "商家名称")
+    private String customerName;
+
+}

+ 12 - 8
zzjs-service/src/main/java/com/miaxis/customer/mapper/CustomerInfoMapper.java

@@ -4,6 +4,8 @@ import java.util.List;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.miaxis.collection.vo.CollectionCustomerVo;
 import com.miaxis.customer.domain.CustomerInfo;
+import com.miaxis.customer.dto.AppletCustomerInfoDto;
+import com.miaxis.customer.vo.BrowseRecordCustomerInfoVo;
 import com.miaxis.customer.vo.CustomerInfoVo;
 import com.miaxis.customer.vo.ExhibitionCustomerInfoVo;
 import org.apache.ibatis.annotations.Param;
@@ -32,17 +34,12 @@ public interface CustomerInfoMapper extends BaseMapper<CustomerInfo> {
     CustomerInfoVo getCustomerById(@Param("id") Long id);
 
     /**
-     * 查询所属品类商家
-     * @param productId
+     * 查询商家列表
+     * @param userId
      * @return
      */
-    List<ExhibitionCustomerInfoVo> getCustomerListByProductId(@Param("productId") Long productId);
+    List<ExhibitionCustomerInfoVo> getCustomerListByProductId(@Param("userId")Long userId, @Param("customerInfoDto") AppletCustomerInfoDto customerInfoDto);
 
-    /**
-     * 查询精选商家列表 根据收藏数排行
-     * @return
-     */
-    List<ExhibitionCustomerInfoVo> getCustomerListByCollectionCount();
 
     /**
      * 查询用户收藏列表
@@ -50,4 +47,11 @@ public interface CustomerInfoMapper extends BaseMapper<CustomerInfo> {
      * @return
      */
     List<CollectionCustomerVo> getCollectionList(@Param("id")Long id);
+
+    /**
+     * 查询商家详情
+     * @param id 商家id
+     * @return
+     */
+    BrowseRecordCustomerInfoVo getCustomerDetailsById(@Param("id")Long id);
 }

+ 5 - 9
zzjs-service/src/main/java/com/miaxis/customer/service/ICustomerInfoService.java

@@ -3,6 +3,7 @@ package com.miaxis.customer.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.customer.domain.CustomerInfo;
+import com.miaxis.customer.dto.AppletCustomerInfoDto;
 import com.miaxis.customer.vo.CustomerInfoVo;
 import com.miaxis.customer.vo.ExhibitionCustomerInfoVo;
 
@@ -48,17 +49,12 @@ public interface ICustomerInfoService extends IService<CustomerInfo>{
 
     /**
      * applet
-     * 查询所属品类商家
-     * @param productId
+     * 查询商家列表
+     * @param appletCustomerInfoDto
+     * @param userId
      * @return
      */
-    List<ExhibitionCustomerInfoVo> getCustomerListByProductId(Long productId);
+    List<ExhibitionCustomerInfoVo> getCustomerListByProductId(AppletCustomerInfoDto appletCustomerInfoDto, Long userId);
 
 
-    /**
-     * 查询精选商家列表 根据收藏数排行
-     * @return
-     */
-    List<ExhibitionCustomerInfoVo> getCustomerListByCollectionCount();
-
 }

+ 15 - 15
zzjs-service/src/main/java/com/miaxis/customer/service/impl/CustomerInfoServiceImpl.java

@@ -2,18 +2,25 @@ package com.miaxis.customer.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.customer.domain.CustomerInfo;
+import com.miaxis.customer.dto.AppletCustomerInfoDto;
 import com.miaxis.customer.mapper.CustomerInfoMapper;
 import com.miaxis.customer.service.ICustomerInfoService;
 import com.miaxis.customer.vo.CustomerInfoVo;
 import com.miaxis.customer.vo.ExhibitionCustomerInfoVo;
+import com.miaxis.product.domain.ProductTypeInfo;
+import com.miaxis.product.mapper.ProductTypeInfoMapper;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 客户信息Service业务层处理
@@ -27,6 +34,8 @@ public class CustomerInfoServiceImpl extends ServiceImpl<CustomerInfoMapper, Cus
 
     private final CustomerInfoMapper customerInfoMapper;
 
+    private final ProductTypeInfoMapper productTypeInfoMapper;
+
 
     /**
      * 查询客户信息列表
@@ -83,26 +92,17 @@ public class CustomerInfoServiceImpl extends ServiceImpl<CustomerInfoMapper, Cus
 
     /**
      * applet
-     * 查询所属品类商家
-     * @param productId
+     * 查询商家列表
+     * @param appletCustomerInfoDto
+     * @param userId
      * @return
      */
     @Override
-    public List<ExhibitionCustomerInfoVo> getCustomerListByProductId(Long productId) {
-        return customerInfoMapper.getCustomerListByProductId(productId);
-    }
-
+    public List<ExhibitionCustomerInfoVo> getCustomerListByProductId(AppletCustomerInfoDto appletCustomerInfoDto, Long userId) {
 
-
-    /**
-     * applet
-     * 查询精选商家列表 根据收藏数排行
-     * @return
-     */
-    @Override
-    public List<ExhibitionCustomerInfoVo> getCustomerListByCollectionCount() {
-        return customerInfoMapper.getCustomerListByCollectionCount();
+        return customerInfoMapper.getCustomerListByProductId(userId,appletCustomerInfoDto);
     }
 
 
+
 }

+ 57 - 0
zzjs-service/src/main/java/com/miaxis/customer/vo/BrowseRecordCustomerInfoVo.java

@@ -0,0 +1,57 @@
+package com.miaxis.customer.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 浏览记录客户信息对象返回参
+ *
+ * @author miaxis
+ * @date 2021-03-15
+ */
+@Data
+@ApiModel(value = "BrowseRecordCustomerInfoVo", description = "浏览记录客户信息对象返回参")
+public class BrowseRecordCustomerInfoVo implements Serializable {
+
+    @TableId(value = "id")
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @TableField("corporate_name")
+    @ApiModelProperty(value = "公司名称")
+    private String corporateName;
+
+    @ApiModelProperty(value = "公司LOGO图片访问地址")
+    private String corporateLogoFileUrl;
+
+    @TableField("applet_address")
+    @ApiModelProperty(value = "小程序地址")
+    private String appletAddress;
+
+    @ApiModelProperty(value = "小程序图标访问地址")
+    private String appletLogoFileUrl;
+
+    @ApiModelProperty(value = "小程序二维码访问地址")
+    private String appletQrCodeFileUrl;
+
+    @TableField("applet_introduce")
+    @ApiModelProperty(value = "小程序介绍")
+    private String appletIntroduce;
+
+    @TableField("status")
+    @ApiModelProperty(value = "状态  0:有效(默认)、1:失效 (伪删除)")
+    private Integer status;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" )
+    @ApiModelProperty(value = "浏览时间" ,hidden = true)
+    private Date browseTime;
+
+}

+ 4 - 0
zzjs-service/src/main/java/com/miaxis/customer/vo/CustomerInfoVo.java

@@ -45,6 +45,10 @@ public class CustomerInfoVo extends BaseBusinessEntity{
     @ApiModelProperty(value = "所在城市编码(对应城市表)")
     private String cityCode;
 
+    @TableField("area_code")
+    @ApiModelProperty(value = "区域编码(对应城市表)")
+    private String areaCode;
+
     @TableField("attributed_personnel")
     @ApiModelProperty(value = "归属人员--关联用户表")
     private Long attributedPersonnel;

+ 3 - 0
zzjs-service/src/main/java/com/miaxis/customer/vo/ExhibitionCustomerInfoVo.java

@@ -49,5 +49,8 @@ public class ExhibitionCustomerInfoVo extends BaseBusinessEntity{
     @ApiModelProperty(value = "收藏数量")
     private Integer collectionCount;
 
+    @ApiModelProperty(value = "是否收藏 0:未收藏 1:已收藏")
+    private String collectionStatus;
+
 
 }

+ 3 - 3
zzjs-service/src/main/java/com/miaxis/generator/CodeGenerator.java

@@ -60,11 +60,11 @@ public class CodeGenerator {
 //        dsc.setPassword("cj1234");
 
 
-        dsc.setUrl("jdbc:oracle:thin:@47.99.70.145:1521:orcl");
+        dsc.setUrl("jdbc:oracle:thin:@112.124.201.153:1521:orcl");
         // dsc.setSchemaName("public");
         dsc.setDriverName("oracle.jdbc.driver.OracleDriver");
-        dsc.setUsername("newgzpt");
-        dsc.setPassword("newgzpt2016");
+        dsc.setUsername("tms_xm");
+        dsc.setPassword("tms_xm2017");
         //master
 //        dsc.setUrl("jdbc:mysql://172.16.18.112:3306/xiaodao?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true");
 //        dsc.setDriverName("com.mysql.cj.jdbc.Driver");

+ 74 - 0
zzjs-service/src/main/java/com/miaxis/newgzpt/domain/GzptTrainRecord.java

@@ -0,0 +1,74 @@
+package com.miaxis.newgzpt.domain;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author ${author}
+ * @since 2021-03-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("GZPT_TRAIN_RECORD")
+@ApiModel(value="GzptTrainRecord对象", description="")
+public class GzptTrainRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId("ID")
+    @ApiModelProperty(hidden = true)
+    private Long id;
+
+    @ApiModelProperty(value = "学员ID",hidden = true)
+    @TableField("STUDENT_ID")
+    private Long studentId;
+
+    @ApiModelProperty(value = "训练开始时间")
+    @TableField("BEGIN_TIME")
+    private String beginTime;
+
+    @ApiModelProperty(value = "训练结束时间")
+    @TableField("END_TIME")
+    private String endTime;
+
+    @ApiModelProperty(value = "训练类型 android,ios,网上训练")
+    @TableField("TRAIN_TYPE")
+    private String trainType;
+
+    @ApiModelProperty(value = "训练总时间")
+    @TableField("TRAIN_TIME")
+    private String trainTime;
+
+    @ApiModelProperty(value = "0 未处理 1 传送成功 2 训练中将无法同步  4学时验证不合格  5部分传输成功 6 异常数据")
+    @TableField("IS_SUBMIT")
+    private String isSubmit;
+
+    @ApiModelProperty(value = "1:科目一理论 4:科目四理论")
+    @TableField("PXKM")
+    private Integer pxkm;
+
+    @ApiModelProperty(value = "数据来源 1 远程 2 课堂 2018-03-19 新增")
+    @TableField("SOURCE")
+    private Integer source;
+
+    @ApiModelProperty(value = "未成功或部分未成功原因")
+    @TableField("REASON")
+    private String reason;
+
+    @ApiModelProperty(value = "课堂ID")
+    @TableField("CLASSID")
+    private String classid;
+
+
+}

+ 4 - 4
zzjs-service/src/main/java/com/miaxis/newgzpt/domain/GzptUserInfo.java

@@ -105,7 +105,7 @@ public class GzptUserInfo implements Serializable {
 
     @ApiModelProperty(value = "外部系统主健ID 如果platForm=1")
     @TableField("OUT_ID")
-    private BigDecimal outId;
+    private Long outId;
 
     @ApiModelProperty(value = "系统版本号 软件版本号")
     @TableField("VERSION")
@@ -125,7 +125,7 @@ public class GzptUserInfo implements Serializable {
 
     @ApiModelProperty(value = "培训阶段 1、第一阶段 2、第二阶段 3、第三阶段 4、第四阶段")
     @TableField("PXJD")
-    private BigDecimal pxjd;
+    private Integer pxjd;
 
     @ApiModelProperty(value = "MD5加密的支付密码")
     @TableField("PAY_PWD")
@@ -136,11 +136,11 @@ public class GzptUserInfo implements Serializable {
 
     @ApiModelProperty(value = "模拟训练激活状态 0 未激活 1 已激活")
     @TableField("MN_STATUS")
-    private BigDecimal mnStatus;
+    private Integer mnStatus;
 
     @ApiModelProperty(value = "远程教育激活状态 0 未激活 1 已激活")
     @TableField("EDU_STATUS")
-    private BigDecimal eduStatus;
+    private Integer eduStatus;
 
     @ApiModelProperty(value = "小程序openin")
     @TableField("OPEN_ID")

+ 28 - 0
zzjs-service/src/main/java/com/miaxis/newgzpt/dto/TrainCreditDTO.java

@@ -0,0 +1,28 @@
+package com.miaxis.newgzpt.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 学员基本信息表
+ * </p>
+ *
+ * @author ${author}
+ * @since 2021-03-09
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TrainCreditDTO implements Serializable {
+
+    @ApiModelProperty(value = "车型")
+    private String cx;
+
+    @ApiModelProperty(value = "地区编号")
+    private String dqbh;
+
+}

+ 32 - 0
zzjs-service/src/main/java/com/miaxis/newgzpt/dto/TrainFinishDTO.java

@@ -0,0 +1,32 @@
+package com.miaxis.newgzpt.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 学员基本信息表
+ * </p>
+ *
+ * @author ${author}
+ * @since 2021-03-09
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TrainFinishDTO implements Serializable {
+
+    @ApiModelProperty(value = "学员studentId")
+    private long studentId;
+
+    @ApiModelProperty(value = "科目")
+    private String trainSubject;
+
+    @ApiModelProperty(value = "地区编号")
+    private String dqbh;
+
+}

+ 28 - 0
zzjs-service/src/main/java/com/miaxis/newgzpt/dto/TrainFinishKmDTO.java

@@ -0,0 +1,28 @@
+package com.miaxis.newgzpt.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 学员基本信息表
+ * </p>
+ *
+ * @author ${author}
+ * @since 2021-03-09
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TrainFinishKmDTO implements Serializable {
+
+    @ApiModelProperty(value = "学员studentId")
+    private long studentId;
+
+    @ApiModelProperty(value = "地区编号")
+    private String dqbh;
+
+}

+ 31 - 0
zzjs-service/src/main/java/com/miaxis/newgzpt/mapper/GzptTrainRecordMapper.java

@@ -0,0 +1,31 @@
+package com.miaxis.newgzpt.mapper;
+
+import com.miaxis.newgzpt.domain.GzptTrainRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.miaxis.newgzpt.dto.TrainCreditDTO;
+import com.miaxis.newgzpt.dto.TrainFinishDTO;
+import com.miaxis.newgzpt.dto.TrainFinishKmDTO;
+import com.miaxis.newgzpt.vo.TrainCreditVO;
+import com.miaxis.newgzpt.vo.TrainFinishKmVO;
+import com.miaxis.newgzpt.vo.TrainFinishVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2021-03-23
+ */
+public interface GzptTrainRecordMapper extends BaseMapper<GzptTrainRecord> {
+
+    void saveGzptTrainRecord(GzptTrainRecord gzptTrainRecord);
+
+    List<TrainFinishVO> getTrainFinishNew(TrainFinishDTO trainFinishDTO);
+
+    List<TrainFinishKmVO> getTrainFinishKm(TrainFinishKmDTO trainFinishKmDTO);
+
+    List<TrainCreditVO> getTrainSubjectCredit(TrainCreditDTO trainCreditDTO);
+}

+ 1 - 1
zzjs-service/src/main/java/com/miaxis/newgzpt/mapper/GzptUserInfoMapper.java

@@ -20,5 +20,5 @@ public interface GzptUserInfoMapper extends BaseMapper<GzptUserInfo> {
 
     GzptUserInfo getUserByWxlogin(GzptUserInfoDTO gzptUserInfoDTO);
 
-    GzptUserInfo getInfoById(Long id);
+    GzptUserInfo getInfoById(Integer id);
 }

+ 31 - 0
zzjs-service/src/main/java/com/miaxis/newgzpt/service/IGzptTrainRecordService.java

@@ -0,0 +1,31 @@
+package com.miaxis.newgzpt.service;
+
+import com.miaxis.newgzpt.domain.GzptTrainRecord;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.miaxis.newgzpt.dto.TrainCreditDTO;
+import com.miaxis.newgzpt.dto.TrainFinishDTO;
+import com.miaxis.newgzpt.dto.TrainFinishKmDTO;
+import com.miaxis.newgzpt.vo.TrainCreditVO;
+import com.miaxis.newgzpt.vo.TrainFinishKmVO;
+import com.miaxis.newgzpt.vo.TrainFinishVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2021-03-23
+ */
+public interface IGzptTrainRecordService extends IService<GzptTrainRecord> {
+
+    void saveGzptTrainRecord(GzptTrainRecord gzptTrainRecord);
+
+    List<TrainFinishVO> getTrainFinishNew(TrainFinishDTO trainFinishDTO);
+
+    List<TrainFinishKmVO> getTrainFinishKm(TrainFinishKmDTO trainFinishKmDTO);
+
+    List<TrainCreditVO> getTrainSubjectCredit(TrainCreditDTO trainCreditDTO);
+}

+ 2 - 3
zzjs-service/src/main/java/com/miaxis/newgzpt/service/IGzptUserInfoService.java

@@ -1,9 +1,8 @@
 package com.miaxis.newgzpt.service;
 
-import com.miaxis.newgzpt.domain.GzptUserInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.miaxis.newgzpt.domain.GzptUserInfo;
 import com.miaxis.newgzpt.dto.GzptUserInfoDTO;
-import com.miaxis.system.dto.system.UserInfoDTO;
 
 import java.util.List;
 
@@ -22,5 +21,5 @@ public interface IGzptUserInfoService extends IService<GzptUserInfo> {
 
     GzptUserInfo getUserWxlogin(GzptUserInfoDTO userInfoDTO);
 
-    GzptUserInfo getInfoById(Long id);
+    GzptUserInfo getInfoById(Integer id);
 }

+ 58 - 0
zzjs-service/src/main/java/com/miaxis/newgzpt/service/impl/GzptTrainRecordServiceImpl.java

@@ -0,0 +1,58 @@
+package com.miaxis.newgzpt.service.impl;
+
+import com.miaxis.common.annotation.DataSource;
+import com.miaxis.common.enums.DataSourceTypeEnum;
+import com.miaxis.newgzpt.domain.GzptTrainRecord;
+import com.miaxis.newgzpt.dto.TrainCreditDTO;
+import com.miaxis.newgzpt.dto.TrainFinishDTO;
+import com.miaxis.newgzpt.dto.TrainFinishKmDTO;
+import com.miaxis.newgzpt.mapper.GzptTrainRecordMapper;
+import com.miaxis.newgzpt.service.IGzptTrainRecordService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.miaxis.newgzpt.vo.TrainCreditVO;
+import com.miaxis.newgzpt.vo.TrainFinishKmVO;
+import com.miaxis.newgzpt.vo.TrainFinishVO;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2021-03-23
+ */
+@Service
+@DataSource(value = DataSourceTypeEnum.NEWGZPT)
+public class GzptTrainRecordServiceImpl extends ServiceImpl<GzptTrainRecordMapper, GzptTrainRecord> implements IGzptTrainRecordService {
+
+
+    @Resource
+    GzptTrainRecordMapper gzptTrainRecordMapper;
+
+
+    @Override
+    public void saveGzptTrainRecord(GzptTrainRecord gzptTrainRecord) {
+
+        gzptTrainRecordMapper.saveGzptTrainRecord(gzptTrainRecord);
+    }
+
+    @Override
+    public List<TrainFinishVO> getTrainFinishNew(TrainFinishDTO trainFinishDTO) {
+        return gzptTrainRecordMapper.getTrainFinishNew(trainFinishDTO);
+    }
+
+    @Override
+    public List<TrainFinishKmVO> getTrainFinishKm(TrainFinishKmDTO trainFinishKmDTO) {
+        return gzptTrainRecordMapper.getTrainFinishKm(trainFinishKmDTO);
+    }
+
+
+    @Override
+    public List<TrainCreditVO> getTrainSubjectCredit(TrainCreditDTO trainCreditDTO) {
+        return gzptTrainRecordMapper.getTrainSubjectCredit(trainCreditDTO);
+    }
+}

+ 1 - 1
zzjs-service/src/main/java/com/miaxis/newgzpt/service/impl/GzptUserInfoServiceImpl.java

@@ -42,7 +42,7 @@ public class GzptUserInfoServiceImpl extends ServiceImpl<GzptUserInfoMapper, Gzp
     }
 
     @Override
-    public GzptUserInfo getInfoById(Long id) {
+    public GzptUserInfo getInfoById(Integer id) {
         return  mapper.getInfoById(id);
     }
 }

+ 25 - 0
zzjs-service/src/main/java/com/miaxis/newgzpt/vo/TrainCreditVO.java

@@ -0,0 +1,25 @@
+package com.miaxis.newgzpt.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TrainCreditVO {
+
+    @ApiModelProperty(value = "科目序号")
+    private String subject; //科目序号
+
+    @ApiModelProperty(value = "所属科目")
+    private String applySubject; //所属科目
+
+    @ApiModelProperty(value = "科目名称")
+    private String subjectName; //科目名称
+
+    @ApiModelProperty(value = "车型")
+    private String carType; //车型
+
+    @ApiModelProperty(value = "定额公里数")
+    private Integer ration; //定额公里数
+}

+ 25 - 0
zzjs-service/src/main/java/com/miaxis/newgzpt/vo/TrainFinishKmVO.java

@@ -0,0 +1,25 @@
+package com.miaxis.newgzpt.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TrainFinishKmVO {
+
+
+    @ApiModelProperty(value = "学时ID")
+    private Integer km1; //科目一
+
+    @ApiModelProperty(value = "开始时间")
+    private Integer km2; //科目二
+
+    @ApiModelProperty(value = "结束时间")
+    private Integer km3;   //科目三
+
+    @ApiModelProperty(value = "培训学时 单位min")
+    private Integer km4;  //科目四
+
+
+}

+ 36 - 0
zzjs-service/src/main/java/com/miaxis/newgzpt/vo/TrainFinishVO.java

@@ -0,0 +1,36 @@
+package com.miaxis.newgzpt.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TrainFinishVO {
+
+
+    @ApiModelProperty(value = "学时ID")
+    private long id; //学时ID
+
+    @ApiModelProperty(value = "开始时间")
+    private String startTime; //开始时间
+
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;   //结束时间
+
+    @ApiModelProperty(value = "培训学时 单位min")
+    private Integer duration;  //培训学时 单位min
+
+    @ApiModelProperty(value = "有效学时分钟数")
+    private Integer vaildTime;  //有效学时分钟数
+
+    @ApiModelProperty(value = "培训阶段(1:第一部分2:第二部分3:第三部分4:第四部分)")
+    private Integer trainSubject; //培训阶段(1:第一部分2:第二部分3:第三部分4:第四部分)
+
+    @ApiModelProperty(value = "课程编码 1-实操,2-课堂教学,3-模拟器教学,4-远程教学")
+    private Integer pxkmType; //课程编码 1-实操,2-课堂教学,3-模拟器教学,4-远程教学;
+
+    @ApiModelProperty(value = "课堂ID")
+    private String classId; // 课堂ID 标识学员的一次培训过程,计时终端自行使用 关联学时明细表(电子教学日志编号 平台自主编号)
+
+}

+ 9 - 0
zzjs-service/src/main/java/com/miaxis/product/mapper/ProductTypeInfoMapper.java

@@ -3,6 +3,7 @@ package com.miaxis.product.mapper;
 import java.util.List;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.miaxis.product.domain.ProductTypeInfo;
+import com.miaxis.product.vo.AppletProductTypeInfoVo;
 import com.miaxis.product.vo.ProductTypeInfoVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -27,4 +28,12 @@ public interface ProductTypeInfoMapper extends BaseMapper<ProductTypeInfo> {
      * @return
      */
     ProductTypeInfoVo getProductDetailsById(@Param("id") Long id);
+
+    /**
+     * applet
+     * 查询品类列表
+     * @return 品类集合
+     */
+    List<AppletProductTypeInfoVo> selectAppletProductTypeInfoList();
+
 }

+ 15 - 0
zzjs-service/src/main/java/com/miaxis/product/service/IProductTypeInfoService.java

@@ -3,6 +3,7 @@ package com.miaxis.product.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.product.domain.ProductTypeInfo;
+import com.miaxis.product.vo.AppletProductTypeInfoVo;
 import com.miaxis.product.vo.ProductTypeInfoVo;
 
 import java.util.List;
@@ -35,4 +36,18 @@ public interface IProductTypeInfoService extends IService<ProductTypeInfo>{
      * @return
      */
     Response<ProductTypeInfoVo> getProductDetailsById(Long id);
+
+    /**
+     * 新增品类
+     * @param productTypeInfo
+     * @return
+     */
+    Response saveProductTypeInfo(ProductTypeInfo productTypeInfo);
+
+    /**
+     * applet
+     * 分类列表
+     * @return
+     */
+    List<AppletProductTypeInfoVo> selectAppletProductTypeInfoList();
 }

+ 65 - 0
zzjs-service/src/main/java/com/miaxis/product/service/impl/ProductTypeInfoServiceImpl.java

@@ -4,18 +4,24 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.miaxis.common.core.domain.Response;
+import com.miaxis.common.exception.CustomException;
+import com.miaxis.common.utils.bean.BeanUtils;
 import com.miaxis.customer.domain.CustomerInfo;
 import com.miaxis.customer.service.ICustomerInfoService;
 import com.miaxis.customer.vo.CustomerInfoVo;
 import com.miaxis.product.domain.ProductTypeInfo;
 import com.miaxis.product.mapper.ProductTypeInfoMapper;
 import com.miaxis.product.service.IProductTypeInfoService;
+import com.miaxis.product.vo.AppletProductTypeInfoVo;
 import com.miaxis.product.vo.ProductTypeInfoVo;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -68,4 +74,63 @@ public class ProductTypeInfoServiceImpl extends ServiceImpl<ProductTypeInfoMappe
 
         return Response.success(productTypeInfoMapper.getProductDetailsById(id));
     }
+
+    /**
+     * 新增品类
+     * @param productTypeInfo
+     * @return
+     */
+    @Override
+    public Response saveProductTypeInfo(ProductTypeInfo productTypeInfo) {
+
+        List<ProductTypeInfo> productTypeInfos = productTypeInfoMapper.selectByMap(new HashMap<String, Object>() {{
+            put("product_name", productTypeInfo.getProductName());
+        }});
+        if (!productTypeInfos.isEmpty()) throw new CustomException("分类名称重复");
+
+        productTypeInfoMapper.insert(productTypeInfo);
+        return Response.success();
+
+    }
+
+    /**
+     * applet
+     * 分类列表
+     * @return
+     */
+    @Override
+    public List<AppletProductTypeInfoVo> selectAppletProductTypeInfoList() {
+        List<AppletProductTypeInfoVo> productTypeInfoVos = productTypeInfoMapper.selectAppletProductTypeInfoList();
+        return builTree(productTypeInfoVos);
+    }
+
+
+    //建立树形结构
+    public List<AppletProductTypeInfoVo> builTree(List<AppletProductTypeInfoVo> productList){
+        List<AppletProductTypeInfoVo> infoVos =new  ArrayList<>();
+        //获取根节点
+        List<AppletProductTypeInfoVo> rootMenuLists =new  ArrayList<>();
+        for(AppletProductTypeInfoVo productType : productList) {
+            if(productType.getPid().toString().equals("0")) {
+                rootMenuLists.add(productType);
+            }
+        }
+        for(AppletProductTypeInfoVo productTypeInfoVo : rootMenuLists) {
+            productTypeInfoVo=getTree(productTypeInfoVo,productList);
+            infoVos.add(productTypeInfoVo);
+        }
+        return infoVos;
+    }
+    //递归,建立子树形结构
+    private AppletProductTypeInfoVo getTree(AppletProductTypeInfoVo productTypeInfo,List<AppletProductTypeInfoVo> menuList){
+        List<AppletProductTypeInfoVo> infoVos = new ArrayList<>();
+        for (AppletProductTypeInfoVo productTypeInfoVo : menuList) {
+            if (productTypeInfoVo.getPid().toString().equals(productTypeInfo.getId().toString())){
+                infoVos.add(getTree(productTypeInfoVo,menuList));
+            }
+        }
+        productTypeInfo.setChildren(infoVos);
+        return productTypeInfo;
+    }
+
 }

+ 55 - 0
zzjs-service/src/main/java/com/miaxis/product/vo/AppletProductTypeInfoVo.java

@@ -0,0 +1,55 @@
+package com.miaxis.product.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 品类对象
+ *
+ * @author miaxis
+ * @date 2021-03-11
+ */
+@Data
+@ApiModel(value = "AppletProductTypeInfoVo", description = "applet品类对象返回参")
+public class AppletProductTypeInfoVo implements Serializable {
+
+    @TableId(value = "id")
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @TableField("product_name")
+    @ApiModelProperty(value = "分类名称")
+    private String productName;
+
+    @TableField("pid")
+    @ApiModelProperty(value = "父节点(预留)")
+    private Long pid;
+
+    @TableField("product_describe")
+    @ApiModelProperty(value = "分类描述,该分类名称的描述")
+    private String productDescribe;
+
+    @TableField("product_icon")
+    @ApiModelProperty(value = "品类图标--对应file_info的id")
+    private Integer productIcon;
+
+    @ApiModelProperty(value = "品类图标访问地址")
+    private String fileUrl;
+
+    @TableField("status")
+    @ApiModelProperty(value = "状态  0:有效(默认)、1:失效 (伪删除)")
+    private Integer status;
+
+    @ApiModelProperty(value = "子节点分类")
+    private List<AppletProductTypeInfoVo> children;
+
+
+}

+ 41 - 0
zzjs-service/src/main/java/com/miaxis/record/domain/BrowseRecordInfo.java

@@ -0,0 +1,41 @@
+package com.miaxis.record.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.miaxis.common.annotation.Excel;
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+/**
+ * 浏览记录对象 browse_record_info
+ *
+ * @author miaxis
+ * @date 2021-03-23
+ */
+@Data
+@TableName("browse_record_info")
+@ApiModel(value = "BrowseRecordInfo", description = "浏览记录对象 browse_record_info")
+public class BrowseRecordInfo extends BaseBusinessEntity{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    @TableId(value = "id")
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    /** 用户id----(对应user_info表id) */
+    @Excel(name = "用户id----(对应user_info表id)")
+    @TableField("user_id")
+    @ApiModelProperty(value = "用户id----(对应user_info表id)")
+    private Long userId;
+
+    /** 商家id---(对应customer_info表id) */
+    @Excel(name = "商家id---(对应customer_info表id)", readConverterExp = "对=应customer_info表id")
+    @TableField("customer_id")
+    @ApiModelProperty(value = "商家id---(对应customer_info表id)")
+    private Long customerId;
+
+
+}

+ 23 - 0
zzjs-service/src/main/java/com/miaxis/record/mapper/BrowseRecordInfoMapper.java

@@ -0,0 +1,23 @@
+package com.miaxis.record.mapper;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.miaxis.common.core.domain.entity.UserInfo;
+import com.miaxis.record.domain.BrowseRecordInfo;
+import com.miaxis.record.vo.BrowseRecordCustomerVo;
+
+/**
+ * 浏览记录Mapper接口
+ *
+ * @author miaxis
+ * @date 2021-03-23
+ */
+public interface BrowseRecordInfoMapper extends BaseMapper<BrowseRecordInfo> {
+
+    /**
+     * 查询浏览记录列表
+     * @param userInfo
+     * @return
+     */
+    List<BrowseRecordCustomerVo> getBrowseRecordInfoList(UserInfo userInfo);
+}

+ 44 - 0
zzjs-service/src/main/java/com/miaxis/record/service/IBrowseRecordInfoService.java

@@ -0,0 +1,44 @@
+package com.miaxis.record.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.miaxis.common.core.domain.Response;
+import com.miaxis.common.core.domain.entity.UserInfo;
+import com.miaxis.customer.vo.BrowseRecordCustomerInfoVo;
+import com.miaxis.record.domain.BrowseRecordInfo;
+import com.miaxis.record.vo.BrowseRecordCustomerVo;
+
+import java.util.List;
+
+/**
+ * 浏览记录Service接口
+ *
+ * @author miaxis
+ * @date 2021-03-23
+ */
+public interface IBrowseRecordInfoService extends IService<BrowseRecordInfo>{
+
+    /**
+     * 查询浏览记录列表
+     * @param userInfo
+     * @return
+     */
+    List<BrowseRecordCustomerInfoVo> getBrowseRecordInfoList(UserInfo userInfo);
+
+    /**
+     * 新增浏览记录
+     * @param userInfo 当前用户
+     * @param id 商家id
+     * @return
+     */
+    Response insertBrowseRecord(UserInfo userInfo, Long id);
+
+
+    /**
+     * 删除浏览记录
+     * @param userInfo 当前用户
+     * @param ids 商家id
+     * @return
+     */
+    Response removeBrowseRecord(UserInfo userInfo, Long[] ids);
+
+}

+ 113 - 0
zzjs-service/src/main/java/com/miaxis/record/service/impl/BrowseRecordInfoServiceImpl.java

@@ -0,0 +1,113 @@
+package com.miaxis.record.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.miaxis.common.constant.Constants;
+import com.miaxis.common.core.domain.Response;
+import com.miaxis.common.core.domain.entity.UserInfo;
+import com.miaxis.common.core.redis.RedisCache;
+import com.miaxis.common.exception.CustomException;
+import com.miaxis.customer.mapper.CustomerInfoMapper;
+import com.miaxis.customer.vo.BrowseRecordCustomerInfoVo;
+import com.miaxis.record.domain.BrowseRecordInfo;
+import com.miaxis.record.mapper.BrowseRecordInfoMapper;
+import com.miaxis.record.service.IBrowseRecordInfoService;
+import com.miaxis.record.vo.BrowseRecordCustomerVo;
+import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 浏览记录Service业务层处理
+ *
+ * @author miaxis
+ * @date 2021-03-23
+ */
+@Service
+@RequiredArgsConstructor
+public class BrowseRecordInfoServiceImpl extends ServiceImpl<BrowseRecordInfoMapper, BrowseRecordInfo> implements IBrowseRecordInfoService {
+
+    private final BrowseRecordInfoMapper browseRecordInfoMapper;
+
+    private final CustomerInfoMapper customerInfoMapper;
+
+    private final RedisTemplate redisTemplate;
+
+
+
+    /**
+     * 查询浏览记录列表
+     * @param userInfo
+     * @return
+     */
+    @Override
+    public List<BrowseRecordCustomerInfoVo> getBrowseRecordInfoList(UserInfo userInfo) {
+        ArrayList<BrowseRecordCustomerInfoVo> infoVos = new ArrayList<>();
+        String str = Constants.BROWSE_RECORD_KEY + userInfo.getId();
+        //获取以key前缀所有的key
+        Set keys = redisTemplate.keys(str + "*");
+        if (!keys.isEmpty()){
+            for (Object key : keys) {
+                String jsonStr = (String) redisTemplate.opsForValue().get(key);
+                BrowseRecordCustomerInfoVo customerInfoVo = JSONObject.parseObject(jsonStr).toJavaObject(BrowseRecordCustomerInfoVo.class);
+                infoVos.add(customerInfoVo);
+            }
+        }
+        return infoVos;
+    }
+
+    /**
+     * 新增浏览记录
+     * @param userInfo 当前用户
+     * @param id 商家id
+     * @return
+     */
+    @Override
+    @SneakyThrows
+    public Response insertBrowseRecord(UserInfo userInfo, Long id) {
+
+        //判断用户是否有浏览此商家记录
+        if (redisTemplate.hasKey(Constants.BROWSE_RECORD_KEY + userInfo.getId())){
+            String jsonStr = (String) redisTemplate.opsForValue().get(Constants.BROWSE_RECORD_KEY + userInfo.getId() + ":" + id);
+            BrowseRecordCustomerInfoVo customerInfoVo = JSONObject.parseObject(jsonStr).toJavaObject(BrowseRecordCustomerInfoVo.class);
+            customerInfoVo.setBrowseTime(new Date());
+            redisTemplate.opsForValue().set(Constants.BROWSE_RECORD_KEY + userInfo.getId() + ":" + id,JSON.toJSONString(customerInfoVo),30, TimeUnit.DAYS);
+        }else {
+            //商家详情
+            BrowseRecordCustomerInfoVo customerDetail = customerInfoMapper.getCustomerDetailsById(id);
+            customerDetail.setBrowseTime(new Date());
+            //添加缓存
+            redisTemplate.opsForValue().set(Constants.BROWSE_RECORD_KEY + userInfo.getId() + ":" + id,JSON.toJSONString(customerDetail),30, TimeUnit.DAYS);
+        }
+        return Response.success();
+    }
+
+    /**
+     * 删除浏览记录
+     * @param userInfo 当前用户
+     * @param ids 商家id
+     * @return
+     */
+    @Override
+    public Response removeBrowseRecord(UserInfo userInfo, Long[] ids) {
+        try {
+            for (Long id : ids) {
+                //删除浏览记录缓存
+                redisTemplate.delete(Constants.BROWSE_RECORD_KEY + userInfo.getId() + ":"+id);
+            }
+            return Response.success();
+        }catch (Exception e){
+            throw new CustomException("系统异常");
+        }
+    }
+
+
+}

+ 58 - 0
zzjs-service/src/main/java/com/miaxis/record/vo/BrowseRecordCustomerVo.java

@@ -0,0 +1,58 @@
+package com.miaxis.record.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 浏览记录对象返回参
+ *
+ * @author miaxis
+ * @date 2021-03-15
+ */
+@Data
+@ApiModel(value = "BrowseRecordCustomerVo", description = "浏览记录对象返回参")
+public class BrowseRecordCustomerVo {
+
+    @TableId(value = "id")
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @ApiModelProperty(value = "商家id")
+    private Long customerId;
+
+    @TableField("corporate_name")
+    @ApiModelProperty(value = "公司名称")
+    private String corporateName;
+
+    @ApiModelProperty(value = "公司LOGO图片访问地址")
+    private String corporateLogoFileUrl;
+
+    @TableField("applet_address")
+    @ApiModelProperty(value = "小程序地址")
+    private String appletAddress;
+
+    @ApiModelProperty(value = "小程序图标访问地址")
+    private String appletLogoFileUrl;
+
+    @ApiModelProperty(value = "小程序二维码访问地址")
+    private String appletQrCodeFileUrl;
+
+    @TableField("applet_introduce")
+    @ApiModelProperty(value = "小程序介绍")
+    private String appletIntroduce;
+
+    @TableField("status")
+    @ApiModelProperty(value = "状态  0:有效(默认)、1:失效 (伪删除)")
+    private Integer status;
+
+    @ApiModelProperty(value = "浏览时间"  ,hidden = true)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+}

+ 40 - 20
zzjs-service/src/main/resources/mapper/customer/CustomerInfoMapper.xml

@@ -11,6 +11,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="corporateLogo"    column="corporate_logo"    />
         <result property="customerSource"    column="customer_source"    />
         <result property="cityCode"    column="city_code"    />
+        <result property="areaCode"    column="area_code"    />
         <result property="attributedPersonnel"    column="attributed_personnel"    />
         <result property="detailedAddress"    column="detailed_address"    />
         <result property="industryType"    column="industry_type"    />
@@ -35,7 +36,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectCustomerInfoVo">
-        select id, corporate_name, business_type, corporate_logo, customer_source, city_code, attributed_personnel, detailed_address, industry_type, corporate_phone, corporate_contacts, phone, customer_star, enterprise_tax_number, invoice_title, bank_of_deposit, bank_account, finance_phone, fax_number, applet_address, applet_logo, applet_qr_code, applet_introduce, shelf_status, create_time, update_time, status from customer_info
+        select id, corporate_name, business_type, corporate_logo, customer_source, city_code,area_code, attributed_personnel, detailed_address, industry_type, corporate_phone, corporate_contacts, phone, customer_star, enterprise_tax_number, invoice_title, bank_of_deposit, bank_account, finance_phone, fax_number, applet_address, applet_logo, applet_qr_code, applet_introduce, shelf_status, create_time, update_time, status from customer_info
     </sql>
 
     <select id="selectCustomerInfoList" parameterType="CustomerInfo" resultMap="CustomerInfoResult">
@@ -46,6 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="corporateLogo != null "> and corporate_logo = #{corporateLogo}</if>
             <if test="customerSource != null "> and customer_source = #{customerSource}</if>
             <if test="cityCode != null  and cityCode != ''"> and city_code = #{cityCode}</if>
+            <if test="areaCode != null  and areaCode != ''"> and area_code = #{areaCode}</if>
             <if test="attributedPersonnel != null "> and attributed_personnel = #{attributedPersonnel}</if>
             <if test="detailedAddress != null  and detailedAddress != ''"> and detailed_address = #{detailedAddress}</if>
             <if test="industryType != null "> and industry_type = #{industryType}</if>
@@ -73,6 +75,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         f1.file_url as corporateLogoFileUrl,
         ci.customer_source,
         ci.city_code,
+        ci.area_code,
         ci.attributed_personnel,
         ci.detailed_address,
         ci.industry_type,
@@ -115,57 +118,74 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         ci.applet_introduce,
         ci.create_time,
         ci.update_time,
+        (select COUNT(1) from collection_info coi where coi.customer_id = ci.id) as collectionCount,
+        (SELECT COUNT(1) from collection_info coi where coi.user_id = #{userId} and customer_id = ci.id) as collectionStatus,
         ci.status
         from customer_info ci
         LEFT JOIN file_info f1 on f1.file_id = ci.corporate_logo
         LEFT JOIN file_info f2 on f2.file_id = ci.applet_logo
         LEFT JOIN file_info f3 on f3.file_id = ci.applet_qr_code
-        WHERE ci.industry_type = #{productId}
+        <where>
+            1=1
+            <choose>
+                <when test="customerInfoDto.customerName != null  and customerInfoDto.customerName != ''">
+                    and ci.corporate_name like concat('%', #{customerInfoDto.customerName}, '%')
+                </when>
+                <when test="customerInfoDto.id == 0">
+                    ORDER BY collectionCount DESC
+                </when>
+                <when test="customerInfoDto.pid != null and customerInfoDto.pid != ''">
+                    AND ci.industry_type = #{customerInfoDto.pid}
+                </when>
+                <otherwise>
+                    AND ci.industry_type IN ( SELECT id FROM product_type_info WHERE pid = #{customerInfoDto.id} )
+                </otherwise>
+            </choose>
+        </where>
 
     </select>
 
 
-    <select id="getCustomerListByCollectionCount" resultType="com.miaxis.customer.vo.ExhibitionCustomerInfoVo">
+    <select id="getCollectionList" resultType="com.miaxis.collection.vo.CollectionCustomerVo">
         SELECT
-        ci.id,
-        (select COUNT(1) from collection_info coi where coi.customer_id = ci.id) as collectionCount,
+        coi.id,
+        ci.id as customerId,
         ci.corporate_name,
-        f1.file_url as corporateLogoFileUrl,
         ci.applet_address,
+        f1.file_url as corporateLogoFileUrl,
         f2.file_url as appletLogoFileUrl,
         f3.file_url as appletQrCodeFileUrl,
         ci.applet_introduce,
-        ci.create_time,
-        ci.update_time,
+        coi.create_time,
         ci.status
-        FROM `customer_info` ci
-        LEFT JOIN file_info f1 on f1.file_id = ci.corporate_logo
-        LEFT JOIN file_info f2 on f2.file_id = ci.applet_logo
-        LEFT JOIN file_info f3 on f3.file_id = ci.applet_qr_code
-        ORDER BY collectionCount DESC
+        FROM `user_info` ui
+	    LEFT JOIN collection_info coi ON coi.user_id = ui.id
+	    LEFT JOIN customer_info ci ON coi.customer_id = ci.id
+	    LEFT JOIN file_info f1 ON f1.file_id = ci.corporate_logo
+	    LEFT JOIN file_info f2 ON f2.file_id = ci.applet_logo
+	    LEFT JOIN file_info f3 ON f3.file_id = ci.applet_qr_code
+        WHERE ui.id = #{id}
+
     </select>
 
 
-    <select id="getCollectionList" resultType="com.miaxis.collection.vo.CollectionCustomerVo">
+    <!--getCustomerDetailsById-->
+    <select id="getCustomerDetailsById" resultType="com.miaxis.customer.vo.BrowseRecordCustomerInfoVo">
         SELECT
-        coi.id,
-        ci.id as customerId,
+        ci.id,
         ci.corporate_name,
         ci.applet_address,
         f1.file_url as corporateLogoFileUrl,
         f2.file_url as appletLogoFileUrl,
         f3.file_url as appletQrCodeFileUrl,
         ci.applet_introduce,
-        coi.create_time,
         ci.status
         FROM `customer_info` ci
         LEFT JOIN file_info f1 on f1.file_id = ci.corporate_logo
         LEFT JOIN file_info f2 on f2.file_id = ci.applet_logo
         LEFT JOIN file_info f3 on f3.file_id = ci.applet_qr_code
-        LEFT JOIN collection_info coi ON coi.customer_id = ci.id
-        WHERE ci.id IN ( select coi.customer_id from collection_info coi where coi.user_id = #{id})
+        WHERE ci.id = #{id}
 
     </select>
 
-
 </mapper>

+ 90 - 0
zzjs-service/src/main/resources/mapper/newgzpt/GzptTrainRecordMapper.xml

@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.miaxis.newgzpt.mapper.GzptTrainRecordMapper">
+    <select id="saveGzptTrainRecord" parameterType="com.miaxis.newgzpt.domain.GzptTrainRecord">
+        insert into GZPT_TRAIN_RECORD VALUES (
+        seq_gzpt_train_record.nextval,
+        #{studentId},
+        #{beginTime},
+        #{endTime},
+        #{trainType},
+        #{trainTime},
+        #{isSubmit},
+        #{pxkm},
+        #{source},
+        #{reason},
+        #{classid})
+    </select>
+
+
+
+    <select id="getTrainFinishNew" resultType="com.miaxis.newgzpt.vo.TrainFinishVO" parameterType="com.miaxis.newgzpt.dto.TrainFinishDTO" >
+        select cri_id id,cri_starttime startTime, cri_endtime endTime,cri_vaild_time duration,cri_vaild_time vaildTime, cri_train_subject trainSubject, substr(cri_subjcode,0,1) as pxkmType ,c.tci_name coachName,c.tci_photo_path photoPath,c.tci_id coachId,r.cri_classid classId from tms_train_class_record@tms${dqbh} r,tms_coach_info@tms${dqbh} c
+        where r.cri_coach_id = c.tci_id(+) and r.cri_audit_result = '0'
+        and r.cri_is_pay in (1,2)
+        <if test="studentId!=null">
+            and r.cri_student_id = #{studentId}
+        </if>
+        <if test="trainSubject!=null">
+            and r.cri_train_subject = #{trainSubject}
+        </if>
+    </select>
+
+
+    <select id="getTrainSubjectCredit" resultType="com.miaxis.newgzpt.vo.TrainCreditVO" parameterType="com.miaxis.newgzpt.dto.TrainCreditDTO" >
+        select tsc_train_subject         subject,
+               tsc_APPLY_EXAM_SUBJECT    applySubject,
+               tsc_train_subject_name    subjectName,
+               tsc_permit_drive_car_type carType,
+               tsc_credit_ration         ration
+        from TMS_TRAIN_SUBJECT_CREDIT@tms${dqbh} c
+        <where>
+            <if test="cx!=null">
+                and c.TSC_PERMIT_DRIVE_CAR_TYPE = #{cx}
+            </if>
+        </where>
+    </select>
+
+    <select id="getTrainFinishKm" resultType="com.miaxis.newgzpt.vo.TrainFinishKmVO" parameterType="com.miaxis.newgzpt.dto.TrainFinishDTO" >
+        select
+        (select sum(cri_vaild_time)  from tms_train_class_record@tms${dqbh} r where r.cri_audit_result = '0' and r.cri_is_pay in (1, 2) and r.cri_train_subject = 1
+        <choose>
+            <when test="studentId!=null">
+                and r.cri_student_id = #{studentId}) km1,
+            </when>
+            <otherwise>
+                ) km1,
+            </otherwise>
+        </choose>
+        (select sum(cri_vaild_time) from tms_train_class_record@tms${dqbh} r where r.cri_audit_result = '0' and r.cri_is_pay in (1, 2) and r.cri_train_subject = 2
+        <choose>
+            <when test="studentId!=null">
+                and r.cri_student_id = #{studentId}) km2,
+            </when>
+            <otherwise>
+                ) km2,
+            </otherwise>
+        </choose>
+        (select sum(cri_vaild_time)  from tms_train_class_record@tms${dqbh} r where r.cri_audit_result = '0' and r.cri_is_pay in (1, 2) and r.cri_train_subject = 3
+        <choose>
+            <when test="studentId!=null">
+                and r.cri_student_id = #{studentId}) km3,
+            </when>
+            <otherwise>
+                ) km3,
+            </otherwise>
+        </choose>
+        (select sum(cri_vaild_time)  from tms_train_class_record@tms${dqbh} r where r.cri_audit_result = '0' and r.cri_is_pay in (1, 2) and r.cri_train_subject = 4
+        <choose>
+            <when test="studentId!=null">
+                and r.cri_student_id = #{studentId}) km4
+            </when>
+            <otherwise>
+                ) km4
+            </otherwise>
+        </choose>
+        from dual
+    </select>
+
+
+</mapper>

+ 15 - 0
zzjs-service/src/main/resources/mapper/product/ProductTypeInfoMapper.xml

@@ -57,4 +57,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where py.id = #{id}
     </select>
 
+
+    <select id="selectAppletProductTypeInfoList" resultType="com.miaxis.product.vo.AppletProductTypeInfoVo">
+        select
+        py.id,
+        py.product_name,
+        py.pid,
+        py.product_describe,
+        py.product_icon ,
+        f.file_url as fileUrl,
+        py.status
+        from product_type_info py
+        LEFT JOIN file_info f on f.file_id = py.product_icon
+    </select>
+
+
 </mapper>

+ 41 - 0
zzjs-service/src/main/resources/mapper/record/BrowseRecordInfoMapper.xml

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.miaxis.record.mapper.BrowseRecordInfoMapper">
+
+    <resultMap type="BrowseRecordInfo" id="BrowseRecordInfoResult">
+        <result property="id"    column="id"    />
+        <result property="userId"    column="user_id"    />
+        <result property="customerId"    column="customer_id"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectBrowseRecordInfoVo">
+        select * from browse_record_info
+    </sql>
+
+
+    <select id="getBrowseRecordInfoList" resultType="com.miaxis.record.vo.BrowseRecordCustomerVo">
+        SELECT
+        bri.id,
+        ci.id as customerId,
+        ci.corporate_name,
+        ci.applet_address,
+        f1.file_url as corporateLogoFileUrl,
+        f2.file_url as appletLogoFileUrl,
+        f3.file_url as appletQrCodeFileUrl,
+        ci.applet_introduce,
+        bri.update_time,
+        ci.status
+        FROM `customer_info` ci
+        LEFT JOIN file_info f1 on f1.file_id = ci.corporate_logo
+        LEFT JOIN file_info f2 on f2.file_id = ci.applet_logo
+        LEFT JOIN file_info f3 on f3.file_id = ci.applet_qr_code
+        LEFT JOIN browse_record_info bri ON bri.customer_id = ci.id
+        WHERE ci.id IN ( select bri.customer_id from browse_record_info bri where bri.user_id = #{id})
+
+    </select>
+
+</mapper>