Bladeren bron

Merge remote-tracking branch 'origin/master'

zhangying 1 jaar geleden
bovenliggende
commit
9216984951
21 gewijzigde bestanden met toevoegingen van 345 en 28 verwijderingen
  1. 1 1
      h5app/public/appconfig.json
  2. 15 0
      h5app/src/api/post/index.ts
  3. 13 0
      h5app/src/api/recommendmgt/index.ts
  4. 133 0
      h5app/src/components/picker.vue
  5. 26 16
      h5app/src/views/pages/post/edit.vue
  6. 53 7
      h5app/src/views/pages/post/list.vue
  7. 1 1
      src/main/java/com/hz/employmentsite/controller/WxController.java
  8. 9 0
      src/main/java/com/hz/employmentsite/controller/companyService/PostController.java
  9. 8 0
      src/main/java/com/hz/employmentsite/controller/jobUserManager/RecommendMgtController.java
  10. 28 0
      src/main/java/com/hz/employmentsite/jobs/sendWxMessageJob.java
  11. 3 0
      src/main/java/com/hz/employmentsite/mapper/cquery/RecommendMgtCQuery.java
  12. 2 2
      src/main/java/com/hz/employmentsite/services/impl/WechatServiceImpl.java
  13. 19 0
      src/main/java/com/hz/employmentsite/services/impl/companyService/PostServiceImpl.java
  14. 5 0
      src/main/java/com/hz/employmentsite/services/impl/jobUserManager/RecommendMgtServiceImpl.java
  15. 1 1
      src/main/java/com/hz/employmentsite/services/service/WechatService.java
  16. 1 0
      src/main/java/com/hz/employmentsite/services/service/companyService/PostService.java
  17. 3 0
      src/main/java/com/hz/employmentsite/services/service/jobUserManager/RecommendMgtService.java
  18. 8 0
      src/main/java/com/hz/employmentsite/vo/jobUserManager/ProfessionLevel.java
  19. 1 0
      src/main/resources/application.yml
  20. 14 0
      src/main/resources/mapping/cquery/RecommendMgtCQuery.xml
  21. 1 0
      vue/src/api/jobUserManager/recommendMgt/index.ts

+ 1 - 1
h5app/public/appconfig.json

@@ -1,5 +1,5 @@
 {
   "isDev": true,
   "webSiteUrl": "http://www.bowintek.com/hzyz/mobile/index.html/#",
-  "webApiServiceUrl": "http://www.bowintek.com/hzyz/api"
+  "webApiServiceUrl": ""
 }

+ 15 - 0
h5app/src/api/post/index.ts

@@ -72,4 +72,19 @@ export function saveCommendPostList(data:any) {
             errorMsg: '推荐失败!'
         },
     );
+}
+
+export function deletePostAndRecommendMgt(id:any) {
+    return request<object>(
+        {
+            url: 'companyService/post/deletePostAndRecommendMgt',
+            method: 'post',
+            params: {id},
+        },
+        {
+            isNew: true,
+            successMsg: '删除成功!',
+            errorMsg: '删除失败!'
+        },
+    );
 }

+ 13 - 0
h5app/src/api/recommendmgt/index.ts

@@ -40,4 +40,17 @@ export function getRecommendJobList(params: any) {
             isNew: true,
         },
     );
+}
+
+export function getProfessionLevelList() {
+    return request<object>(
+        {
+            url: "jobusermgr/recommendmgt/getProfessionLevelList",
+            method: 'get',
+            params: null,
+        },
+        {
+            isNew: true,
+        },
+    );
 }

+ 133 - 0
h5app/src/components/picker.vue

@@ -0,0 +1,133 @@
+<template>
+  <ion-button style="color: #02a6f1;font-size: 15px;" fill="clear" @click="openPicker()">选择</ion-button>
+</template>
+
+<script lang="ts">
+import {ref, watch, defineComponent} from 'vue';
+import {pickerController} from '@ionic/vue';
+import {PickerButton, PickerColumnOption, PickerColumn, PickerOptions} from '@ionic/core';
+import {getProfessionLevelList} from "@/api/recommendmgt";
+
+interface PickerColumnOptions extends PickerColumnOption {
+  parent?: any;
+}
+
+export default defineComponent({
+  name: 'picker',
+  props: {
+    ProfessionID: {type: String, default: ''},
+    },
+  setup(props,context) {
+    const proList = ref();
+    const pickerOptions = ref<PickerOptions>();
+    const pickerColumns = ref<PickerColumn[]>([]);
+    const pickerButtons = ref<PickerButton[]>([]);
+    const oneColumnOptions = ref<PickerColumnOptions[]>([]);
+    const twoColumnOptions = ref<PickerColumnOptions[]>([]);
+    const threeColumnOptions = ref<PickerColumnOptions[]>([]);
+    const oldColumnProfessionID1 = ref(props.ProfessionID);
+    const oldColumnProfessionID2 = ref();
+    getProfessionLevelList().then(data => {
+      proList.value = data;
+
+      oneColumnOptions.value = proList.value.filter((x: any) => x.professionLevel == "1").map((m: any) => ({
+        text: m.professionName,
+        value: m.professionID,
+        parent: m.parentProfessionID,
+        selected: false
+      }));
+      oneColumnOptions.value[0].selected=true;
+      oldColumnProfessionID1.value = pickerColumns.value[0]?.options[0].value;
+
+      twoColumnOptions.value = proList.value.filter((x: any) => x.professionLevel == "2").map((m: any) => ({
+        text: m.professionName,
+        value: m.professionID,
+        parent: m.parentProfessionID,
+        selected: false
+      }))
+      twoColumnOptions.value[0].selected=true;
+      oldColumnProfessionID2.value = pickerColumns.value[1]?.options[0].value;
+
+      threeColumnOptions.value = proList.value.filter((x: any) => x.professionLevel == "3").map((m: any) => ({
+        text: m.professionName,
+        value: m.professionID,
+        parent: m.parentProfessionID,
+        selected: false
+      }));
+
+      pickerColumns.value = [
+        {name: 'one', selectedIndex: 0, options: oneColumnOptions.value},
+        {name: 'two', selectedIndex: 1, options: twoColumnOptions.value},
+        {name: 'three', selectedIndex: 2, options: threeColumnOptions.value}
+      ]
+      pickerButtons.value = [
+        {text: '取消', role: 'cancel',},
+        {
+          text: '确定',
+          handler: (value) => {
+            context.emit("SetProfessionID",value.three);
+          },
+        },
+      ];
+    });
+    const picker = ref();
+    const openPicker = async () => {
+      picker.value = await pickerController.create({
+        columns: pickerColumns.value,
+        buttons: pickerButtons.value
+      });
+
+      watch(pickerColumns.value.filter(f=>f.name=="one")[0].options.filter(f=>f.selected==true)[0], () => {
+        const newVal = pickerColumns.value.filter(f=>f.name=="one")[0].options.filter(f=>f.selected==true)[0]
+        if (oldColumnProfessionID1.value != newVal?.value) {
+          pickerColumns.value.map(x => {
+            if (x.name == "two") {
+              x.options = twoColumnOptions.value.filter(x => x.parent==newVal?.value);
+              if(x.options.length>0){
+                oldColumnProfessionID2.value = x.options[0].value;
+                x.options[0].selected=true;
+              }
+            }
+          })
+
+          pickerColumns.value.map(x => {
+            if (x.name == "three") {
+              x.options = threeColumnOptions.value.filter(f => f.parent == oldColumnProfessionID2.value);
+              if(x.options.length>0) {
+                x.options[0].selected = true;
+              }
+            }
+          })
+
+          pickerController.dismiss().then((e) => {console.log(e)})
+          openPicker()
+          oldColumnProfessionID1.value = newVal?.value;
+        }
+      });
+
+      watch(pickerColumns.value.filter(f=>f.name=="two")[0].options.filter(f=>f.selected==true)[0], () => {
+        const newVal = pickerColumns.value.filter(f=>f.name=="two")[0].options.filter(f=>f.selected==true)[0]
+
+        if (oldColumnProfessionID2.value != newVal.value) {
+          pickerColumns.value.map(x => {
+            if (x.name == "three") {
+              x.options = threeColumnOptions.value.filter(f => f.parent == newVal.value);
+            }
+          })
+
+          pickerController.dismiss().then((e) => {console.log(e)})
+          openPicker()
+          oldColumnProfessionID2.value = newVal.value;
+        }
+      });
+
+      await picker.value.present();
+    }
+
+    return {
+      openPicker,
+    }
+  }
+});
+</script>
+

+ 26 - 16
h5app/src/views/pages/post/edit.vue

@@ -15,8 +15,8 @@
         <div class="bw-vue-form">
           <div class="form-title">基础信息</div>
           <div class="form-select">
-            <ion-label>企业</ion-label>
-            <ion-item>
+            <ion-label>企业<span class="danger">*</span></ion-label>
+            <ion-item :class="[v$.dataModel.companyID.$error?'ion-invalid':'ion-valid']">
               <ion-select interface="action-sheet" placeholder="请选择企业" cancel-text="取消"
                           id="companyID" v-model="dataModel.companyID" style="width: 100%;text-align: left;">
                 <ion-select-option v-for="(record,key) in companyList" :key="key"
@@ -24,15 +24,17 @@
                   {{ record.companyName }}
                 </ion-select-option>
               </ion-select>
+              <ion-note slot="error">请选择企业</ion-note>
             </ion-item>
           </div>
           <div class="form-input">
             <ion-label>岗位名称<span class="danger">*</span></ion-label>
-            <ion-item :class="[v$.dataModel.postName.$error?'ion-invalid':'ion-valid']">
-              <ion-input placeholder="请输入岗位名称" label-placement="stacked" :clear-input="true"
-                         v-model="dataModel.postName" class="custom">
+            <ion-item :class="[v$.dataModel.professionName.$error?'ion-invalid':'ion-valid']">
+              <ion-input placeholder="请选择岗位" label-placement="stacked" :clear-input="true"
+                        aria-disabled="true" v-model="dataModel.professionName" class="custom">
               </ion-input>
-              <ion-note slot="error">请输入岗位名称</ion-note>
+              <picker :ProfessionID="dataModel.professionID" aria-disabled="false"  @SetProfessionID="onSetProfessionID"></picker>
+              <ion-note slot="error">请选择岗位</ion-note>
             </ion-item>
           </div>
           <div class="form-input">
@@ -132,7 +134,7 @@
                 </ion-input>
               </ion-item>
             </div>
-            <div class="form-input">
+            <div class="form-select">
               <ion-label>工作年限要求</ion-label>
               <ion-item>
                 <ion-select interface="action-sheet" placeholder="请选择工作年限" cancel-text="取消"
@@ -197,9 +199,13 @@ import {getSysDictionaryList} from "@/api/system/dictionary";
 import {getCompanyBySiteID} from "@/api/company";
 import {useUserStore} from '@/store/modules/user';
 import dayjs from "dayjs";
+import Picker from "@/components/picker.vue";
 
 export default defineComponent({
   name: 'PostEdit',
+  components:{
+    Picker
+  },
   setup() {
     const router = useRouter();
     const route = useRoute();
@@ -210,7 +216,8 @@ export default defineComponent({
       dataModel: {
         companyID: null,
         postID: null,
-        postName: null,
+        professionName: null,
+        professionID: null,
         recruitCount: null,
         startTime: dayjs().format("YYYY-MM-DD"),
         endTime: dayjs().format("YYYY-MM-DD"),
@@ -230,7 +237,8 @@ export default defineComponent({
     const rules = computed(() => {
       return {
         dataModel: {
-          postName: {required},
+          companyID: {required},
+          professionName: {required},
           recruitCount: {required},
           startTime: {required},
           endTime: {required},
@@ -257,7 +265,10 @@ export default defineComponent({
       });
       await alert.present();
     }
-
+    const onSetProfessionID = (data: any)=>{
+      formState.dataModel.professionID = data.value;
+      formState.dataModel.professionName = data.text;
+    }
     const onSave = async function () {
       const isFormCorrect = await v$.value.$validate();
       if (!isFormCorrect) {
@@ -292,24 +303,22 @@ export default defineComponent({
       console.log(cultureRankList.value);
     }
 
-    const loadData = async (postID: any, companyID: any) => {
+    const loadData = async (postID: any) => {
       await getCompanyBySiteIDList();
       await getWorkYearList();
       await getCultureRankList();
       const reqData = await getPostByID(postID);
       formState.dataModel = reqData;
-      formState.dataModel.companyID = companyID;
-      console.log("初始化岗位信息", formState.dataModel);
     };
 
-    const reload = (postID: any, companyID: any) => {
+    const reload = (postID: any) => {
       formState.dataModel.recruitCount = null;
-      loadData(postID, companyID);
+      loadData(postID);
     }
 
     onIonViewDidEnter(() => {
       if (route.query.reload)
-        reload(route.query.id, route.query.companyID);
+        reload(route.query.id);
     });
 
     return {
@@ -326,6 +335,7 @@ export default defineComponent({
       workYearList,
       cultureRankList,
       v$,
+      onSetProfessionID,
       onSave,
       back,
     }

+ 53 - 7
h5app/src/views/pages/post/list.vue

@@ -19,14 +19,16 @@
         </ion-button>
       </ion-item>
       <ion-list class="list-content">
-        <ion-item v-for="(record,key) in dataList" :key="key" detail @click="onEdit(record.postID)">
+        <div v-for="(record,key) in dataList" :key="key">
+          <ion-item-sliding>
+        <ion-item>
           <ion-label>
             <h3>{{ record.professionName}}</h3>
             <p>{{ record.companyName }}</p>
             <p>{{ dayjs(record.startTime).format("YYYY-MM-DD")}}至{{ dayjs(record.endTime).format("YYYY-MM-DD")}}</p>
             <ion-label style="display: flex;justify-content: space-between;">
               <p>
-                招聘人数:{{ record.recruitCount == null ? "0" : record.insuredCount }}人
+                招聘人数:{{ record.recruitCount == null ? "0" : record.recruitCount }}人
               </p>
               <p>
                 已推荐人数:{{ record.recommendNum }}
@@ -37,6 +39,16 @@
             <p style="font-size: 14px !important;">推荐</p>
           </ion-avatar>
         </ion-item>
+        <ion-item-options>
+          <ion-item-option @click="onEdit(record.postID)">
+            <ion-icon :icon="buildOutline"></ion-icon>
+          </ion-item-option>
+          <ion-item-option color="danger" @click="onDel(record.postID)">
+            <ion-icon :icon="trashOutline"></ion-icon>
+          </ion-item-option>
+        </ion-item-options>
+        </ion-item-sliding>
+        </div>
       </ion-list>
       <b-empty v-if="dataList.length<=0" :loading="loading"/>
       <ion-infinite-scroll threshold="100px" @ionInfinite="onScroll($event)">
@@ -54,10 +66,10 @@
 import {computed, defineComponent, reactive, ref} from 'vue';
 import dayjs from "dayjs";
 import {useRoute, useRouter} from "vue-router";
-import {arrowBackOutline, ellipse, addCircleOutline} from 'ionicons/icons';
-import {IonIcon, onIonViewDidEnter} from '@ionic/vue';
+import {arrowBackOutline, addCircleOutline,buildOutline,trashOutline} from 'ionicons/icons';
+import {alertController, IonIcon, onIonViewDidEnter} from '@ionic/vue';
 import BEmpty from "@/components/empty.vue";
-import {getPostList} from '@/api/post/index'
+import {getPostList,deletePostAndRecommendMgt} from '@/api/post/index'
 
 export default defineComponent({
   name: 'PostList',
@@ -106,12 +118,40 @@ export default defineComponent({
       }, 500);
     }
 
+    const onDetail = () => {
+      router.push({path: './detail', query: {reload: 1,id: null,status: 1}});
+    }
+
     const onAdd = () => {
       router.push({path: './edit', query: {reload: 1,id: null,status: 1}});
     }
 
     const onEdit = (postID:string) => {
-      router.push({path: './menu', query: {reload: 1,id: postID,status: 2}});
+      router.push({path: './edit', query: {reload: 1,id: postID,status: 2}});
+    }
+
+    const onDel = async (postID: any) => {
+      const alert = await alertController.create({
+        header: '提示!',
+        message: '是否确认删除?',
+        buttons: [
+          {
+            text: '取消',
+            role: 'cancel'
+          },
+          {
+            text: '确认删除',
+            handler: () => {
+              deletePostAndRecommendMgt(postID).then(result => {
+                if (result)
+                  reload();
+              });
+            }
+          }
+        ],
+      });
+
+      await alert.present();
     }
 
     const onRecommendJob = (item: any) =>{
@@ -126,10 +166,14 @@ export default defineComponent({
       if(route.query.reload)reload();
     });
 
+    const onPicker = () => {
+      router.push({path: './picker', query: {}});
+    }
     return {
-      ellipse,
       arrowBackOutline,
       addCircleOutline,
+      buildOutline,
+      trashOutline,
       router,
       colors,
       total,
@@ -137,9 +181,11 @@ export default defineComponent({
       dataList,
       pagination,
       searchParams,
+      onPicker,
       onBack,
       onAdd,
       onEdit,
+      onDel,
       onRecommendJob,
       onScroll,
       loadData,

+ 1 - 1
src/main/java/com/hz/employmentsite/controller/WxController.java

@@ -56,7 +56,7 @@ public class WxController {
         data.put("keyword3","2014年9月22日");
 
 
-        return RespGenerstor.success(wechatService.sentMsg("admin",data));
+        return RespGenerstor.success(wechatService.sentMsg("admin",data,""));
     }
 
 }

+ 9 - 0
src/main/java/com/hz/employmentsite/controller/companyService/PostController.java

@@ -110,6 +110,15 @@ public class PostController {
         return RespGenerstor.success(1);
     }
 
+    @ResponseBody
+    @PostMapping("/deletePostAndRecommendMgt")
+    public BaseResponse<Integer> deletePostAndRecommendMgt(String id) {
+        Integer result = postService.deletePostAndRecommendMgt(id);
+        if (result <= 0)
+            throw new BaseException(BaseErrorEnum.DELETE_NOT_DATA_ERROR);
+        return RespGenerstor.success(1);
+    }
+
     @GetMapping("/export")
     public BaseResponse export(HttpServletResponse response, @RequestParam(required = false) Boolean isExport,
                                @RequestParam("pageIndex") int pageIndex, @RequestParam("pageSize") int pageSize,

+ 8 - 0
src/main/java/com/hz/employmentsite/controller/jobUserManager/RecommendMgtController.java

@@ -6,6 +6,7 @@ import com.hz.employmentsite.filter.exception.RespGenerstor;
 import com.hz.employmentsite.model.PcRecommendMgt;
 import com.hz.employmentsite.services.service.AccountService;
 import com.hz.employmentsite.services.service.jobUserManager.RecommendMgtService;
+import com.hz.employmentsite.vo.jobUserManager.ProfessionLevel;
 import com.hz.employmentsite.vo.jobUserManager.RecommendCompanyPostVo;
 import com.hz.employmentsite.vo.jobUserManager.RecommendJobVo;
 import com.hz.employmentsite.vo.jobUserManager.RecommendMgtVo;
@@ -64,4 +65,11 @@ public class RecommendMgtController {
         PageInfo<RecommendJobVo> result = recommendMgtService.getRecommendJobList(pageIndex, pageSize, postID, professionID, userName, type, cultureLeve, keyPersonType);
         return RespGenerstor.success(result);
     }
+
+    @ResponseBody
+    @GetMapping("/getProfessionLevelList")
+    public BaseResponse getProfessionLevelList() {
+        List<ProfessionLevel> result = recommendMgtService.getProfessionLevelList();
+        return RespGenerstor.success(result);
+    }
 }

+ 28 - 0
src/main/java/com/hz/employmentsite/jobs/sendWxMessageJob.java

@@ -0,0 +1,28 @@
+package com.hz.employmentsite.jobs;
+
+import com.hz.employmentsite.AppConfig;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+@Component
+@Slf4j
+public class sendWxMessageJob {
+    @Autowired
+    private AppConfig appConfig;
+
+    @Scheduled(cron="${appconfig.jobconfig.send-wxmessage-cron}")
+    public void syncClassData() {
+        if (appConfig.jobconfig_isRunJob) {
+            log.info("开始推送微信通知");
+            try {
+
+            } catch (Exception e) {
+                log.info("推送微信通知数据错误:" + e.getMessage());
+            }
+            log.info("推送微信通知结束");
+        }
+    }
+
+}

+ 3 - 0
src/main/java/com/hz/employmentsite/mapper/cquery/RecommendMgtCQuery.java

@@ -1,5 +1,6 @@
 package com.hz.employmentsite.mapper.cquery;
 
+import com.hz.employmentsite.vo.jobUserManager.ProfessionLevel;
 import com.hz.employmentsite.vo.jobUserManager.RecommendCompanyPostVo;
 import com.hz.employmentsite.vo.jobUserManager.RecommendJobVo;
 import com.hz.employmentsite.vo.jobUserManager.RecommendMgtVo;
@@ -37,4 +38,6 @@ public interface RecommendMgtCQuery {
     List<RecommendJobVo> getRecommendJobList(@Param("postID")String postID, @Param("professionID") String professionID,
                                              @Param("userName")String userName, @Param("type") Integer type,
                                              @Param("cultureLeve") Integer cultureLeve, @Param("keyPersonType") Integer keyPersonType);
+
+   List<ProfessionLevel> getProfessionLevelList();
 }

+ 2 - 2
src/main/java/com/hz/employmentsite/services/impl/WechatServiceImpl.java

@@ -43,7 +43,7 @@ public class WechatServiceImpl implements WechatService {
     }
 
     @Override
-    public Integer sentMsg(String toUserId, Map<String,String> sentData){
+    public Integer sentMsg(String toUserId, Map<String,String> sentData,String url){
         String openId = "";
 
         //数据
@@ -58,7 +58,7 @@ public class WechatServiceImpl implements WechatService {
                 .toUser(openId)//要推送的用户openid
                 .data(data) //数据
                 .templateId(appConfig.wxMessageTemplateId)//模版id
-                .url("http://www.baidu.com") // 点击详情跳转地址
+                .url(url) // 点击详情跳转地址
                 .build();
         //发起推送
         try {

+ 19 - 0
src/main/java/com/hz/employmentsite/services/impl/companyService/PostServiceImpl.java

@@ -6,6 +6,7 @@ import com.hz.employmentsite.filter.exception.BaseException;
 import com.hz.employmentsite.mapper.PcCompanyMapper;
 import com.hz.employmentsite.mapper.PcPostMapper;
 import com.hz.employmentsite.mapper.PcRecommendMapper;
+import com.hz.employmentsite.mapper.PcRecommendMgtMapper;
 import com.hz.employmentsite.mapper.cquery.PostCQuery;
 import com.hz.employmentsite.model.*;
 import com.hz.employmentsite.services.service.companyService.PostService;
@@ -38,6 +39,9 @@ public class PostServiceImpl implements PostService {
     @Autowired
     private PcRecommendMapper pcRecommendMapper;
 
+    @Autowired
+    private PcRecommendMgtMapper pcRecommendMgtMapper;
+
     @Autowired
     private PcCompanyMapper companyMapper;
 
@@ -189,6 +193,21 @@ public class PostServiceImpl implements PostService {
         return result;
     }
 
+    @Override
+    public int deletePostAndRecommendMgt(String id) {
+        try{
+            PcRecommendMgtExample exp = new PcRecommendMgtExample();
+            PcRecommendMgtExample.Criteria cro = exp.or();
+            cro.andPostIDEqualTo(id);
+            pcRecommendMgtMapper.deleteByExample(exp);
+            pcPostMapper.deleteByPrimaryKey(id);
+            return 1;
+        }catch (Exception e){
+            e.printStackTrace();
+            return 0;
+        }
+    }
+
     @Override
     public PostVo getDataById(String id) {
         List<String> ids = new ArrayList<>();

+ 5 - 0
src/main/java/com/hz/employmentsite/services/impl/jobUserManager/RecommendMgtServiceImpl.java

@@ -7,6 +7,7 @@ import com.hz.employmentsite.mapper.cquery.RecommendMgtCQuery;
 import com.hz.employmentsite.model.PcRecommendMgt;
 import com.hz.employmentsite.services.service.jobUserManager.RecommendMgtService;
 import com.hz.employmentsite.util.StringUtils;
+import com.hz.employmentsite.vo.jobUserManager.ProfessionLevel;
 import com.hz.employmentsite.vo.jobUserManager.RecommendCompanyPostVo;
 import com.hz.employmentsite.vo.jobUserManager.RecommendJobVo;
 import com.hz.employmentsite.vo.jobUserManager.RecommendMgtVo;
@@ -101,4 +102,8 @@ public class RecommendMgtServiceImpl implements RecommendMgtService {
         PageInfo<RecommendJobVo> result = new PageInfo(list);
         return result;
     }
+
+    public List<ProfessionLevel> getProfessionLevelList(){
+        return recommendMgtCQuery.getProfessionLevelList();
+    }
 }

+ 1 - 1
src/main/java/com/hz/employmentsite/services/service/WechatService.java

@@ -8,7 +8,7 @@ public interface WechatService {
 
     String getOAuthUrl(String redirectUrl);
 
-    Integer sentMsg(String toUserId, Map<String,String> sentData);
+    Integer sentMsg(String toUserId, Map<String,String> sentData,String url);
 
     String getOpenId(String code) throws WxErrorException;
 

+ 1 - 0
src/main/java/com/hz/employmentsite/services/service/companyService/PostService.java

@@ -15,4 +15,5 @@ public interface PostService {
     List<PcPost> getDataListByCompanyId(String companyID);
     List<PostVo> importPost(List<PostVo> dataList, String userID);
 
+    int deletePostAndRecommendMgt(String id);
 }

+ 3 - 0
src/main/java/com/hz/employmentsite/services/service/jobUserManager/RecommendMgtService.java

@@ -2,6 +2,7 @@ package com.hz.employmentsite.services.service.jobUserManager;
 
 import com.github.pagehelper.PageInfo;
 import com.hz.employmentsite.model.PcRecommendMgt;
+import com.hz.employmentsite.vo.jobUserManager.ProfessionLevel;
 import com.hz.employmentsite.vo.jobUserManager.RecommendCompanyPostVo;
 import com.hz.employmentsite.vo.jobUserManager.RecommendJobVo;
 import com.hz.employmentsite.vo.jobUserManager.RecommendMgtVo;
@@ -46,4 +47,6 @@ public interface RecommendMgtService {
      * */
     PageInfo<RecommendJobVo> getRecommendJobList(Integer page, Integer rows, String postId, String professionId, String userName,
                                                  Integer type, Integer cultureLeve, Integer keyPersonType);
+
+    List<ProfessionLevel> getProfessionLevelList();
 }

+ 8 - 0
src/main/java/com/hz/employmentsite/vo/jobUserManager/ProfessionLevel.java

@@ -0,0 +1,8 @@
+package com.hz.employmentsite.vo.jobUserManager;
+
+
+import com.hz.employmentsite.model.PcProfession;
+
+public class ProfessionLevel extends PcProfession {
+    public String professionLevel;
+}

+ 1 - 0
src/main/resources/application.yml

@@ -103,6 +103,7 @@ appconfig:
     class-cron: '0 0 5 1 * ?'
     student-cron: '0 0 6 1 * ?'
     teacher-cron: '0 0 7 1 * ?'
+    send-wxmessage-cron: '0 0/5 * * * ?'
 
   #同步教务系统组织结构数据配置
   educonfig:

+ 14 - 0
src/main/resources/mapping/cquery/RecommendMgtCQuery.xml

@@ -98,4 +98,18 @@
         </where>
         order by a.CreateTime desc
     </select>
+    <select id="getProfessionLevelList" resultType="com.hz.employmentsite.vo.jobUserManager.ProfessionLevel">
+        select ProfessionID,ParentProfessionID,ProfessionName,'1' as ProfessionLevel from pc_profession where ParentProfessionID = ''
+        union all
+        select a.ProfessionID,a.ParentProfessionID,a.ProfessionName,'2' as ProfessionLevel
+        from pc_profession a
+        inner join (select ProfessionID from pc_profession where ParentProfessionID = '' ) b on a.ParentProfessionID=b.ProfessionID
+        union all
+        select c.ProfessionID,c.ParentProfessionID,c.ProfessionName,'3' as ProfessionLevel
+        from pc_profession c
+        inner join (select a.ProfessionID
+                     from pc_profession a
+                     inner join (select ProfessionID from pc_profession where ParentProfessionID = '' ) b on a.ParentProfessionID=b.ProfessionID) bb
+        on c.ParentProfessionID=bb.ProfessionID
+    </select>
 </mapper>

+ 1 - 0
vue/src/api/jobUserManager/recommendMgt/index.ts

@@ -66,3 +66,4 @@ export function getRecommendJobList(params: any) {
     },
   );
 }
+