Browse Source

添加消息通知

wanghui 7 years ago
parent
commit
ce2eba1fc4

+ 2 - 0
src/main/java/com/goafanti/common/constant/AFTConstants.java

@@ -16,6 +16,8 @@ public class AFTConstants {
 	public static final String	SUPERADMIN							= "999999";				// 超级管理员
 
 	public static final String	APPROVAL_DECISION					= "99999";				// 特批决策者
+	
+	public static final String  TECH_ADMIN                          = "99998";				// 技术管理员
 
 	public static final String	AREAADMIN							= "";					// 地区管理员
 

+ 7 - 0
src/main/java/com/goafanti/common/dao/AdminMapper.java

@@ -99,5 +99,12 @@ public interface AdminMapper {
 	 * @return
 	 */
 	List<AdminListBo> selectSubList(@Param("adminId")String adminId);
+	
+	/**
+	 * 查询订单变更信息通知人
+	 * @param orderNo
+	 * @return
+	 */
+	Admin selectAdminByRoleId(@Param("roleId")String roleId);
 
 }

+ 1 - 1
src/main/java/com/goafanti/common/dao/UserMapper.java

@@ -207,5 +207,5 @@ public interface UserMapper {
 	
 	int updateEnteringAudit(@Param("id")String id,@Param("auditStatus")Integer auditStatus,@Param("auditOpinion")String auditOpinion);
 
-	int updateRefusedCustomer(@Param("id")String id,  @Param("nickname")String nickname, @Param("mobile")String mobile, @Param("societyTag")String societyTag);
+	int updateRefusedCustomer(@Param("id")String id,  @Param("nickname")String nickname, @Param("mobile")String mobile, @Param("societyTag")String societyTag);
 }

+ 2 - 0
src/main/java/com/goafanti/common/enums/NoticeStatus.java

@@ -17,6 +17,8 @@ public enum NoticeStatus {
 	ORGANIZATIONDEMAND(9, "团体组织用户需求管理"),
 	PERSONALACHIEVEMENTT(10, "个人用户科技需求管理"),
 	ORGANIZATIONACHIEVEMENT(11, "组织用户科技成果管理"),
+	ORDER_CHANGE_ADD(12,"订单变更信息添加"),
+	ORDER_CHANGE_UDPATE(13,"订单变更信息修改"),
 	OTHER(12, "其他");
 
 	private NoticeStatus(Integer code, String desc) {

+ 4 - 1
src/main/java/com/goafanti/common/mapper/AdminMapper.xml

@@ -599,5 +599,8 @@
 		)
 	and a.id <![CDATA[ <> ]]> #{adminId,jdbcType=VARCHAR}
   </select>
-  
+  
+  <select id="selectAdminByRoleId" parameterType="java.lang.String" resultType="Base_Column_List">
+	select a.id,a.name from  admin a left join user_role b on a.id = b.uid left join role c on b.rid = c.id where c.id = #{roleId,jdbcType=VARCHAR}
+  </select>
 </mapper>

+ 46 - 3
src/main/java/com/goafanti/order/service/impl/OrderServiceImpl.java

@@ -4,6 +4,7 @@ import java.lang.reflect.InvocationTargetException;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -19,7 +20,9 @@ import org.springframework.transaction.annotation.Transactional;
 import com.goafanti.common.bo.Error;
 import com.goafanti.common.constant.AFTConstants;
 import com.goafanti.common.constant.ErrorConstants;
+import com.goafanti.common.dao.AdminMapper;
 import com.goafanti.common.dao.ContractMapper;
+import com.goafanti.common.dao.NoticeMapper;
 import com.goafanti.common.dao.OrganizationManagementMapper;
 import com.goafanti.common.dao.TOrderBillMapper;
 import com.goafanti.common.dao.TOrderChangeMapper;
@@ -28,10 +31,13 @@ import com.goafanti.common.dao.TOrderMapper;
 import com.goafanti.common.dao.TmpTableMapper;
 import com.goafanti.common.dao.UserMapper;
 import com.goafanti.common.enums.DeleteStatus;
+import com.goafanti.common.enums.NoticeReadStatus;
+import com.goafanti.common.enums.NoticeStatus;
 import com.goafanti.common.error.BusinessException;
 import com.goafanti.common.model.Admin;
 import com.goafanti.common.model.Contract;
 import com.goafanti.common.model.ContractTask;
+import com.goafanti.common.model.Notice;
 import com.goafanti.common.model.OrganizationManagement;
 import com.goafanti.common.model.TOrder;
 import com.goafanti.common.model.TOrderBill;
@@ -92,7 +98,10 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 	private TOrderChangeMapper tOrderChangeMapper;
 	@Autowired
 	private TmpTableMapper tmpTableMapper;
-	
+	@Autowired
+	private AdminMapper adminMapper;
+	@Autowired
+	private NoticeMapper noticeMapper;
 	private final BigDecimal DEFAULT_FIRST_PAYMENT = new BigDecimal(0);//默认首付价格
 	private final BigDecimal DEFAULT_COMMODITY_PRICE = new BigDecimal(0);//默认单价
 	private final String DEFAULT_PLATFORM_ID = "0"; //平台默认id
@@ -367,7 +376,7 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 			}else if(boundary == 1){
 				tOrder.setLiquidationStatus(LiquidationState.AGREE_REFUND.getCode()); //需要再退款
 			}else if(boundary == -1){
-				throw new BusinessException(new Error(ErrorConstants.REFUND_BEYOND_SIGN,"退款"));
+				throw new BusinessException(new Error(ErrorConstants.REFUND_BEYOND_SIGN,"退款")); //超过退款金额
 			}
 		}
 	}
@@ -1607,7 +1616,7 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 		setOrderState(OrderAction.CONFIRM_REFUND, new BigDecimal(0), tOrder, confirm);
 		tOrder.setUpdateTime(new Date());
 		if(confirm){ //同意退款生成退款流水
-			BigDecimal transactionAmount = tOrder.getActuallyTotalAmount().subtract(tOrder.getActuallyBrokerageAmount()); 
+			BigDecimal transactionAmount = tOrder.getActuallyTotalAmount().subtract(tOrder.getActuallyBrokerageAmount()).multiply(new BigDecimal(-1)); 
 			addFundRecord(orderNo, "平台方", DEFAULT_PLATFORM_ID,TokenManager.getUserId(), "同意退款系统生成流水",
 					TransactionSubject.REFUND, PayChannel.UNIONPAY,transactionAmount,TransactionMode.OFFLINE, AuditState.WAIT_AUDIT);
 		}
@@ -1704,6 +1713,7 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 		change.setDeleteSign(DeleteStatus.UNDELETE.getCode());
 		tOrderChangeMapper.insert(change);
 		tOrderMapper.updateByPrimaryKeySelective(tOrder);
+		generatorNoticeData(NoticeStatus.ORDER_CHANGE_ADD,changeComment,tOrder);
 		return 1;
 	}
 
@@ -1746,6 +1756,8 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 		if(StringUtils.isNotBlank(changeComment))change.setChangeComment(changeComment);
 		change.setChangeStatus(changeStatus);
 		tOrderChangeMapper.updateByPrimaryKeySelective(change);
+		TOrder tOrder = tOrderMapper.selectByPrimaryKey(change.getOrderNo());
+		generatorNoticeData(NoticeStatus.ORDER_CHANGE_ADD,changeComment,tOrder);
 		return updateOrderSatusByChange(change.getOrderNo());
 	}
 
@@ -1764,4 +1776,35 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 		}
 		return 1;
 	}
+	
+	private void generatorNoticeData(NoticeStatus noticeType,String noticeComment,TOrder tOrder){
+		if(tOrder == null) return;
+		Notice notice = null;
+		List<Notice> noticeList = new ArrayList<>();
+		Calendar now = Calendar.getInstance();
+		now.set(Calendar.MILLISECOND, 0);
+		List<String> targetIds = new ArrayList<String>();
+		if(!tOrder.getSalesmanId().equals("") && !targetIds.contains(tOrder.getSalesmanId()))
+			targetIds.add(tOrder.getSalesmanId());
+		if(!tOrder.getFinanceId().endsWith("") && !targetIds.contains(tOrder.getFinanceId()))
+			targetIds.add(tOrder.getFinanceId());
+		if(!tOrder.getTechnicianId().equals("") && !targetIds.contains(tOrder.getTechnicianId()))
+			targetIds.add(tOrder.getTechnicianId());
+		Admin admin = adminMapper.selectAdminByRoleId(AFTConstants.TECH_ADMIN);
+		if(admin!= null && !targetIds.contains(admin.getId())) targetIds.add(admin.getId());
+		if(targetIds.size()>0){
+			for(String id: targetIds){
+				notice = new Notice();
+				notice.setId(UUID.randomUUID().toString());
+				notice.setCreateTime(now.getTime());
+				notice.setReaded(NoticeReadStatus.UNREAD.getCode());
+				notice.setRid(tOrder.getOrderNo());
+				notice.setNoticeType(noticeType.getCode());
+				notice.setContent(noticeType.getDesc() + ": 订单编号-" + tOrder.getOrderNo() + ",操作人-" + TokenManager.getAdminToken().getName());
+				noticeList.add(notice);
+			}
+			noticeMapper.insertBatch(noticeList);
+		}
+	
+	}
 }