From 766089ad50ae807ab88ba83b2dbc4a53bda8e423 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 05 十二月 2023 18:27:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/LaborMemberDTO.java         |   50 +++++++
 server/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java           |   33 ++++
 server/dmvisit_service/src/main/java/com/doumee/core/utils/Secure.java                        |   14 ++
 server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/MemberInfoDTO.java         |   93 +++++++++++++
 server/dmvisit_service/src/main/java/com/doumee/dao/business/join/MemberJoinMapper.java       |   12 +
 server/dmvisit_admin/src/main/resources/application.yml                                       |    2 
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java  |  122 +++++++++++++++++
 server/dmvisit_admin/src/main/java/com/doumee/api/business/CompanyController.java             |    8 +
 server/dmvisit_service/src/main/java/com/doumee/dao/business/model/TrainTime.java             |    4 
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java |   16 +
 server/dmvisit_service/src/main/java/com/doumee/core/utils/Date.java                          |   10 +
 server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Empower.java               |    4 
 server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Company.java               |    8 
 server/dmvisit_admin/src/main/java/com/doumee/api/business/MemberController.java              |   27 +++
 14 files changed, 388 insertions(+), 15 deletions(-)

diff --git a/server/dmvisit_admin/src/main/java/com/doumee/api/business/CompanyController.java b/server/dmvisit_admin/src/main/java/com/doumee/api/business/CompanyController.java
index 8f69c70..122e391 100644
--- a/server/dmvisit_admin/src/main/java/com/doumee/api/business/CompanyController.java
+++ b/server/dmvisit_admin/src/main/java/com/doumee/api/business/CompanyController.java
@@ -39,6 +39,14 @@
         return ApiResponse.success(companyService.create(company));
     }
 
+    @PreventRepeat
+    @ApiOperation("鍒涘缓鍔冲姟鍏徃")
+    @PostMapping("/createLaborServices")
+    @RequiresPermissions("business:company:create")
+    public ApiResponse<Integer> createLaborServices(@RequestBody Company company){
+        return ApiResponse.success(companyService.createLaborServices(company));
+    }
+
     @ApiOperation("鏍规嵁ID鍒犻櫎")
     @GetMapping("/delete/{id}")
     @RequiresPermissions("business:company:delete")
diff --git a/server/dmvisit_admin/src/main/java/com/doumee/api/business/MemberController.java b/server/dmvisit_admin/src/main/java/com/doumee/api/business/MemberController.java
index 181333b..ba74171 100644
--- a/server/dmvisit_admin/src/main/java/com/doumee/api/business/MemberController.java
+++ b/server/dmvisit_admin/src/main/java/com/doumee/api/business/MemberController.java
@@ -6,11 +6,13 @@
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.model.PageData;
+import com.doumee.dao.admin.request.LaborMemberDTO;
+import com.doumee.dao.admin.response.MemberInfoDTO;
 import com.doumee.dao.business.model.Member;
 import com.doumee.service.business.MemberService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletResponse;
@@ -36,6 +38,14 @@
     @RequiresPermissions("business:member:create")
     public ApiResponse create(@RequestBody Member member) {
         return ApiResponse.success(memberService.create(member));
+    }
+
+    @PreventRepeat
+    @ApiOperation("鍒涘缓鍔冲姟浜哄憳淇℃伅")
+    @PostMapping("/laborMemberCreate")
+    @RequiresPermissions("business:member:create")
+    public ApiResponse<Integer> laborMemberCreate(@RequestBody LaborMemberDTO member){
+        return ApiResponse.success(memberService.laborMemberCreate(member));
     }
 
     @ApiOperation("鏍规嵁ID鍒犻櫎")
@@ -67,6 +77,14 @@
         return ApiResponse.success(null);
     }
 
+    @ApiOperation("鏍规嵁ID 绂佸惎鐢� 鎷夐粦")
+    @PostMapping("/updateStatusById")
+    @RequiresPermissions("business:member:update")
+    public ApiResponse updateStatusById(@RequestBody Member member){
+        memberService.updateStatusById(member);
+        return ApiResponse.success(null);
+    }
+
     @ApiOperation("鍒嗛〉鏌ヨ")
     @PostMapping("/page")
     @RequiresPermissions("business:member:query")
@@ -74,6 +92,13 @@
         return ApiResponse.success(memberService.findPage(pageWrap));
     }
 
+    @ApiOperation("鍒嗛〉鍔冲姟鐢ㄦ埛淇℃伅鏌ヨ")
+    @PostMapping("/findLaborMemberInfoPage")
+    @RequiresPermissions("business:member:query")
+    public ApiResponse<PageData<MemberInfoDTO>> findLaborMemberInfoPage(@RequestBody PageWrap<MemberInfoDTO> pageWrap){
+        return ApiResponse.success(memberService.findLaborMemberInfoPage(pageWrap));
+    }
+
     @ApiOperation("瀵煎嚭Excel")
     @PostMapping("/exportExcel")
     @RequiresPermissions("business:member:exportExcel")
diff --git a/server/dmvisit_admin/src/main/resources/application.yml b/server/dmvisit_admin/src/main/resources/application.yml
index c191c3b..87285f9 100644
--- a/server/dmvisit_admin/src/main/resources/application.yml
+++ b/server/dmvisit_admin/src/main/resources/application.yml
@@ -72,4 +72,4 @@
     max-swallow-size: -1
   servlet:
     session:
-      timeout: PT3H  #琛ㄧず12灏忔椂
\ No newline at end of file
+      timeout: PT3H  #琛ㄧず12灏忔椂
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/utils/Date.java b/server/dmvisit_service/src/main/java/com/doumee/core/utils/Date.java
index 99c696f..3e8e209 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/utils/Date.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/utils/Date.java
@@ -25,6 +25,16 @@
         return calendar.getTime();
     }
 
+    public java.util.Date getDayEnd (java.util.Date date) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.set(Calendar.HOUR_OF_DAY, 23);
+        calendar.set(Calendar.MINUTE, 59);
+        calendar.set(Calendar.SECOND, 59);
+        calendar.set(Calendar.MILLISECOND, 0);
+        return calendar.getTime();
+    }
+
     /**
      * 鑾峰彇鏃ユ湡鐨勭粨鏉熸椂闂�
      * @param date 鏃ユ湡
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/utils/Secure.java b/server/dmvisit_service/src/main/java/com/doumee/core/utils/Secure.java
index 9710ca1..ff5d086 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/utils/Secure.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/utils/Secure.java
@@ -1,6 +1,10 @@
 package com.doumee.core.utils;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.util.DigestUtils;
+
+import java.util.Arrays;
+import java.util.stream.Collectors;
 
 /**
  * 瀹夊叏澶勭悊宸ュ叿绫�
@@ -19,4 +23,14 @@
     public String encryptPassword(String password, String salt) {
         return DigestUtils.md5DigestAsHex((password + salt).getBytes());
     }
+
+    /**
+     * 瀛楃涓叉満瀵�
+     * @param strings
+     * @return
+     */
+    public String encryptString(String... strings) {
+        String collect = Arrays.asList(strings).stream().filter(s -> StringUtils.isBlank(s)).collect(Collectors.joining());
+        return DigestUtils.md5DigestAsHex((collect).getBytes());
+    }
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/LaborMemberDTO.java b/server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/LaborMemberDTO.java
new file mode 100644
index 0000000..bd60ab8
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/LaborMemberDTO.java
@@ -0,0 +1,50 @@
+package com.doumee.dao.admin.request;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author T14
+ */
+@Data
+public class LaborMemberDTO {
+
+    @ApiModelProperty(value = "鎵�灞炵粍缁囩紪鐮�(鍏宠仈company琛�)")
+    private Integer companyId;
+
+    @ApiModelProperty(value = "浜鸿劯鐓х墖")
+    private String faceImg;
+
+    @ApiModelProperty(value = "鍋ュ悍鐮�")
+    private String imgurl;
+
+    @ApiModelProperty(value = "绫诲瀷 0鍔冲姟璁垮 1鏅�氳瀹�  2鍐呴儴浜哄憳")
+    private Integer type;
+
+    @ApiModelProperty(value = "璁垮鍚嶇О")
+    private String name;
+
+    @ApiModelProperty(value = "鎵嬫満鍙�")
+    private String phone;
+
+    @ApiModelProperty(value = "韬唤璇佸彿")
+    private String idcardNo;
+
+    @ApiModelProperty(value = "璇佷欢鏄剧ず淇℃伅")
+    private String idcardDecode;
+
+    @ApiModelProperty(value = "鍩硅鏈夋晥鏈熻捣濮�")
+    private Date startTime;
+
+    @ApiModelProperty(value = "鍩硅鏈夋晥鏈熺粨鏉�")
+    private Date endTime;
+
+    @ApiModelProperty(value = "鎬у埆 1 : 鐢� 锛� 0 : 濂�")
+    private Integer sex;
+
+    @ApiModelProperty(value = "娣诲姞浜虹紪鐮侊紙鑷叧鑱旓級", example = "1")
+    private Integer parentId;
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/MemberInfoDTO.java b/server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/MemberInfoDTO.java
new file mode 100644
index 0000000..45cdff7
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/MemberInfoDTO.java
@@ -0,0 +1,93 @@
+package com.doumee.dao.admin.response;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author T14
+ */
+@Data
+@ApiModel("鍔冲姟浜哄憳淇℃伅琛�")
+public class MemberInfoDTO {
+
+    @ApiModelProperty(value = "涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�")
+    private String creatorName;
+
+    @ApiModelProperty(value = "澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鎵�灞炵粍缁囩紪鐮�(鍏宠仈company琛�)")
+    private Integer companyId;
+
+    @ApiModelProperty(value = "鍏徃鍚嶇О")
+    private String companyName;
+
+    @ApiModelProperty(value = "鍏徃璐熻矗浜�")
+    private String linkName;
+
+    @ApiModelProperty(value = "鍏徃璐熻矗浜鸿仈绯荤數璇�")
+    @ExcelColumn(name="鑱旂郴鐢佃瘽")
+    private String linkPhone;
+
+    @ApiModelProperty(value = "浜鸿劯鐓х墖")
+    private String faceImg;
+
+    @ApiModelProperty(value = "鍋ュ悍鐮�")
+    private String imgurl;
+
+    @ApiModelProperty(value = "绫诲瀷 0鍔冲姟璁垮 1鏅�氳瀹�  2鍐呴儴浜哄憳")
+    private Integer type;
+
+    @ApiModelProperty(value = "璁垮鍚嶇О")
+    private String name;
+
+    @ApiModelProperty(value = "鎬у埆")
+    private Integer sex;
+
+    @ApiModelProperty(value = "璁垮骞撮緞")
+    private Date birthday;
+
+    @ApiModelProperty(value = "鎵嬫満鍙�")
+    private String phone;
+
+    @ApiModelProperty(value = "韬唤璇佸彿锛圡D4鍔犲瘑锛�")
+    private String idcardNo;
+
+    @ApiModelProperty(value = "璇佷欢鏄剧ず淇℃伅")
+    private String idcardDecode;
+
+    @ApiModelProperty(value = "宸ュ彿")
+    private String code;
+
+    @ApiModelProperty(value = "鐝")
+    private String classes;
+
+    @ApiModelProperty(value = "鐘舵�� 0姝e父 1绂佺敤 2鎷夐粦/鍐荤粨")
+    private Integer status;
+
+    @ApiModelProperty(value = "娣诲姞浜虹紪鐮侊紙鑷叧鑱旓級")
+    private Integer parentId;
+
+    @ApiModelProperty(value = "寰俊openid")
+    private String openid;
+
+    @ApiModelProperty(value = "鍩硅鏈夋晥鏈熺粨鏉熸椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date trainTimeEndTime;
+
+    @ApiModelProperty(value = "闂ㄧ鏈夋晥鏈熺粨鏉�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date empowerEndTime;
+
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/join/MemberJoinMapper.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/join/MemberJoinMapper.java
new file mode 100644
index 0000000..9bcded8
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/join/MemberJoinMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business.join;
+
+import com.doumee.dao.business.model.Member;
+import com.github.yulichang.base.mapper.MPJJoinMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @author T14
+ */
+@Repository
+public interface MemberJoinMapper extends MPJJoinMapper<Member> {
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Company.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Company.java
index 96d2d41..e9fd108 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Company.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Company.java
@@ -32,7 +32,7 @@
 
     @ApiModelProperty(value = "鍒涘缓浜哄悕绉�")
     @TableField(exist = false)
-    private Integer creatorName;
+    private String creatorName;
 
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
     @ExcelColumn(name="鍒涘缓鏃堕棿")
@@ -66,6 +66,10 @@
     @ExcelColumn(name="鎺掑簭鐮�")
     private Integer sortnum;
 
+    @ApiModelProperty(value = "鍔冲姟浜烘暟")
+    @TableField(exist = false)
+    private Integer countNum;
+
     @ApiModelProperty(value = "鍥炬爣")
     @ExcelColumn(name="鍥炬爣")
     private String imgurl;
@@ -80,7 +84,7 @@
 
     @ApiModelProperty(value = "鍒嗙被缂栫爜鍚嶇О")
     @TableField(exist = false)
-    private Integer categoryName;
+    private String categoryName;
 
     @ApiModelProperty(value = "浼佷笟浠g爜")
     @ExcelColumn(name="浼佷笟浠g爜")
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Empower.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Empower.java
index 40dbea2..fc6fe5b 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Empower.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Empower.java
@@ -65,11 +65,11 @@
 
     @ApiModelProperty(value = "闂ㄧ鏈夋晥鏈熷紑濮�")
     @ExcelColumn(name="闂ㄧ鏈夋晥鏈熷紑濮�")
-    private String startTime;
+    private Date startTime;
 
     @ApiModelProperty(value = "闂ㄧ鏈夋晥鏈熺粨鏉�", example = "1")
     @ExcelColumn(name="闂ㄧ鏈夋晥鏈熺粨鏉�")
-    private Integer endTime;
+    private Date endTime;
 
     @ApiModelProperty(value = "瀵煎叆鐘舵��", example = "1")
     @ExcelColumn(name="瀵煎叆鐘舵��")
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/TrainTime.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/TrainTime.java
index bcc63f7..98b82af 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/TrainTime.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/TrainTime.java
@@ -57,11 +57,11 @@
 
     @ApiModelProperty(value = "鏈夋晥鏈熷紑濮�")
     @ExcelColumn(name="鏈夋晥鏈熷紑濮�")
-    private String startTime;
+    private Date startTime;
 
     @ApiModelProperty(value = "鏈夋晥鏈熺粨鏉�", example = "1")
     @ExcelColumn(name="鏈夋晥鏈熺粨鏉�")
-    private Integer endTime;
+    private Date endTime;
 
     @ApiModelProperty(value = "瀵煎叆鐘舵��", example = "1")
     @ExcelColumn(name="瀵煎叆鐘舵��")
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java
index c2b507b..b84b44a 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java
@@ -1,7 +1,10 @@
 package com.doumee.service.business;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.dao.admin.request.LaborMemberDTO;
+import com.doumee.dao.admin.response.MemberInfoDTO;
 import com.doumee.dao.business.model.Member;
 import java.util.List;
 
@@ -14,11 +17,19 @@
 
     /**
      * 鍒涘缓
-     * 
+     *
      * @param member 瀹炰綋瀵硅薄
      * @return Integer
      */
     Integer create(Member member);
+
+    /**
+     *
+     * 鍒涘缓鍔冲姟浜哄憳淇℃伅
+     * @param member
+     * @return
+     */
+    Integer laborMemberCreate(LaborMemberDTO member);
 
     /**
      * 涓婚敭鍒犻櫎
@@ -47,6 +58,14 @@
      * @param member 瀹炰綋瀵硅薄
      */
     void updateById(Member member);
+
+
+    /**
+     * 涓婚敭鏇存柊鍔冲姟浜哄憳鐘舵��
+     *
+     * @param member 瀹炰綋瀵硅薄
+     */
+    void updateStatusById(Member member);
 
     /**
      * 鎵归噺涓婚敭鏇存柊
@@ -78,7 +97,7 @@
      * @return List<Member>
      */
     List<Member> findList(Member member);
-  
+
     /**
      * 鍒嗛〉鏌ヨ
      *
@@ -87,6 +106,16 @@
      */
     PageData<Member> findPage(PageWrap<Member> pageWrap);
 
+
+
+    /**
+     * 鍒嗛〉鍔冲姟鐢ㄦ埛淇℃伅鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<Member>
+     */
+    PageData<MemberInfoDTO> findLaborMemberInfoPage(PageWrap<MemberInfoDTO> pageWrap);
+
     /**
      * 鏉′欢缁熻
      *
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
index 3161c88..5958cf0 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
@@ -24,6 +24,7 @@
 import org.springframework.stereotype.Service;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 浼佷笟淇℃伅琛⊿ervice瀹炵幇
@@ -50,7 +51,6 @@
         LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
 
         checkUnique(company);
-
         Company insert = new Company();
         insert.setCreator(loginUserInfo.getId());
         insert.setCreateDate(new Date());
@@ -233,6 +233,7 @@
                     .leftJoin(SystemUser.class,SystemUser::getId,Company::getCreator);
         queryWrapper.selectAll(Company.class)
                     .selectAs(Category::getName,Company::getCategoryName)
+                    .select("count(t1.id) as countNum")
                     .selectAs(SystemUser::getRealname,Company::getCreatorName);
         IPage<Company> companyIPage = companyJoinMapper.selectJoinPage(page, Company.class, queryWrapper);
         return PageData.from(companyIPage);
@@ -255,9 +256,16 @@
                 .eq(Company::getType,Constants.ZERO)
                 .eq(Company::getName,company.getName());
         List<Company> companies = companyMapper.selectList(wrapper);
-
-        if (CollectionUtils.isNotEmpty(companies)){
-            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"浼佷笟淇℃伅宸插瓨鍦�");
+        if (CollectionUtils.isEmpty(companies)){
+            return;
+        }
+        //鏂板鐨勬儏鍐靛瓨鍦ㄨ褰�
+        if (Objects.isNull(company.getId())){
+            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"鍏徃鍚嶇О宸插瓨鍦�");
+        }
+        //淇敼鐨勬儏鍐靛瓨鍦ㄨ褰� 鍖归厤涓嶅埌 own
+        if (!companies.stream().map(s -> s.getId()).anyMatch(s -> s.equals(company.getId()))){
+            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"鍏徃鍚嶇О宸插瓨鍦�");
         }
     }
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index 0c7a0ef..7bb37f3 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -1,20 +1,41 @@
 package com.doumee.service.business.impl;
 
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.IdcardUtil;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.Utils;
+import com.doumee.dao.admin.request.LaborMemberDTO;
+import com.doumee.dao.admin.response.MemberInfoDTO;
 import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.TrainTimeMapper;
+import com.doumee.dao.business.join.MemberJoinMapper;
+import com.doumee.dao.business.model.Company;
+import com.doumee.dao.business.model.Empower;
 import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.TrainTime;
 import com.doumee.service.business.MemberService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 浜哄憳淇℃伅琛⊿ervice瀹炵幇
@@ -27,10 +48,70 @@
     @Autowired
     private MemberMapper memberMapper;
 
+    @Autowired
+    private MemberJoinMapper memberJoinMapper;
+
+    @Autowired
+    private TrainTimeMapper trainTimeMapper;
+
     @Override
     public Integer create(Member member) {
         memberMapper.insert(member);
         return member.getId();
+    }
+
+    @Transactional
+    @Override
+    public Integer laborMemberCreate(LaborMemberDTO member) {
+
+        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+
+        if (IdcardUtil.isValidCard(member.getIdcardNo())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"韬唤璇佸彿鏍煎紡鏈夎");
+        }
+        if (IdcardUtil.getGenderByIdCard(member.getIdcardNo()) == member.getSex()){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鎬у埆鏈夎");
+        }
+        //鑾峰彇鍑虹敓鏃ユ湡
+        String birthByIdCard = IdcardUtil.getBirthByIdCard(member.getIdcardNo());
+        //鑴辨晱鎿嶄綔
+        String hide = IdcardUtil.hide(member.getIdcardNo(), 5, 14);
+        //杞崲鏃ユ湡
+        DateTime yyyyMMdd = DateUtil.parse(birthByIdCard, "yyyyMMdd");
+
+        Member insert = new Member();
+        insert.setCreator(loginUserInfo.getId());
+        insert.setCreateDate(new Date());
+        insert.setEditor(loginUserInfo.getId());
+        insert.setEditDate(new Date());
+        insert.setIsdeleted(Constants.ZERO);
+        insert.setCompanyId(member.getCompanyId());
+        insert.setFaceImg(member.getFaceImg());
+        insert.setImgurl(member.getImgurl());
+        insert.setType(Constants.ZERO);
+        insert.setName(member.getName());
+        insert.setBirthday(yyyyMMdd);
+        insert.setPhone(member.getPhone());
+        insert.setIdcardNo(Utils.Secure.encryptString(member.getIdcardNo()));
+        IdcardUtil.isValidCard(member.getIdcardNo());
+        insert.setIdcardDecode(hide);
+        insert.setStatus(Constants.ZERO);
+        insert.setParentId(member.getParentId());
+        memberMapper.insert(insert);
+
+        TrainTime trainTime = new TrainTime();
+        trainTime.setCreator(loginUserInfo.getId().toString());
+        trainTime.setCreateDate(new Date());
+        trainTime.setEdirot(loginUserInfo.getId().toString());
+        trainTime.setEditDate(new Date());
+        trainTime.setIsdeleted(Constants.ZERO);
+        trainTime.setMemberId(insert.getId());
+        trainTime.setStartTime(Utils.Date.getStart(member.getStartTime()));
+        trainTime.setEndTime(Utils.Date.getDayEnd(member.getEndTime()));
+//        trainTime.setImportStatus();
+//        trainTime.setImportInfo();
+        trainTimeMapper.insert(trainTime);
+        return insert.getId();
     }
 
     @Override
@@ -55,6 +136,16 @@
     @Override
     public void updateById(Member member) {
         memberMapper.updateById(member);
+    }
+
+    @Override
+    public void updateStatusById(Member member) {
+        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        Member update = new Member();
+        update.setEditDate(new Date());
+        update.setEditor(loginUserInfo.getId());
+        update.setStatus(member.getStatus());
+        memberMapper.updateById(update);
     }
 
     @Override
@@ -83,7 +174,7 @@
         QueryWrapper<Member> wrapper = new QueryWrapper<>(member);
         return memberMapper.selectList(wrapper);
     }
-  
+
     @Override
     public PageData<Member> findPage(PageWrap<Member> pageWrap) {
         IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
@@ -225,6 +316,35 @@
     }
 
     @Override
+    public PageData<MemberInfoDTO> findLaborMemberInfoPage(PageWrap<MemberInfoDTO> pageWrap) {
+        IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>();
+        MemberInfoDTO model = pageWrap.getModel();
+        Utils.MP.blankToNull(model);
+        Date end = Utils.Date.getEnd(pageWrap.getModel().getTrainTimeEndTime());
+        queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId)
+                .leftJoin(TrainTime.class,TrainTime::getMemberId,Member::getId)
+                .leftJoin(Empower.class,Empower::getMemberId,Member::getId);
+
+        queryWrapper.selectAll(Member.class)
+                    .selectAs(Company::getName,MemberInfoDTO::getCompanyName)
+                    .selectAs(Company::getLinkName,MemberInfoDTO::getLinkName)
+                    .select("Max(t1.endTime)","trainTimeEndTime")
+                    .select("Max(t2.endTime)","empowerEndTime");
+
+        queryWrapper.eq(Objects.nonNull(model.getCompanyId()),Member::getCompanyId,model.getCompanyId())
+                    .like(StringUtils.isNotBlank(model.getName()),Member::getName,model.getName())
+                    .like(StringUtils.isNotBlank(model.getPhone()),Member::getPhone,model.getPhone())
+                    .like(StringUtils.isNotBlank(model.getIdcardDecode()),Member::getIdcardDecode,model.getIdcardDecode())
+                    .having("trainTimeEndTime < "+ DateUtil.format(end,"yyyy-MM-dd HH:mm:ss"));
+        IPage<MemberInfoDTO> memberIPage = memberJoinMapper.selectJoinPage(page, MemberInfoDTO.class,queryWrapper);
+        if (!CollectionUtils.isEmpty(memberIPage.getRecords())){
+            memberIPage.getRecords().forEach(s->s.setSex(IdcardUtil.getGenderByIdCard(s.getIdcardDecode())));
+        }
+        return PageData.from(memberIPage);
+    }
+
+    @Override
     public long count(Member member) {
         QueryWrapper<Member> wrapper = new QueryWrapper<>(member);
         return memberMapper.selectCount(wrapper);

--
Gitblit v1.9.3