jiangping
2025-07-15 ea99df3cd96a57e6478c20c85eaaf44ce0ad1481
前端
已修改12个文件
490 ■■■■ 文件已修改
admin/src/api/business/identityInfo.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaMemberDetailWindow.vue 292 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/admin/src/main/java/com/doumee/api/business/IdentityInfoController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/api/common/PublicCloudController.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/biz/system/SystemDictDataBiz.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/core/constants/Constants.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/model/IdentityInfo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/model/Orders.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/system/model/SystemDictData.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/IdentityInfoService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/identityInfo.js
@@ -6,6 +6,11 @@
    trim: true
  })
}
export function allList (data) {
  return request.post('/business/identityInfo/memberList', data, {
    trim: true
  })
}
// 创建
export function create (data) {
admin/src/components/business/OperaMemberDetailWindow.vue
@@ -93,122 +93,83 @@
          :total="tableData.total">
      </el-pagination>
    </div>
    <div class="main" v-if="activeTabs === 1 && info">
    <div class="main"   v-if="activeTabs === 1 && info">
      <el-radio-group v-model="type" @change="changeType" style="margin-bottom: 20px;">
        <el-radio-button :label="0">收到的评价</el-radio-button>
        <el-radio-button :label="1">发布的评价</el-radio-button>
      </el-radio-group>
      <el-table
        :data="tableData"
        border
        v-loading="loading"
        style="width: 100%">
        <el-table-column
          width="150"
          label="账单编号">
        </el-table-column>
        <el-table-column
          label="费用类型">
        </el-table-column>
        <el-table-column
          prop="totleFee"
          label="账单金额">
        </el-table-column>
        <el-table-column
          :key="Date.now()"
          prop="receivableFee"
          :label="`应${type === 0 ? '收' : '付'}金额`">
        </el-table-column>
        <el-table-column
          prop="actReceivableFee"
          :label="`实${type === 0 ? '收' : '付'}金额`">
        </el-table-column>
        <el-table-column
          :label="`需${type === 0 ? '收' : '付'}金额`">
          v-loading="isWorking.search"
          :data="tableData1.records"
          stripe
      >
        <el-table-column prop="commentTime" label="评价时间" min-width="150px"  align="center">
          <template slot-scope="{row}">
            <template v-if="type === 0">
              <el-tag type="success" v-if="row.needReceivableFee > 0">收</el-tag>
              <el-tag type="warning" v-else-if="row.needReceivableFee < 0">付</el-tag>
            </template>
            <template v-else>
              <el-tag type="warning" v-if="row.needReceivableFee !== 0">付</el-tag>
            </template>
            <span style="margin-left: 10px;">{{Math.abs(row.needReceivableFee)}}</span>
            <span >{{ row.commentTime  }}</span>
          </template>
        </el-table-column>
        <el-table-column
          label="账单来源">
        <el-table-column prop="commentLevel" label="评分" width="120px"  align="center">
          <template slot-scope="{row}">
            <span v-if="row.type === 0">合同账单</span>
            <span v-else>自建账单</span>
            <span class="yellowbtn">{{ row.commentLevel || 0 }}分</span>
          </template>
        </el-table-column>
        <el-table-column
          width="200"
          label="计费周期">
        <el-table-column prop="commentInfo" label="评价内容" min-width="100px"  align="center"></el-table-column>
        <el-table-column prop="code" label="订单号" min-width="100px"  align="center">  </el-table-column>
        <el-table-column prop="type" label="订单类型" min-width="100px"  align="center">
          <template slot-scope="{row}">
            {{ row.startDate }} ~ {{ row.endDate }}
            <span v-if="row.type ==0" >用工单
                <span v-if="row.workType ==0">/采摘工</span>
                <span v-if="row.workType ==1">/分拣工</span>
                <span v-if="row.workType ==2">/包装工</span>
            </span>
            <span v-if="row.type ==1" >运货单</span>
            <span v-if="row.type ==2"  >订餐单</span>
          </template>
        </el-table-column>
        <el-table-column
          prop="planPayDate"
          label="应收日期">
        </el-table-column>
        <el-table-column
          label="是否逾期">
        </el-table-column>
        <el-table-column
          fixed="right"
          label="状态">
        </el-table-column>
      </el-table>
      <el-pagination
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        :current-page="page"
        :page-sizes="[10, 15, 20, 25]"
        :page-size="pageSize"
        layout="total, sizes, prev, pager, next, jumper"
        :total="total">
          @current-change="handleCurrentChange0"
          :current-page="page1"
          :page-size="pageSize"
          layout="total, prev, pager, next, jumper"
          :total="tableData1.total">
      </el-pagination>
    </div>
    <div class="main" v-if="activeTabs === 2 && info">
      <div class="title">操作记录</div>
      <el-table
        :data="info.logList"
        border
        style="width: 100%">
        <el-table-column
          :key="Date.now()"
          width="200"
          prop="param1"
          label="操作人">
        </el-table-column>
        <el-table-column
          :key="Date.now()"
          width="200"
          prop="createDate"
          label="操作时间">
        </el-table-column>
        <el-table-column
          :key="Date.now()"
          width="150"
          label="操作">
          <template slot-scope="{row}">
            <span v-if="row.objType === 0">工单创建</span>
            <span v-if="row.objType === 1">指派</span>
            <span v-if="row.objType === 2">处理</span>
            <span v-if="row.objType === 3">合同创建</span>
            <span v-if="row.objType === 4">合同变更</span>
            <span v-if="row.objType === 5">合同退租</span>
          </template>
        </el-table-column>
        <el-table-column
          :key="Date.now()"
          prop="content"
          label="操作内容">
        </el-table-column>
      </el-table>
      <div class="renzheng"   v-for="item in tableData2">
          <div class="info" >
              <span class="m10" v-if="item.type ==0">用工认证</span>
              <span class="m10" v-if="item.type ==1">货运认证</span>
              <span class="m10" v-if="item.type ==2">供餐认证</span>
              <el-tag type="primary" class="mr10 tag2" v-if="item.auditStatus == 0">认证中</el-tag>
              <el-tag type="success" class="mr10 tag2" v-if="item.auditStatus == 1">认证通过</el-tag>
              <el-tag type="danger" class="mr10 tag2" v-if="item.auditStatus == 2">认证失败</el-tag>
          </div>
          <div class="detail" >
            <div class="line">
              <span class="label"> 认证类型:</span> <span class="txt">{{item.authType == 0? '个人':'企业' }}</span>
              <span class="label"> 联系人:</span> <span class="txt">{{item.linkName || '' }}</span>
              <span class="label"> 联系方式:</span> <span class="txt">{{item.telephone || '' }}</span>
            </div>
            <template v-if="item.authType ==1">
              <div class="line">
                <span class="label">单位位置:</span><span class="txt">{{item.location || '' }}</span>
                <span class="label">单位名称:</span><span class="txt">{{item.companyName || '' }}</span>
              </div>
              <div class="line"> <span class="label">认证资料:</span> <span v-if="!item.imgList || item.imgList.length==0" class="txt">无</span> </div>
            </template>
            <template v-else>
              <div class="line">  <span class="label">身份信息:</span> <span v-if="!item.imgList || item.imgList.length==0" class="txt">无</span> </div>
            </template>
              <div class="line" v-if="item.imgList && item.imgList.length>0">
                <div v-for="info in item.imgList">
                  <el-image v-if="info" style="width: 50px; height: 50px; margin-right: 10px" :src="info"
                            :preview-src-list="[info]">
                  </el-image>
                </div>
              </div>
          </div>
        </div>
    </div>
  </GlobalWindow>
</template>
@@ -218,8 +179,8 @@
import BaseOpera from '@/components/base/BaseOpera'
import { getById } from '@/api/business/member'
import { fetchList as yueList, exportExcel as yueExportExcel } from '@/api/business/memberRevenue'
import { commentList } from '@/api/business/orders'
import { fetchList as renzhengList } from '@/api/business/identityInfo'
import { fetchList as commentList } from '@/api/business/orders'
import { allList as renzhengList} from '@/api/business/identityInfo'
export default {
  components: {
    GlobalWindow
@@ -236,9 +197,10 @@
      page: 1,
      total: 0,
      tableData: {},
      tableData1: {},
      tableData2:[],
      page0: 1,
      totalPage0: 0,
      total0: 0,
      page1: 1,
      loading: false,
      export0: false,
      searchForm: {
@@ -246,6 +208,8 @@
        startTime: null,
        endTime: null,
        optType: null,
        acceptMemberId: -1,
        releaseMemberId: -1,
        transactionNo: null
      }
    }
@@ -257,11 +221,20 @@
      this.activeTabs = 0
      this.type = 0
      this.page0 = 1
      this.totalPage0 = 0
      this.total0 = 0
      this.pageSize = 10
      this.tableData = {}
      this.tableData1 = {}
      this.tableData2 = []
      this.id = id
      this.searchForm = {
        type: 0,
        startTime: null,
        endTime: null,
        optType: null,
        acceptMemberId: -1,
        releaseMemberId: -1,
        transactionNo: null
      }
      this.getData()
    },
    getData () {
@@ -269,7 +242,9 @@
        .then(res => {
          this.info = res
          this.visible = true
          this.handleCurrentChange0(0)
          this.handleCurrentChange0(1)
          this.changeType(0)
          this.getRenzhengList()
        })
    },
    exportExcel0 () {
@@ -287,8 +262,8 @@
              transactionNo: this.searchForm.transactionNo
            }
          }).then(response => {
              this.download(response)
            })
            this.download(response)
          })
            .catch(e => {
              this.$tip.apiFailed(e)
            })
@@ -310,6 +285,10 @@
      this.page0 = page
      this.getYueList()
    },
    handleCurrentChange1 (page) {
      this.page1 = page
      this.getCommentList()
    },
    getYueList () {
      this.loading = true
      yueList({
@@ -325,9 +304,27 @@
      }).then(res => {
        this.loading = false
        this.tableData = res
        this.total0 = res.total
        this.totalPage0 = res.total
        console.log(this.tableData)
      }).catch(e => {
        this.$tip.apiFailed(e)
      }).finally(() => {
        this.loading = false
      })
    },
    getCommentList () {
      this.loading = true
      commentList({
        capacity: this.pageSize,
        page: this.page1,
        model: {
          acceptMemberId: this.searchForm.acceptMemberId,
          releaseMemberId: this.searchForm.releaseMemberId,
          commentStatus: 1
        }
      }).then(res => {
        this.loading = false
        this.tableData1 = res
        console.log(this.tableData1)
      }).catch(e => {
        this.$tip.apiFailed(e)
      }).finally(() => {
@@ -340,60 +337,32 @@
    getRenzhengList () {
      this.loading = true
      renzhengList({
        capacity: this.pageSize,
        page: this.page,
        model: {
          startTime: this.searchForm.startTime,
          endTime: this.searchForm.endTime,
          optType: this.searchForm.optType,
          transactionNo: this.searchForm.transactionNo
        }
        memberId: this.id || -1
      }).then(res => {
        this.loading = false
        this.tableData = res.records
        this.total = res.total
        this.tableData2 = res
      }).catch(e => {
        this.$tip.apiFailed(e)
      }).finally(() => {
        this.loading = false
      })
    },
    getCommentList () {
      this.loading = true
      commentList({
        capacity: this.pageSize,
        page: this.page,
        model: {
          status: 0,
          billType: this.type,
          contractId: this.info.id
        }
      }).then(res => {
        this.loading = false
        this.tableData = res.records
        this.total = res.total
      })
    },
    changeType (e) {
      this.type = e
      this.page = 1
      this.pageSize = 10
      this.tableData = []
      this.getList()
      this.searchForm.acceptMemberId = -1
      this.searchForm.releaseMemberId = -1
      if (e == 0) {
        this.searchForm.releaseMemberId = this.info.id || -1
        this.searchForm.acceptMemberId = null
      } else {
        this.searchForm.acceptMemberId = this.info.id || -1
        this.searchForm.releaseMemberId =null
      }
      this.page1 = 1
      this.tableData1 = {}
      this.handleCurrentChange1(0)
    },
    tabsClick (val) {
      this.activeTabs = val
    },
    getDetail () {
    },
    handleSizeChange (e) {
      this.pageSize = e
      this.getList()
    },
    handleCurrentChange (e) {
      this.page = e
      this.getList()
    }
  }
}
@@ -401,6 +370,29 @@
<style lang="scss" scoped>
@import '@/assets/style/variables.scss';
.renzheng{
  margin: 0px 0px 50px 20px;
  width: calc(100% - 60px);
  .detail{
    font-size: 14px;
    .label{
      color: #8c939d;
    }
    .txt{
      margin-right: 30px;
    }
    .line{
      margin-top: 15px;
    }
  }
  .info{
    font-size: 14px;
    font-weight: bold;
  }
  .tag2{
    font-size: 12px;
  }
}
.home_title {
  .mr10{
    margin-right: 10px;
server/admin/src/main/java/com/doumee/api/business/IdentityInfoController.java
@@ -73,6 +73,12 @@
    public ApiResponse<PageData<IdentityInfo>> findPage (@RequestBody PageWrap<IdentityInfo> pageWrap) {
        return ApiResponse.success(identityInfoService.findPage(pageWrap));
    }
    @ApiOperation("查询用户认证集合")
    @PostMapping("/memberList")
    @RequiresPermissions("business:identityinfo:query")
    public ApiResponse<List<IdentityInfo>> findMemberList (@RequestBody IdentityInfo pageWrap) {
        return ApiResponse.success(identityInfoService.findMemberList(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
server/services/src/main/java/com/doumee/api/common/PublicCloudController.java
@@ -67,77 +67,6 @@
                systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.FILE_DIR).getCode());
    }
    @ApiOperation(value = "上传OBS", notes = "上传OBS", httpMethod = "POST", position = 6)
    @ApiImplicitParams({
            @ApiImplicitParam(name = "folder", value = "文件夹", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
            @ApiImplicitParam(name = "file", value = "文件夹", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
    })
    @PostMapping(value = "/upload", headers = "content-type=multipart/form-data")
    @ResponseBody
    public void upload(HttpServletRequest request, HttpServletResponse response, String folder) throws Exception {
        Date d1 = new Date();
        log.error("总得上传文件成功=============开始========="+DateUtil.getPlusTime2(d1));
        SystemDictData folderData =  systemDictDataBiz.queryByCode(Constants.FTP,folder);
        if(Objects.isNull(folderData)||StringUtils.isBlank(folderData.getCode())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"目标文件夹错误");
        }
        folder =folderData.getCode().replace("/", "");
        String prefixPath = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode();
        InputStream is = null;
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        Map<String, Object> context = new HashMap<>();
        try {
            CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver();
            if (multipartResovler.isMultipart(request)) {
                MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
                Iterator<String> it = multipartRequest.getFileNames();
                while (it.hasNext()) {
                    MultipartFile file = multipartRequest.getFile(it.next());
                    System.out.println(file.getSize());
                    String originname = file.getOriginalFilename();
                    is = file.getInputStream();
                    String endType = ".jpg";
                    if(originname.indexOf(".")>0){
                        endType=originname.substring(originname.lastIndexOf("."),originname.length());
                    }
                    String date = DateUtil.getNowShortDate();
                    String fName =  date+"/"+ UUID.randomUUID()+endType;
                    String fileName = folder+"/"+fName;
                    boolean r =false;
                    ObsUtil obsUtil = new ObsUtil( systemDictDataBiz.queryByCode(Constants.HWY_OBS,Constants.HWY_OBS_ACCESSID).getCode(),
                            systemDictDataBiz.queryByCode(Constants.HWY_OBS,Constants.HWY_OBS_ACCESSKEY).getCode(),
                            systemDictDataBiz.queryByCode(Constants.HWY_OBS,Constants.HWY_OBS_ENDPOINT).getCode());
                    r = obsUtil.uploadFile( systemDictDataBiz.queryByCode(Constants.HWY_OBS,Constants.HWY_OBS_BUCKET).getCode(),is,fileName);//上传
                    if(r){
                        context.put("success", true);
                        context.put("code", 200);
                        context.put("errno",0);
                        JSONObject fileJSON = new JSONObject();
//                        fileJSON.put("prefixPath", prefixPath);
//                        fileJSON.put("folder", folder);
                        fileJSON.put("url", prefixPath+fileName);
                        fileJSON.put("imgaddr", fName);
                        fileJSON.put("imgname", fileName);
                        fileJSON.put("originname", originname);
                        context.put("data",fileJSON);
                        context.put("message","请求成功");
                        writerJson(response, context);
                        Date d2= new Date();
                        log.error("总的上传文件成功=============结束========="+DateUtil.getPlusTime2(d2) +"耗时秒:"+( (d2.getTime()-d1.getTime()) /1000));
                        return;
                    }
                }
            }
        } catch (Exception e) {
            log.error("【上传FTP失败】======================"+e.getMessage());
        }
        context.put("code", 0);
        context.put("message", "上传失败");
        context.put("errno",0);
        writerJson(response, context);
        return;
    }
    public void uploadFileLocal(HttpServletRequest request,  HttpServletResponse response, String rootPath,String dir) throws Exception {
server/services/src/main/java/com/doumee/biz/system/SystemDictDataBiz.java
@@ -43,12 +43,5 @@
    List<SystemDictData> queryListByCode(String dicCode, String label);
    List<SystemDictData> queryDataByCode(String dicCode, String code);
    /**
     * 获取路径前缀
     * @param resourceCode
     * @param targetCode
     * @return
     */
    String getPreFixPath(String resourceCode, String targetCode);
    void updateByDicId(List<SystemDictData> list);
}
server/services/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java
@@ -195,23 +195,6 @@
    }
    @Override
    public String getPreFixPath(String resourceCode, String targetCode) {
        if (StringUtils.isBlank(resourceCode) || StringUtils.isBlank(targetCode)){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"路径参数不完整");
        }
        SystemDict queryDto = new SystemDict();
        queryDto.setCode(Constants.FTP);
        queryDto.setDeleted(Boolean.FALSE);
        SystemDict dictData = systemDictService.findOne(queryDto);
        if (dictData == null) {
            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "数据值不存在");
        }
        List<SystemDictData> list = systemDictDataService.findList(dictData.getId(), Arrays.asList(resourceCode, targetCode));
        String resourcePath = list.stream().filter(s->s.getLabel().equals(resourceCode)).findFirst().map(s->s.getCode()).orElse("");
        String targetPath = list.stream().filter(s -> s.getLabel().equals(targetCode)).findFirst().map(s -> s.getCode()).orElse("");
        return resourcePath+targetPath;
    }
}
server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -18,13 +18,7 @@
    public static final String HWY_OBS_ACCESSKEY ="HWY_OBS_ACCESSKEY" ;
    public static final String HWY_OBS_ENDPOINT ="HWY_OBS_ENDPOINT" ;
    public static final String HWY_OBS_BUCKET ="HWY_OBS_BUCKET" ;
    public static final String FTP ="FTP" ;
    public static final String FTP_HOST ="FTP_HOST" ;
    public static final String FTP_PORT ="FTP_PORT" ;
    public static final String FTP_USERNAME ="FTP_USERNAME" ;
    public static final String FTP_PWD ="FTP_PWD" ;
    public static final String FTP_RESOURCE_PATH ="FTP_RESOURCE_PATH" ;
    public static final String FTP_LOCAL_RESOURCE_PATH ="FTP_LOCAL_RESOURCE_PATH" ;
    public static final String RESOURCE_PATH ="RESOURCE_PATH" ;
    public static final String QYWX_CORPID = "QYWX_CORPID";
    public static final String QYWX_SECRET = "QYWX_SECRET";
    public static final String QYWX_TOKEN = "QYWX_TOKEN";
@@ -61,6 +55,9 @@
    public static final Integer FOUR = 4;
    public static final Integer SIX = 6;
    public static final Integer FIVE = 5;
    public static final String INENTITY_FILES = "INENTITY_FILES";
    public static final String MEMBER_FILES = "MEMBER_FILES";
    public static final String CATEGORY_FILES = "CATEGORY_FILES";
    public static boolean WORKORDER_SHE_EMAIL_SENDING = false;
    public static  boolean DEALING_COMPANY_SYNC = false ;
    public static  boolean DEALING_MEMBER_SYNC = false ;
server/services/src/main/java/com/doumee/dao/business/model/IdentityInfo.java
@@ -11,6 +11,7 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import java.math.BigDecimal;
import java.util.List;
/**
 * 会员身份认证信息表
@@ -120,4 +121,7 @@
    @ApiModelProperty(value = "图片前缀")
    @TableField(exist = false)
    private String prefix;
    @ApiModelProperty(value = "图片集合")
    @TableField(exist = false)
    private List<String> imgList;
}
server/services/src/main/java/com/doumee/dao/business/model/Orders.java
@@ -37,7 +37,6 @@
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createTime;
    @ApiModelProperty(value = "更新人编码", example = "1")
@@ -46,7 +45,6 @@
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name="更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date updateTime;
    @ApiModelProperty(value = "备注")
@@ -63,12 +61,10 @@
    @ApiModelProperty(value = "开始时间 yyyy-MM-dd")
    @ExcelColumn(name="开始时间 yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startDate;
    @ApiModelProperty(value = "结束时间 yyyy-MM-dd")
    @ExcelColumn(name="结束时间 yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endDate;
    @ApiModelProperty(value = "地点信息/用车起点/用餐地点")
@@ -181,7 +177,6 @@
    @ApiModelProperty(value = "接单时间")
    @ExcelColumn(name="接单时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date acceptTime;
    @ApiModelProperty(value = "接单人", example = "1")
@@ -194,12 +189,10 @@
    @ApiModelProperty(value = "开始作业时间")
    @ExcelColumn(name="开始作业时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date workStartTime;
    @ApiModelProperty(value = "完成时间")
    @ExcelColumn(name="完成时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date finishTime;
    @ApiModelProperty(value = "平台提成比例", example = "1")
@@ -224,7 +217,6 @@
    @ApiModelProperty(value = "评价时间")
    @ExcelColumn(name="评价时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date commentTime;
    @ApiModelProperty(value = "评价类型:0=手动评价;1=系统自动评价;", example = "1")
@@ -233,7 +225,6 @@
    @ApiModelProperty(value = "取消时间")
    @ExcelColumn(name="取消时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date cancelTime;
    @ApiModelProperty(value = "是否已修改:0=否;1=是;", example = "1")
server/services/src/main/java/com/doumee/dao/system/model/SystemDictData.java
@@ -27,7 +27,6 @@
    private Integer id;
    @ApiModelProperty(value = "所属字典", example = "1")
    @NotNull(message = "所属字典不能为空", groups = {Constants.OperaType.Create.class, Constants.OperaType.Update.class})
    private Integer dictId;
    @ApiModelProperty(value = "数据值")
server/services/src/main/java/com/doumee/service/business/IdentityInfoService.java
@@ -99,4 +99,6 @@
    IdentityInfo findByMemberType(Integer type,Integer memberId);
    void updateLocation(IdentityInfo identityInfo);
    List<IdentityInfo> findMemberList(IdentityInfo pageWrap);
}
server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java
@@ -1,5 +1,8 @@
package com.doumee.service.business.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.core.constants.Constants;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
@@ -7,17 +10,21 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.IdentityInfoMapper;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.model.IdentityInfo;
import com.doumee.dao.business.model.Member;
import com.doumee.service.business.IdentityInfoService;
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 io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@@ -32,6 +39,10 @@
    @Autowired
    private IdentityInfoMapper identityInfoMapper;
    @Autowired
    private MemberMapper memberMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Override
    public Integer create(IdentityInfo identityInfo) {
@@ -192,6 +203,58 @@
    }
  
    @Override
    public List<IdentityInfo> findMemberList(IdentityInfo identityInfo) {
        if(identityInfo.getMemberId() == null){
            return  new ArrayList<>();
        }
        Member member = memberMapper.selectById(identityInfo.getMemberId());
        if(identityInfo == null || Constants.equalsInteger(member.getDeleted(),Constants.ONE)){
            return  new ArrayList<>();
        }
        List<IdentityInfo> list = new ArrayList<>();
        String path  = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode()
                +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INENTITY_FILES).getCode();
        //类型:0=用工身份;1=货运身份;2=供餐身份;
        if(!Constants.equalsInteger(member.getWorkerIdentity(),Constants.ZERO)){//用工身份
            addMemberModelByType(member.getId(),Constants.ZERO,list,path);
        }
        if(!Constants.equalsInteger(member.getDriverIdentity(),Constants.ZERO)){//货运身份
            addMemberModelByType(member.getId(),Constants.ONE,list,path);
        }
        if(!Constants.equalsInteger(member.getChefIdentity(),Constants.ZERO)){//供餐很粉
            addMemberModelByType(member.getId(),Constants.TWO,list,path);
        }
        return list;
    }
    private void addMemberModelByType(Integer id,Integer type, List<IdentityInfo> list,String path) {
        LambdaQueryWrapper<IdentityInfo> wrapper = new LambdaQueryWrapper<IdentityInfo>()
                .orderByDesc(IdentityInfo::getCreateTime )//取最新一条
                .eq(IdentityInfo::getMemberId,id)
                .eq(IdentityInfo::getType,type)
                .eq(IdentityInfo::getDeleted,Constants.ZERO)
                .last("limit 1");
         IdentityInfo model = identityInfoMapper.selectOne(wrapper);
         if(model !=null){
             if(StringUtils.isNotBlank(model.getImg1())){
                model.setImg1(path+model.getImg1());
             }
             if(StringUtils.isNotBlank(model.getImg2())){
                 model.setImg1(path+model.getImg2());
             }
             if(StringUtils.isNotBlank(model.getImg3())) {
                 model.setImg1(path + model.getImg3());
             }
             if(StringUtils.isNotBlank(model.getImg4())){
                 model.setImg1(path+model.getImg4());
             }
             list.add(model);
         }
    }
    @Override
    public PageData<IdentityInfo> findPage(PageWrap<IdentityInfo> pageWrap) {
        IPage<IdentityInfo> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<IdentityInfo> queryWrapper = new QueryWrapper<>();