package com.qrservice.admin.service.impl; import com.alibaba.fastjson.JSON; import com.qrservice.admin.config.ServiceProperties; import com.qrservice.admin.dao.online.MerchantInfoDao; import com.qrservice.admin.dao.settle.MerchantUserDao; import com.qrservice.admin.exception.CheckException; import com.qrservice.admin.model.bussiness.MerchantInfo; import com.qrservice.admin.model.dto.merchant.MerchantUserDto; import com.qrservice.admin.model.dto.merchant.MerchantUserFdDto; import com.qrservice.admin.model.dto.merchant.MerchantUserUpDto; import com.qrservice.admin.model.manage.MerchantUser; import com.qrservice.admin.model.param.CommonInfo; import com.qrservice.admin.service.CommonService; import com.qrservice.admin.service.MerchantUserService; import com.qrservice.admin.util.CopyUtils; import com.qrservice.admin.util.QueryHelp; import com.qrservice.admin.util.SHA256Util; import org.bson.Document; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.mongodb.core.query.BasicUpdate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.util.Date; /** * @Company: AllPay * @Author: lei.chen * @Date: 2020/8/24 10:03 */ @Service public class MerchantUserServiceImpl implements MerchantUserService { private final ServiceProperties properties; private final MerchantUserDao dao; private final MerchantInfoDao infoDao; private final CommonService service; @Autowired public MerchantUserServiceImpl(ServiceProperties properties,MerchantUserDao dao,MerchantInfoDao infoDao,CommonService service) { this.dao = dao; this.infoDao = infoDao; this.service = service; this.properties = properties; } @Override public String addMerchantUser(MerchantUserDto dto) throws Exception { MerchantUser one = dao.findOne(new Query().addCriteria(Criteria.where("merchantId").is(dto.getMerchantId())).addCriteria( Criteria.where("userName.fullName").is(dto.getUserName().getFullName()) )); if(one != null){ throw new CheckException("The merchant user already exists"); } //查询用户商户的基本信息填充用户信息 MerchantInfo merchant = infoDao.findOne(new Query().addCriteria(Criteria.where("merchantId").is(dto.getMerchantId()))); if(merchant == null ){ throw new CheckException("No Merchant Id"); } MerchantUser merchantUser = new MerchantUser(); CopyUtils.Copy(dto,merchantUser); merchantUser.setUserType(properties.getMerchantUser()); merchantUser.setUserId(dto.getUserName().getFullName()+"@"+dto.getMerchantId()); merchantUser.setPassword(SHA256Util.getSHA256(properties.getPwd())); merchantUser.setUserContact(merchant.getLegalPerson()); merchantUser.setUserName(dto.getUserName()); merchantUser.setUserStatus(properties.getStatusNormal()); merchantUser.setPasswordUpdateDate(new Date()); merchantUser.setUpdateTime(new Date()); merchantUser.setCreateTime(new Date()); dao.insert(merchantUser); return "Merchant user "+dto.getMerchantId()+"/"+merchantUser.getUserName().getFullName()+" added"; } @Override public Page findMerchantUser(Pageable pageable, MerchantUserFdDto dto, HttpServletRequest request) { Query query = QueryHelp.getQuery(dto, new Query()); CommonInfo mid = service.findMid(request); query.addCriteria(Criteria.where("merchantId").in(mid.getListMid())); query.fields().include("userName").include("merchantId").include("userGroup") .include("userStatus").include("createTime").include("updateTime").include("userId"); Page pageInfo = dao.findByPageAndSort(pageable, query); return pageInfo; } @Override public String updateMerchantUser(MerchantUserUpDto dto) { String string = JSON.toJSONString(dto); Query query = new Query().addCriteria(Criteria.where("merchantId").is(dto.getMerchantId())); MerchantUser one = dao.findOne(query); if(one == null){ throw new CheckException("No Merchant Id"); } Document parse = Document.parse(string); Update update = new BasicUpdate(new Document("$set",parse)); if(parse == null || parse.size()==0){ throw new CheckException("Update Error!"); } dao.updateMulti(query,update); update.set("updateTime",new Date()); dao.updateMulti(query,update); return "Merchant user "+one.getMerchantId()+"/"+one.getUserName().getFullName()+" updated"; } }