package com.java110.api.bmo.user.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.java110.api.bmo.ApiBaseBMO; import com.java110.api.bmo.user.IUserBMO; import com.java110.core.context.DataFlowContext; import com.java110.core.factory.AuthenticationFactory; import com.java110.core.smo.user.IUserInnerServiceSMO; import com.java110.dto.user.UserDto; import com.java110.po.org.OrgStaffRelPo; import com.java110.po.store.StoreUserPo; import com.java110.po.store.StoreUserRelPo; import com.java110.po.user.UserPo; import com.java110.utils.cache.MappingCache; import com.java110.utils.constant.BusinessTypeConstant; import com.java110.utils.constant.CommonConstant; import com.java110.utils.constant.MappingConstant; import com.java110.utils.constant.UserLevelConstant; import com.java110.utils.util.Assert; import com.java110.utils.util.BeanConvertUtil; import com.java110.utils.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * @ClassName UserBMOImpl * @Description TODO * @Author wuxw * @Date 2020/3/9 23:59 * @Version 1.0 * add by wuxw 2020/3/9 **/ @Service("userBMOImpl") public class UserBMOImpl extends ApiBaseBMO implements IUserBMO { @Autowired private IUserInnerServiceSMO userInnerServiceSMOImpl; public void addStaffOrg(JSONObject paramInJson, DataFlowContext dataFlowContext) { JSONObject businessOrgStaffRel = new JSONObject(); businessOrgStaffRel.put("relId", "-1"); businessOrgStaffRel.put("storeId", paramInJson.getString("storeId")); businessOrgStaffRel.put("staffId", paramInJson.getString("userId")); businessOrgStaffRel.put("orgId", paramInJson.getString("orgId")); businessOrgStaffRel.put("relCd", paramInJson.getString("relCd")); OrgStaffRelPo orgStaffRelPo = BeanConvertUtil.covertBean(businessOrgStaffRel, OrgStaffRelPo.class); super.insert(dataFlowContext, orgStaffRelPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_ORG_STAFF_REL); } /** * 添加员工 * * @param paramInJson * @return */ public void addStaff(JSONObject paramInJson, DataFlowContext dataFlowContext) { JSONObject businessStoreUser = new JSONObject(); businessStoreUser.put("storeId", paramInJson.getString("storeId")); businessStoreUser.put("storeUserId", "-1"); businessStoreUser.put("userId", paramInJson.getString("userId")); businessStoreUser.put("relCd", paramInJson.getString("relCd")); StoreUserPo storeUserPo = BeanConvertUtil.covertBean(businessStoreUser, StoreUserPo.class); super.insert(dataFlowContext, storeUserPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_STORE_USER); } /** * 添加用户 * * @param paramObj */ public void addUser(JSONObject paramObj, DataFlowContext dataFlowContext) { //校验json 格式中是否包含 name,email,levelCd,tel Assert.jsonObjectHaveKey(paramObj, "name", "请求参数中未包含name 节点,请确认"); //Assert.jsonObjectHaveKey(paramObj,"email","请求参数中未包含email 节点,请确认"); Assert.jsonObjectHaveKey(paramObj, "tel", "请求参数中未包含tel 节点,请确认"); Assert.jsonObjectHaveKey(paramObj, "orgId", "请求报文格式错误或未包含部门信息"); Assert.jsonObjectHaveKey(paramObj, "address", "请求报文格式错误或未包含地址信息"); Assert.jsonObjectHaveKey(paramObj, "sex", "请求报文格式错误或未包含性别信息"); Assert.jsonObjectHaveKey(paramObj, "relCd", "请求报文格式错误或未包含员工角色"); if (paramObj.containsKey("email") && !StringUtil.isEmpty(paramObj.getString("email"))) { Assert.isEmail(paramObj, "email", "不是有效的邮箱格式"); } UserPo userPo = BeanConvertUtil.covertBean(refreshParamIn(paramObj), UserPo.class); super.insert(dataFlowContext, userPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_USER_INFO); } /** * 注册用户 * * @param paramObj */ public void registerUser(JSONObject paramObj, DataFlowContext dataFlowContext) { //校验json 格式中是否包含 name,email,levelCd,tel Assert.jsonObjectHaveKey(paramObj, "name", "请求参数中未包含name 节点,请确认"); //Assert.jsonObjectHaveKey(paramObj,"email","请求参数中未包含email 节点,请确认"); Assert.jsonObjectHaveKey(paramObj, "tel", "请求参数中未包含tel 节点,请确认"); Assert.jsonObjectHaveKey(paramObj, "password", "请求参数中未包含password 节点,请确认"); if (paramObj.containsKey("email") && !StringUtil.isEmpty(paramObj.getString("email"))) { Assert.isEmail(paramObj, "email", "不是有效的邮箱格式"); } //paramObj.put("userId","-1"); paramObj.put("levelCd", UserLevelConstant.USER_LEVEL_ORDINARY); //设置默认密码 String userPassword = paramObj.getString("password"); userPassword = AuthenticationFactory.passwdMd5(userPassword); paramObj.put("password", userPassword); if (paramObj.containsKey("openId") && !"-1".equals(paramObj.getString("openId"))) { JSONArray userAttr = new JSONArray(); JSONObject userAttrObj = new JSONObject(); userAttrObj.put("attrId", "-1"); userAttrObj.put("specCd", "100201911001"); userAttrObj.put("value", paramObj.getString("openId")); userAttr.add(userAttrObj); paramObj.put("businessUserAttr", userAttr); } UserPo userPo = BeanConvertUtil.covertBean(paramObj, UserPo.class); super.insert(dataFlowContext, userPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_USER_INFO); } /** * 对请求报文处理 * * @param paramObj * @return */ private JSONObject refreshParamIn(JSONObject paramObj) { //paramObj.put("userId","-1"); paramObj.put("levelCd", UserLevelConstant.USER_LEVEL_STAFF); //设置默认密码 String staffDefaultPassword = MappingCache.getValue(MappingConstant.KEY_STAFF_DEFAULT_PASSWORD); Assert.hasLength(staffDefaultPassword, "映射表中未设置员工默认密码,请检查" + MappingConstant.KEY_STAFF_DEFAULT_PASSWORD); staffDefaultPassword = AuthenticationFactory.passwdMd5(staffDefaultPassword); paramObj.put("password", staffDefaultPassword); return paramObj; } public void modifyStaff(JSONObject paramObj, DataFlowContext dataFlowContext) { //校验json 格式中是否包含 name,email,levelCd,tel UserPo userPo = BeanConvertUtil.covertBean(builderStaffInfo(paramObj, dataFlowContext), UserPo.class); super.update(dataFlowContext, userPo, BusinessTypeConstant.BUSINESS_TYPE_MODIFY_USER_INFO); } /** * 构建员工信息 * * @param paramObj * @param dataFlowContext * @return */ private JSONObject builderStaffInfo(JSONObject paramObj, DataFlowContext dataFlowContext) { UserDto userDto = new UserDto(); userDto.setStatusCd("0"); userDto.setUserId(paramObj.getString("userId")); List userDtos = userInnerServiceSMOImpl.getUserHasPwd(userDto); Assert.listOnlyOne(userDtos, "数据错误查询到多条用户信息或单条"); JSONObject userInfo = JSONObject.parseObject(JSONObject.toJSONString(userDtos.get(0))); if (!paramObj.getString("oldPwd").equals(userDtos.get(0).getPassword())) { throw new IllegalArgumentException("原始密码错误"); } userInfo.putAll(paramObj); userInfo.put("password", paramObj.getString("newPwd")); return userInfo; } /** * 删除商户 * * @param paramInJson * @return */ public void deleteStaff(JSONObject paramInJson, DataFlowContext dataFlowContext) { JSONObject businessStoreUser = new JSONObject(); businessStoreUser.put("storeId", paramInJson.getString("storeId")); businessStoreUser.put("userId", paramInJson.getString("userId")); StoreUserPo storeUserPo = BeanConvertUtil.covertBean(businessStoreUser, StoreUserPo.class); super.delete(dataFlowContext, storeUserPo, BusinessTypeConstant.BUSINESS_TYPE_DELETE_STORE_USER); } /** * 删除商户 * * @param paramInJson * @return */ public void deleteUser(JSONObject paramInJson, DataFlowContext dataFlowContext) { //校验json 格式中是否包含 name,email,levelCd,tel JSONObject businessStoreUser = new JSONObject(); businessStoreUser.put("userId", paramInJson.getString("userId")); UserPo userPo = BeanConvertUtil.covertBean(businessStoreUser, UserPo.class); super.delete(dataFlowContext, userPo, BusinessTypeConstant.BUSINESS_TYPE_REMOVE_USER_INFO); } }